Java安全之JBoss反序列化漏洞分析
Java安全之JBoss反序列化漏洞分析
0x00 前⾔
看到⽹上的Jboss分析⽂章较少,从⽽激发起了兴趣。前段时间⼀直沉迷于⼯具开发这块,所以打算将jboss系列反序列化漏洞进⾏分析并打造成GUI的⼯具集。当然反序列化回显这块也是需要解决的⼀⼤问题之⼀,所以下⾯会出⼀系列⽂章对该漏洞的分析到⼯具的构造进⾏⼀个记录。
vulhub0x01 环境搭建
⾸先拿CVE-2017-12149漏洞为例,进⾏调试分析。
CVE-2017-12149漏洞影响版本: 5.X 及 6.X
漏洞描述
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进⾏任何安全检查的情况下尝试将来⾃客户端的数据流进⾏反序列化,从⽽导致了漏洞。
调试环境搭建
远程调试
版本要求:JBoss-EAP-7.0及其以上版本
在Jboss的bin⽬录下有个standalone.bat⽂件,以⽂本的形式打开此⽂件,在Jboss的bin⽬录下有个standalone.bat⽂件。
set DEBUG_MODE=false
set DEBUG_PORT_VAR=8787
false改成true就可以改成调试模式了,8787是调试模式的端⼝。重启Jboss
⽽5.x、6.x:
jboss-6.1.0.Final/f 中#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"的#即可。
为了⽅便这⾥使⽤
进去/vulhub-master/jboss/CVE-2017-12149修改l ⽂件添加8787端⼝
version: '2'
services:
jboss:
image: vulhub/jboss:as-6.1.0
ports:
- "9990:9990"
- "8080:8080"
- "8787:8787"
jboss-6.1.0.Final/f 中#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"的#
重新启动容器即可
docker restart 808d3fffae0c
此处有坑点,个别漏洞调⽤链查看不了可能是确实代码,需要添加资源到idea中,⽽本次的这个核⼼漏洞组件httpha-invoker.sar,打包成jar包后⽆法进⾏断点,需要扔到jd-gui中进⾏反编译打包后添加到idea资源中。
0x02 漏洞分析
查看调⽤链定位漏洞位置
直接就接受值进⾏反序列化了,但并不是在⼀个位置存在任意数据反序列化
以上是org.jboss.invocation.http.servlet#ReadOnlyAccessFilter类的反序列化位置
⽽org.jboss.invocation.http.servlet#InvokerServlet同样存在任意反序列化点
查看l发现/invoker/JMXInvokerServlet/*,/invoker/readonly,/JMXInvokerServlet/等地⽅都可触发。
关于CVE-2017-7504类似漏洞位置在/jbossmq-httpil/HTTPServerILServlet ,在此不做分析。
0x03 结尾
⽂章略显⽔分,因为JBoss这些漏洞接受过来就直接进⾏反序列化了,⽽且还是接受原⽣的数据并未进⾏加密解密处理。分析起来⽐较简单,但是反序列化回显的构造⼜成了⼀⼤问题,下篇⽂章再对反序列化回显进⾏探究。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。