一文学会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配置。
➡️

继续阅读