java反序列化漏洞挖掘

本文详细介绍了Java反序列化漏洞的触发场景,包括HTTP请求、RMI协议等,并阐述了漏洞挖掘的步骤,如确定反序列化输入点、检查Apache Commons Collections库的存在。还提到了ysoserial工具的使用,以及JBOSS等应用的实际测试环境。最后,文章提供了漏洞修补方案,包括更新Apache Commons Collections库、使用SerialKiller等,并给出了针对不同应用的临时和官方修复建议。
摘要由CSDN通过智能技术生成

java反序列化漏洞挖掘

1.漏洞触发场景
在java编写的web应用与web服务器间java通常会发送大量的序列化对象例如以下场景:
  1)HTTP请求中的参数,cookies以及Parameters。
  2)RMI协议,被广泛使用的RMI协议完全基于序列化
  3)JMX 同样用于处理序列化对象
  4)自定义协议 用来接收与发送原始的java对象
2. 漏洞挖掘
  (1)确定反序列化输入点
    首先应找出readObject方法调用,在找到之后进行下一步的注入操作。一般可以通过以下方法进行查找:
     1)源码审计:寻找可以利用的“靶点”,即确定调用反序列化函数readObject的调用地点。
   2)对该应用进行网络行为抓包,寻找序列化数据,如wireshark,tcpdump等
    注: java序列化的数据一般会以标记(ac ed 00 05)开头,base64编码后的特征为rO0AB。
  (2)再考察应用的Class Path中是否包含Apache Commons Collections库
  (3)生成反序列化的payload
  (4)提交我们的payload数据

相关工具

ysoserial是一个用我们刚才的思路生成序列化payload数据的工具。当中针对Apache Commons Collections 3的payload也是基于TransformedMap和InvokerTransformer来构造的,然而在触发时,并没有采用上文介绍的AnnotationInvocationHandler,而是使用了java.lang.reflect.Proxy中的相关代码来实现触发。此处不再做深入分析,有兴趣的读者可以参考ysoserial的源码。

获取方法

去github上下载jar发行版:https://github.com/frohoff/ysoserial/releases
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.2/ysoserial-0.0.2-all.jar

或者自行编译:
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -DskipTests

相关Tool链接

https://github.com/frohoff/ysoserial

https://github.com/CaledoniaProject/jenkins-cli-exploit

https://github.com/foxglovesec/JavaUnserializeExploits

ysoserial
去github上下载jar发行版:https://github.com/frohoff/ysoserial/releases
或者自行编译:
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -DskipTests
没有mvn的话需要先安装:sudo apt-get install maven

实际漏洞环境测试

JBOSS

JBoss是一个管理和运行EJB项目的容器和服务器

Enterprise JavaBean (EJB)规范定义了开发和部署基于事务性、分布式对象应用程序的服务器端软件组件的体系结构。
企业组织可以构建它们自己的组件,或从第三方供应商购买组件。
这些服务器端组件称作 Enterprise Bean,它们是 Enterprise JavaBean 容器中驻留的分布式对象,为分布在网络中的客户机提供远程服务。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值