经过一段时间的琢磨与反思,以及重读了大量之前看不懂的反序列化文章,目前为止算是对java反序列化这块有了一个阶段性的小理解. 目前为止,发送的所有java反序列化的漏洞中.主要需要两个触发条件: 1.反序列化的攻击入口 2.反序列化的pop攻击链 这两个条件缺一不可.网上大量分析gadgets的文章方法,让人误以为有攻击链就可以反序列化.其实这块是有一定的误导性的.在我最初研究反序列化的时候,我觉得攻击链是最重要的.其实不然,反序列化的攻击入口才是至关重要的.因为现阶段的java环境加上java…
前言 关于java反序列化漏洞的原理分析,基本都是在分析使用Apache Commons Collections这个库,造成的反序列化问题.然而,在下载老外的ysoserial工具并仔细看看后,我发现了许多值得学习的知识. 至少能学到如下内容: 不同反序列化payload玩法灵活运用了反射机制和动态代理机制构造POC java反序列化不仅是有Apache Commons Collections这样一种玩法.还有如下payload玩法: CommonsBeanutilsCollectionsLog…
功能: 命令行启动jar包,用户自定义启动RMI端口.默认内置Apache Commons Collections.只需一键启动即可测试java反序列化漏洞. 启动服务: [root@sevck_v3 tmp]# java -jar rmi.jar This rmi port java rmi server start! 如果已经绑定端口: [root@sevck_v3 tmp]# java -jar rmi.jar This rmi port java.rmi.server.ExportExc…
原文:http://blog.chaitin.com/2015-11-11_java_unserialize_rce/ 博主也是JAVA的,也研究安全,所以认为这个漏洞非常严重.长亭科技分析的非常细致. 1 背景 2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSphere.JBoss.Jenkins.OpenNMS这些大名鼎鼎的Java应用,实现远程代码…
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 http://www.tuicool.com/articles/ZvMbIne http://www.freebuf.com/vuls/86566.html http://sec.chinabyte.com/435/13618435.shtml http://www.myhack58.com/Articl…
ref:https://xz.aliyun.com/t/2043 小结: 3.2.2版本之前的Apache-CommonsCollections存在该漏洞(不只该包)1.漏洞触发场景 在java编写的web应用与web服务器间java通常会发送大量的序列化对象例如以下场景: 1)HTTP请求中的参数,cookies以及Parameters. 2)RMI协议,被广泛使用的RMI协议完全基于序列化 4)JMX 同样用于处理序列化对象 5)自定义协议 用来接收与发送原始的java对象 2. 漏洞挖掘…
转http://blog.chaitin.com/ 1 背景 2 Java反序列化漏洞简介 3 利用Apache Commons Collections实现远程代码执行 4 漏洞利用实例 4.1 利用过程概述 4.2 WebLogic 4.3 Jenkins 4.4 Jboss 4.5 WebSphere 4.6 其它 5 漏洞影响 6 修复建议 7 参考资料 1 背景 2015 年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如…
前段时间学校学习J2EE,用到了jboss,顺便看了下jboss的反序列化,再浅谈下反序列化漏洞. Java序列化,简而言之就是把java对象转化为字节序列的过程.而反序列话则是再把字节序列恢复为java对象的过程,然而就在这一转一变得过程中,程序员的过滤不严格,就可以导致攻击者恶意构造的代码的实现. 举个简单的例子,jboss的反序列化漏洞出现在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\…
java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized共有20条记录,其中10条与java有关.这些出现反序列化漏洞的框架和组件包括的大名鼎鼎的spring,其中还有许多Apache开源项目中的基础组件.例如Apache Commons Collections. 这些基础组件大量被其他框架或组件引用,一旦出现漏洞就会引起大面积的网络安全事故,后果非常严…
前言: 最近在审核漏洞的时候,发现尽管Apache shiro这个反序列化漏洞爆出来好久了,但是由于漏洞特征不明显,并且shiro这个组件之前很少听说,导致大厂很多服务还存在shiro反序列化的漏洞,这里对漏洞进行简单分析与复现. 一.漏洞前析 0x01 什么是Apache Shiro? Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程…
前言 学习本系列文章需要的Java基础: 了解Java基础语法及结构(菜鸟教程) 了解Java面向对象编程思想(快速理解请上知乎读故事,深入钻研建议买本<疯狂Java讲义>另外有一个刘意老师的教学视频也可以了解一下,其中关于面向对象思想的介绍比较详细.链接:https://pan.baidu.com/s/1kUGb3D1#list/path=%2F&parentPath=%2FJava%E7%B1%BB 密码:kk0x) 基本的Eclipse使用(自行百度) 其实只要大学上过Java课…
本文假设你对Java基本数据结构.Java反序列化.高级特性(反射.动态代理)等有一定的了解. 背景 YsoSerial是一款反序列化利用的便捷工具,可以很方便的生成基于多种环境的反序列化EXP.java -jar ysoserial.jar 可以直接查看payload适用环境及其适用版本. 关于此工具的背景,我引用P神的<Java安全漫游>文章对其的描述: 2015年Gabriel Lawrence (@gebl)和Chris Frohoffff (@frohoffff)在AppSecCal…
本文中xray高级版shiro payload来源于雷石安全实验室公众号发布的shiroExploit.jar 感谢雷石安全实验室,雷石安全实验室牛逼 本文主要描述如何从shiro的payload中提取有效payload.该方法适合从各种java反序列化漏洞中提取payload 0x01 前言 某日小伙伴发来雷石安全实验室的shiro利用工具,据称payload提取自xray.利用如下 0x02 反编译雷石利用工具 首先拖入idea中反编译,查看如何利用payload.代码如下 t是遍历数组的下…
首发于freebuff. WebGoat-Insecure Deserialization Insecure Deserialization 01 概念 本课程描述了什么是序列化,以及如何操纵它来执行不是开发人员最初意图的任务. 目标 1.用户应该对Java编程语言有基本的了解 2.用户将能够检测不安全的反序列化漏洞 3.用户将能够利用不安全的反序列化漏洞 反序列化的利用在其他编程语言(如PHP或Python)中略有不同,但这里学到的关键概念也适用于所有这些语言 Insecure Deseria…
Java反序列化漏洞Apache CommonsCollections分析 cc链,既为Commons-Collections利用链.此篇文章为cc链的第一条链CC1.而CC1目前用的比较多的有两条链,LazyMap和TransformedMap.在ysoserial工具中,利用的是LazyMap链,而我们此篇分析的则是TransformedMap链. 1.本文所需前置知识 java反序列化基础 java反射基础 文章参考:https://github.com/Maskhe/javasec/bl…
背景条件:java的框架,java的应用程序,使用序列化,反序列化操作非常多.在漏洞挖掘中,代码审计中,安全研究中,反序列化漏洞是个重点项,不可忽视.尤其是java应用程序的rce,10个里面有7个是因为反序列化导致的rce漏洞. 关于危害:漏洞挖掘中,一旦挖到反序列化漏洞,一般造成的风险极大.这里不对危害做过多描述. 花了几天时间,二次研究了下反序列化漏洞,发现反序列化漏洞不仅在白盒中使用广泛,在黑盒中,也有应用场景,对应的诞生了一些黑盒fuzz的技巧. 经过大量的阅读文献和调研, 我发现有些…
  Java反序列化漏洞从爆出到现在快2个月了,已有白帽子实现了jenkins,weblogic,jboss等的代码执行利用工具.本文对于Java反序列化的漏洞简述后,并对于Java反序列化的Poc进行详细解读.   文章目录 Java反序列化漏洞简介 Java反序列化Poc详解 基于报错的反序列化transformer链 关于RMI利用的相关内容 漏洞影响分析 资料引用 Java反序列化漏洞简介 Java序列化就是把对象转换成字节流,便于保存在内存.文件.数据库中,Java中的ObjectOu…
本文首发自https://www.secpulse.com/archives/95012.html,转载请注明出处. 前言 什么是序列化和反序列化 Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信息和存储在对象中数据的类型.反序列化就是通过序列化后的字段还原成这个对象本身.但标识不被序列化的字段是不会被还原的. 序列化有什么用 1)网站相应的session对象存储在硬盘上,那么保存在session中的内容就必须实现相…
本文首发于“合天智汇”公众号 作者:Fortheone 看了好久的文章才开始分析调试java的cc链,这个链算是java反序列化漏洞里的基础了.分析调试的shiro也是直接使用了cc链.首先先了解一些java的反射机制. 一.什么是反射: 反射是Java的特征之一,是一种间接操作目标对象的机制,核心是JVM在运行的时候才动态加载类,并且对于任意一个类,都能够知道这个类的所有属性和方法,调用方法/访问属性,不需要提前在编译期知道运行的对象是谁,他允许运行中的Java程序获取类的信息,并且可以操作类…
目录 Weblogic反序列化漏洞 Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271) Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628) Weblogic反序列化漏洞(CVE-2019-2725) JBOSS反序列化漏洞 JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504) JBoss 5.x/6.x 反序列化漏洞复现(CVE-2…
这是CC链分析的第二篇文章,我想按着common-collections的版本顺序来介绍,所以顺序为 cc1.3.5.6.7(common-collections 3.1),cc2.4(common-collections4). 打开YsoSerial payloads CommonsCollections3源码: public Object getObject(final String command) throws Exception { Object templatesImpl = Gad…
前言 YsoSerial Common-Collection3.2.1 反序列化利用链终于来到最后一个,回顾一下: 以InvokerTranformer为基础通过动态代理触发AnnotationInvocationHandler里面的Invoker方法调用LazyMap get方式的CC1 以TemplatesImpl为基础,通过TrAXFilter.InstantiateTransformer组合绑定LazyMap动态代理触发AnnotationInvocationHandler#Invoke…
1:什么是Annotation?Annotation,即“@xxx”(如@Before,@After,@Test(timeout=xxx),@ignore),这个单词一般是翻译成元数据,是JAVA的一个新特性. 主流的单元测试工具之-JAVA新特性-Annotation 2:元数据的简单介绍: @Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次. @After:使用了该元数据的方法在每个测试方法执行之后要执行一次. 注意:@Before和@After标示的方法只能各有一个.这…
Java 反序列化攻击漏洞由 FoxGlove 的最近的一篇博文爆出,该漏洞可以被黑客利用向服务器上传恶意脚本,或者远程执行命令. 由于目前发现该漏洞存在于 Apache commons-collections, Apache xalan 和 Groovy 包中,也就意味着使用了这些包的服务器(目前发现有WebSphere, WebLogic,JBoss),第三方框架(Spring,Groovy),第三方应用(Jenkins),以及依赖于这些服务器,框架或者直接/间接引用这些包的应用都会受到威胁…
10.3.6版本的weblogic需要补丁到10.3.6.0.171017(2017年10月份的补丁,Java 反序列化漏洞升级),oracle官方建议至少打上2017年10月份补丁. 一.查看版本 1.用下面命令重配环境变量D:\Oracle\Middleware\wlserver_10.3\server\binsetWLSEnv.cmd 1.1.查看weblogic version D:\Oracle\Middleware\utils\bsu>java weblogic.version We…
揭开java method的一个秘密:巨型函数 相信,很多人都不知道Java的Method的上限为64K.本文将超过这个上限的函数叫做巨型函数. 巨型函数的问题 1.如果代码超过了这个限制,Java编译器就报"Code too large to complier"的错误. 2.代码并没有超过64K的限制,但是在运行时由于其他工具或者library使得对应的代码超过了64K的限制,那么Java会给我们一个java.lang.VerifyError的错误. 巨型函数是怎么来的 如下一些仅仅…
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和员工编号查看员工信息,增添新员工,删除离职员工,修改员工信息等功能,并且根据不同的操作准确实现对数据库的访问和相应业务逻辑的实现. 直接徒手写一个管理系统肯定是不现实的,就算写出来了,也有很大的改进空间,索性就去读书馆查了一下,使用JAVA+Mysql+Navicat+NetBeans的综合项目书.…
一.说明 以前去面试被问反序列化的原理只是笼统地答在参数中注入一些代码当其反序列化时被执行,其实“一些代码”是什么代码“反序列化”时为什么就会被执行并不懂:反来在运营商做乙方经常会因为java反反序列化漏洞要升级commons.collections或给中间件打补丁,前面说的两个问题还是不懂:今天又研究了番,也还不是很懂只是能弹计算器暂且先记一下. 二.序列化和反序列化 序列化和反序列化应该是在学<java网络编程>的时候就写过了,所谓序列化就是把对象从内存写到磁盘文件或数据库,反序列化就是从…
https://blog.csdn.net/echoshinian100/article/details/77977823 欲登高而望远,勿筑台于流沙 RSS订阅 原 使用JAVA实现的一个简单IOC注入实例 2017年09月14日 11:12:38 阅读数:684      控制反转IOC( Inversion of Control )也被称为依赖注入,简单的说,就是通过接口来实现两个类之间的弱引用,由一个第三方容器来专门管理这种依赖,负责实例化并注入接口的实现.       由于一般都是通过…
这里需要使用的环境 web3j,nodejs 安装编译sol工具 $ npm install -g solc 保存为hello.sol文件到本地 pragma solidity 0.4.19; contract hello { function main(uint a) constant returns (uint b) { uint result = a * 8; return result; } } 编译sol文件 $ solcjs <sol文件目录> --optimize --bin -…