漏洞简介
Apache Kafka是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。Kafka Connect是一种用于在kafka和其他系统之间可扩展、可靠的流式传输数据的工具。攻击者可以利用基于SASLJAAS 配置和SASL 协议的任意Kafka客户端,对Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行JNDI 注入来实现远程代码执行。
影响版本
2.4.0<=Apache kafka<=3.3.2
修复方案
更新Apache Kafka至官方最新版本
环境搭建
通过https://github.com/vulhub/vulhub搭建
漏洞复现
exp可参考:
https://github.com/projectdiscovery/nuclei-templates/blob/5d90e8275084b0ae9166ec38cacd22e5a5a94fb8/http/vulnerabilities/apache/apache-druid-kafka-connect-rce.yaml
发起攻击请求:
构造payload ,执行新建/tmp/test.txt文件
验证漏洞存在,文件新建成功
开启RASP后发起攻击:
在业务优先模式下,RASP会出现JNDI注入的告警,拦截最终的命令执行
堆栈信息为
在防护模式下将直接在JNDI注入处被拦截
堆栈信息为
漏洞分析
开始
org.apache.kafka.clients.producer.KafkaProducer#KafkaProducer(java.util.Properties)