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

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

漏洞简介

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/

目录
打赏
0
0
0
0
0
分享
相关文章
Apache Struts FileUploadInterceptor 目录遍历与文件上传漏洞(CVE-2024-53677)
Apache Struts FileUploadInterceptor 目录遍历与文件上传漏洞(CVE-2024-53677)
Apache Tomcat 条件竞争文件上传漏洞(CVE-2024-50379)
Apache Tomcat 条件竞争文件上传漏洞(CVE-2024-50379)
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
128 5
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
97 1
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
81 0
Apache Kafka安全加固指南:保护你的消息传递系统
【10月更文挑战第24天】在现代企业环境中,数据的安全性和隐私保护至关重要。Apache Kafka作为一款广泛使用的分布式流处理平台,其安全性直接影响着业务的稳定性和用户数据的安全。作为一名资深的Kafka使用者,我深知加强Kafka安全性的重要性。本文将从个人角度出发,分享我在实践中积累的经验,帮助读者了解如何有效地保护Kafka消息传递系统的安全性。
214 7
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
160 5
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
158 4
您有一份 Apache Flink 社区年度报告请查收~
您有一份 Apache Flink 社区年度报告请查收~

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等