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默认配置修添加如下配置