Grafana 目录穿越漏洞实战
漏洞基本信息
| 项目 | 内容 |
|---|---|
| 漏洞名称 | Grafana 路径规范化缺陷 (目录穿越/任意文件读取) |
| CVE 编号 | CVE-2021-43798 |
| 危险等级 | Critical |
| 受影响版本 | v8.0.0-beta1 至 v8.3.0 |
| 测试环境 | Kali Linux (Vulhub / Docker) |
| 靶场目录 | ~/Desktop/vulhub/grafana/CVE-2021-43798 |
漏洞成因分析
Grafana 在处理插件(Plugins)静态资源请求的 URL 时,由于对文件路径的限制不严格,导致了该漏洞的产生。
- 逻辑缺陷:程序未能正确过滤或规范化路径中的
../字符。 - 未授权访问:由于
/public/plugins/接口用于加载插件静态资源,默认无需登录即可访问,这使得攻击者可以在未授权的情况下实施攻击。 - 常见影响:访问到本不该被读取的服务器本地文件,如
/etc/passwd、配置文件、密钥等。
渗透测试过程 (PoC)
免责声明: 本实验仅用于安全教学与授权渗透测试,严禁用于任何非法用途。
1. 漏洞验证 (PoC)
在 Kali 中使用 curl 命令配合 --path-as-is 参数(防止路径被本地解析简化),通过默认插件 alertlist 尝试读取系统敏感文件。
1 | # 读取系统用户信息 |
执行结果:成功获取系统用户信息,证实存在 root、bin 以及 grafana 用户。
2.敏感信息窃取
通过该漏洞,进一步读取了 Grafana 的核心配置文件 grafana.ini。
攻击指令:
1 | curl --path-as-is http://127.0.0.1:3000/public/plugins/alertlist/../../../../../../../../etc/grafana/grafana.ini |
获取的关键数据:
- Secret Key:
SW2YcwTIb9zpOOhoPsMm(用于加密数据源凭证) - 数据存储路径:
/var/lib/grafana
3.数据库脱库与凭证获取
成功下载 Grafana 的 SQLite 数据库文件并提取管理员哈希。
攻击指令:
1 | curl --path-as-is http://127.0.0.1:3000/public/plugins/alertlist/../../../../../../../../var/lib/grafana/grafana.db -o grafana.db |
4.影响分析
敏感数据泄露:攻击者可以读取服务器上的任何文件,包括系统密码、SSH 私钥、云平台密钥等。
管理权限沦陷:通过获取数据库中的哈希值并进行离线爆破,攻击者成功以 admin 身份登录 Web 后台。
内网纵深攻击:登录后台后,攻击者可利用 Data Sources 功能作为跳板,对企业内网其他资产进行 SSRF 探测或连接内网数据库。
5.结论
本次渗透成功通过路径穿越漏洞获取了应用系统的最高管理权限(Admin)。由于环境内暂未配置外部数据源,未进一步实施横向移动,但理论上该漏洞足以导致企业内网的核心业务数据泄露。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ukio!




