【高危】 Apache Kafka 远程代码执行漏洞复现及攻击拦截 (CVE-2023-25194)

简介: 漏洞分析,点击详阅

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

漏洞简介

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文件

image.png

验证漏洞存在,文件新建成功

image.png

开启RASP后发起攻击:

在业务优先模式下,RASP会出现JNDI注入的告警,拦截最终的命令执行

image.png

堆栈信息为

image.png

在防护模式下将直接在JNDI注入处被拦截
image.png

堆栈信息为
image.png

漏洞分析

开始

org.apache.kafka.clients.producer.KafkaProducer#KafkaProducer(java.util.Properties)

image.png

跟进到

org.apache.kafka.clients.producer.KafkaProducer#KafkaProducer(java.util.Properties

image.png

调用

org.apache.kafka.common.utils.Utils#propsToMap
对传入对象进行处理
image.png

将map型的对象传入

org.apache.kafka.clients.producer.KafkaProducer#KafkaProducer(java.util.Map

image.png

之后调用

org.apache.kafka.clients.producer.ProducerConfig#appendSerializerToConfig

image.png

将返回的newConfigs传入

org.apache.kafka.clients.producer.ProducerConfig#ProducerConfig(java.util.Map)

image.png

将配置参数传入

org.apache.kafka.clients.producer.KafkaProducer#KafkaProducer(org.apache.kafka.clients.producer.ProducerConfig,org.apache.kafka.common.serialization.Serializer

image.png

赋值后调用

org.apache.kafka.clients.producer.KafkaProducer#newSender

image.png

image.png

调用到

org.apache.kafka.clients.ClientUtils#createChannelBuilder

image.png

赋值后调用

org.apache.kafka.common.network.ChannelBuilders#clientChannelBuilder

image.png

这里对值做了一个判断后调用

org.apache.kafka.common.network.ChannelBuilders#create

image.png

image.png

image.png

Create方法中得到map型的configs后进行switch,得到SaslChannelBuilder类型channelBuilder的对象,switch结束后调用了

org.apache.kafka.common.network.SaslChannelBuilder#configure

image.png

image.png

org.apache.kafka.common.network.SaslChannelBuilder#configure

进入循环后到

org.apache.kafka.common.security.authenticator.LoginManager#acquireLoginManager

image.png

image.png

image.png

判断值后到

org.apache.kafka.common.security.authenticator.LoginManager#LoginManager

image.png

image.png

跟进到

org.apache.kafka.common.security.authenticator.AbstractLogin#login

image.png

调用

javax.security.auth.login.LoginContext#login

image.png

调用

javax.security.auth.login.LoginContext#invokePriv

image.png

调用

javax.security.auth.login.LoginContext#invoke

进行逻辑判断后调用initialize方法

image.png

image.png

Initialize中得到userProvider

image.png

user.provider.url通过jndi提供

image.png

调用

com.sun.security.auth.module.JndiLoginModule#login

image.png

调用

com.sun.security.auth.module.JndiLoginModule#attemptAuthentication

image.png

通过

javax.naming.InitialContext#lookup(java.lang.String)

执行userProvider的值

image.png

8d8be12730b12d4f96db8d4451a691b0.png

由于RASP对javax.naming.InitialContext.lookup调用做了防护策略检测,所以会在此处拦截。

Reference


关于云鲨RASP

悬镜云鲨RASP助力企业构建应用安全保护体系、搭建应用安全研运闭环,将积极防御能力注入业务应用中,实现应用安全自免疫。详情欢迎访问云鲨RASP官网https://rasp.xmirror.cn/

目录
相关文章
|
5天前
|
消息中间件 存储 大数据
Apache Kafka: 强大消息队列系统的介绍与使用
Apache Kafka: 强大消息队列系统的介绍与使用
|
5天前
|
消息中间件 Kafka Linux
Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
73 0
|
2天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之遇到报错:Apache Kafka Connect错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
13 5
|
5天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
5天前
|
消息中间件 Java Kafka
Apache Kafka-初体验Kafka(04)-Java客户端操作Kafka
Apache Kafka-初体验Kafka(04)-Java客户端操作Kafka
33 0
|
5天前
|
消息中间件 Java Kafka
Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
66 0
|
5天前
|
消息中间件 存储 分布式计算
Apache Kafka-初体验Kafka(01)-入门整体认识kafka
Apache Kafka-初体验Kafka(01)-入门整体认识kafka
44 0
|
5天前
|
消息中间件 安全 Kafka
2024年了,如何更好的搭建Kafka集群?
我们基于Kraft模式和Docker Compose同时采用最新版Kafka v3.6.1来搭建集群。
517 2
2024年了,如何更好的搭建Kafka集群?
|
5天前
|
消息中间件 存储 数据可视化
kafka高可用集群搭建
kafka高可用集群搭建
49 0
|
7月前
|
消息中间件 存储 Kubernetes
Helm方式部署 zookeeper+kafka 集群 ——2023.05
Helm方式部署 zookeeper+kafka 集群 ——2023.05
281 0

热门文章

最新文章

推荐镜像

更多
http://www.vxiaotou.com