漏洞分析 | 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. 靶场环境搭建

等项目下载好依赖,选择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默认配置修添加如下配置