威胁情报与安全事件
漏洞分析 | Apache ActiveMQ Jolokia 远程代码执行漏洞(CVE-2022-41678)

11月28日,Apache发布了Apache ActiveMQ Jolokia 远程代码执行漏洞(CVE-2022-41678)通告。一旦用户在 Jolokia 上通过身份验证,他就有可能触发任意代码执行。
▌关于Apache ActiveMQ
Apache ActiveMQ 是美国阿帕奇(Apache)基金会的一套开源的消息中间件,它实现了 Java Message Service (JMS) 规范。作为一个消息中间件,它充当了应用程序之间的通信桥梁,允许不同的应用程序在分布式环境中进行可靠的异步通信。
通过默认8161端口登陆认证后,攻击者可通过发送HTTP请求,修改配置文件后写入恶意文件,进而完全控制主机,建议受影响的用户做好自查及防护。
▌影响范围
Apache ActiveMQ before 5.16.6
Apache ActiveMQ 5.17.0 before 5.17.4
▌漏洞复现
1. 靶场环境搭建
下载开源Apache ActiveMQ 5.17.3环境:
使用Tomcat 进行部署。

等项目下载好依赖,选择jdk11及以上版本,然后按照项目正常部署执行。

启动完成进入8161端口,出现如上页面则部署成功。
也可使用docker-compose快速部署

2. 漏洞分析
分析源码在进行对这个路径/api/jolokia/list发起请求时,会获取到当前系统中存在的一些配置信息,方法为setPredefinedConfiguration
请求中需要带上origin请求头,否则会请求失败


并在此处可以拿到默认的配置,默认的设置格式

将默认的代码进行修改

利用post将上面的xml进行发送

再利用GET将UA写入到日志中

最后访问写入的文件admin/shell.jsp

在日志中看到命令被执行,并输出到日志中

▌代码执行流程
调用流程:
主要问题出在FlightRecorder这个Mbean,功能是记录内存,gc,调用栈等,漏洞用到的方法主要是以下几个:
newRecording
setConfiguration
startRecording
stopRecording
copyTo
漏洞思路是通过setConfiguration修改配置,把一些键名改成jsp代码,记录的数据就会包含该jsp代码,录制完成后,通过copyTo导出到web目录即可。
▌塞讯验证规则
12月12日,针对该漏洞的攻击模拟已经加入到塞讯安全度量验证平台中,您可以在塞讯安全度量验证平台中搜索关键词“ActiveMQ”或“CVE-2022-416784”获取相关攻击模拟验证动作,从而验证您的安全防御体系是否能够有效应对该漏洞,平台以业界独有方式确保您的验证过程安全无害。

▌漏洞修复
将assembly/src/release/conf/jolokia-access.xml默认配置修添加如下配置




