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

上集回顾

CVE-2023-33246 RocketMQ RCE漏洞

影响版本

Apache RocketMQ NameServer 5.0.0 ~ 5.1.1
Apache RocketMQ NameServer 4.0.0 ~ 4.9.6

参考

https://xz.aliyun.com/t/12691

环境搭建

拉取镜像

docker pull apache/rocketmq:4.9.6
docker pull apacherocketmq/rocketmq-console:2.0.0

在这里插入图片描述

启动namesrv

docker run -d -p 9876:9876 -v /data/namesrv/logs:/root/logs\
 -v /data/namesrv/store:/root/store --name rmqnamesrv\
 -e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq:4.9.6 sh mqnamesrv

在这里插入图片描述

创建目录并配置broker文件

mkdir -p /mydata/rocketmq/conf/
vi /mydata/rocketmq/conf/broker.conf

粘贴以下内容

brokerClusterName = DefaultCluster 
brokerName = broker-a 
brokerId = 0 
deleteWhen = 04 
fileReservedTime = 48 
brokerRole = ASYNC_MASTER 
flushDiskType = SYNC_FLUSH
brokerIP1 = X.X.X.X    #主机IP

在这里插入图片描述

启动broker和console

docker run -d -p 10911:10911 -p 10909:10909 -v /data/broker/logs:/root/logs\
 -v /data/broker/store:/root/store\
 -v /mydata/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf\
 --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876"\
 -e "MAX_POSSIBLE_HEAP=200000000" apache/rocketmq:4.9.6 sh mqbroker\
 -c /opt/rocketmq/conf/broker.conf
docker run -d --name rmqconsole -p 8899:8080 --link rmqnamesrv:namesrv\
 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.88.80.135:9876\
 -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
 -t apacherocketmq/rocketmq-console:2.0.0

访问页面

在这里插入图片描述

漏洞复现

EXP地址

https://github.com/coffeehb/Some-PoC-oR-ExP/blob/7296d25083dbef63f61f25c5a09977abb091f615/RocketMQ/CVE-2023-37582.py

使用方式

python3脚本执行

使用效果

在这里插入图片描述
在这里插入图片描述
我感觉就是一个任意文件写入,毕竟利用需要受害者去执行,所以CVE漏洞报告原文中也用的是"possible when using update"这种含糊不清的字眼。

漏洞原理

漏洞补丁为:
在这里插入图片描述

与CVE-2023-33246的修复相比,增加了configStorePath黑名单关键字。

从CVE-2023-33246中的update()起手:
在这里插入图片描述
persist()中使用string2File造成文件写入,第二个参数是filename:
在这里插入图片描述
getStorePath()中,返回值realStorePath由实例化的Field的path填充,而这个filed可以根据发送的body字段可控:
在这里插入图片描述

修复方式

升级到安全版本
Apache RocketMQ NameServer 5.1.2
Apache RocketMQ NameServer 4.9.7

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bugku- misc-插画-WP

下载得到一个zip,用WinRAR打开时发现有注释 注释: RnJlZV9GaWxlX0NhbW91ZmxhZ2UsIOmimOebruWlveWDjaYraMuumHjeimgeeahOagtWtkC4u 明显是base64,解码得到:Free_File_Camouflage, 题目好像是挺重要的样子… 百度发现这是一款隐写…

微电网优化(Matlab复现)— 微电网两阶段鲁棒优化经济调度方法_刘一欣

论文链接:微电网两阶段鲁棒优化经济调度方法 - 中国知网 代码链接:https://m.tb.cn/h.5Mg7fCo?tkhnpmWgZiv2R 复现效果: 运行环境:Matlab 2020bCplexyalmip 1 微电网结构 图 1 所示为典型的微电网结构,由可控分布式…

uniapp实现豆瓣电影微信小程序(附源码)

演示 运行 基于本地代理1 npm run dev:proxy1基于本地代理2 npm run dev:proxy2基于nginx 代理 npm run dev:nginx目录结构 |__ douban # 本地代理|__ app.js # 方式 1|__ proxy.js …

基于vue-cli快速发布vue npm 包

一、编写组件 1. 初始化项目并运行 vue create vue-digital-countnpm run serve2. 组件封装 新建package文件夹 ​ 因为我们可能会封装多个组件,所以在src下面新建一个package文件夹用来存放所有需要上传的组件。 ​ 当然,如果只有一个组件&#xff…

SQL面试题挑战01:打折日期交叉问题

