一文学会RocketMQ远程命令执行漏洞(CVE-2023-33246)
💡
原文中文,约4600字,阅读约需11分钟。
📝
内容提要
RocketMQ是一款分布式消息中间件,具有低延迟、高并发、高可用和高可靠性。在环境搭建过程中,启动了NameServer、Broker和console,并利用CVE-2023-33246漏洞进行攻击。漏洞分析发现,FilterServerManager和FilterServerUtil两个文件被删除,调用链为FilterServerManager.start() --> FilterServerManager.createFilterServer() --> FilterServerUtil.callShell(cmd, log)。构造payload时,利用DefaultMQAdminExt类的updateBrokerConfig方法更新Broker的配置,通过设置rocketmqHome配置和filterServerNums配置来拼接任意命令。
🎯
关键要点
- RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。
- Broker节点启动后会在NameServer节点进行注册,DefaultMQAdminExt类可以获取和修改配置信息。
- FilterServerManager类用于管理过滤服务器,负责处理消息过滤规则的注册、更新和删除。
- 环境搭建包括拉取Docker镜像、启动NameServer、Broker和console。
- 利用CVE-2023-33246漏洞进行攻击,构造payload时利用DefaultMQAdminExt类的updateBrokerConfig方法更新Broker配置。
- 漏洞分析显示FilterServerManager和FilterServerUtil文件被删除,存在RCE风险。
- 通过控制配置中的RocketmqHome,可以拼接任意命令并执行。
- 构造payload的步骤包括创建Properties对象、设置rocketmqHome和filterServerNums配置、更新Broker配置。
➡️