目录 问题:SQL解答:第一种方式:第二种方式: 问题: 如下为某平台的商品促销数据,字段含义分别为品牌名称、打折开始日期、打折结束日期,现在要计算每个品牌的打折销售天数(注意其中的…

【yolov8系列】 yolov8 目标检测的模型剪枝

前言 最近在实现yolov8的剪枝,所以有找相关的工作作为参考,用以完成该项工作。 先细读了 Torch-Pruning,个人简单记录了下 【剪枝】torch-pruning的基本使用,有框架完成的对网络所有结构都自适应剪枝是最佳的,但这里没…

Redis 系统性总结看这一篇就够了

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 之前在公司一直忙于使用,很少做系统性的总结&a…

工具系列:PyCaret介绍_单变量时间序列代码示例

👋 工具系列:PyCaret介绍_单变量时间序列代码示例 PyCaret是一个开源的、低代码的Python机器学习库,可以自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,可以大大加快实验周期,提高工作效率。 与其…

用C#也能做机器学习?

前言✨ 说到机器学习,大家可能都不陌生,但是用C#来做机器学习,可能很多人还第一次听说。其实在C#中基于ML.NET也是可以做机器学习的,这种方式比较适合.NET程序员在项目中集成机器学习模型,不太适合专门学习机器学习&a…

从Gitee克隆项目、启动方法

从gitee克隆VUE项目到本地后,不能直接运行,需要进行npm install安装node_modules文件夹里面的内容,因为在git上传的时候,一般都会过滤到node_modules中的依赖文件。 安装依赖以后,启动通过npm run serve启动项目出错。…

迪文屏开发保姆级教程——页面键盘

迪文屏页面键盘保姆级教程。 本篇文章主要介绍了在DGBUS平台上使用页面键盘的步骤。 迪文屏官方开发指南PDF:(不方便下载的私聊我发给你) https://download.csdn.net/download/qq_21370051/88647174?spm1001.2014.3001.5503https://downloa…

一篇文章带你搞定ARCHPR的下载和使用

除了bp这款爆破神器之外,另外还有一款ARCHPR的字典爆破神器,好处是很方便,而且爆破速度贼快 链接:https://pan.baidu.com/s/1-Ewx2JpZ-o5PunlfkRupYg 提取码:sg51 这里直接给大家安排了,自取就好 攻击的…

常用的电源芯片有哪些?怎么分类

科技的发展也带动了电源的发展,因此需要更多的电源管理芯片。说到电源管理芯片,作为工程师最熟悉的芯片之一。所谓电源管理芯片,就是负责电子设备系统中电能的转换、分配、检测等电能管理的芯片。主要负责识别CPU电源范围,产生相应…

【疑问】学前端是不是已经找不到工作了?深度回复“前端已死论”。

随着人工智能和低代码的崛起,“前端已死”的声音逐渐兴起。前端已死?尊嘟假嘟?快来发表你的看法吧! 文章目录 一、为什么会出现“前端已死”的言论技术发展框架和工具的泛滥市场饱和全栈开发的兴起 二、你如何看待“前端已死”技术…

1.CentOS7网络配置

CentOS7网络配置 查看网络配置信息 ip addr 或者 ifconfig 修改网卡配置信息 vim /etc/sysconfig/network-scripts/ifcfg-ens192 设备类型:TYPEEthernet地址分配模式:BOOTPROTOstatic网卡名称:NAMEens192是否启动:ONBOOTye…

【halcon深度学习之那些封装好的库函数】create_dl_preprocess_param_from_model

函数简介 create_dl_preprocess_param_from_model 是一个用于创建深度学习模型预处理参数的程序。以下是该程序的详细介绍: 参数: DLModelHandle (输入): 用于预处理的深度学习模型的句柄。 NormalizationType (输入): 预处理时的归一化类型参数。可能的取值包括…

手机怎么设置每年公历或农历生日提醒?生日提醒设置小妙招

生日是一个人在一年中比较特殊的日子之一,人们通常希望能够在这一天得到亲朋好友的祝福和庆祝。然而,随着人们生活节奏的加快,很多人表示自己很容易忘记他人的生日,导致不能够及时送出祝福和礼物。如果经常忘记亲朋好友的生日&…

安防视频融合云平台/智慧监控平台EasyCVR如何添加验证码调用接口?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Seata1.4.2分布式事务搭建部署【Spring cloud Alibaba】

包下载 https://github.com/apache/incubator-seata/releases下载并上传到服务器 //解压 tar -zxvf seata-server-1.4.2.tar.gz创建Seata的数据库及表,地址:https://github.com/seata/seata/tree/develop/script/server 根据数据类型复制相应的sql&…

工具系列:PyCaret介绍_多分类代码示例

👋 工具系列:PyCaret介绍_多分类代码示例 PyCaret 介绍 PyCaret是一个开源的、低代码的Python机器学习库,可以自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,可以大大加快实验周期并提高生产效率。 与其他开…