Grafana任意文件读取漏洞复现(CVE-2021-43798)

本文介绍Grafana中发现的目录遍历漏洞,包括受影响版本、环境搭建步骤、漏洞复现过程及安全建议。

1、漏洞描述

Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告。2021年12月6日,国外安全研究人员披露Grafana中某些接口在提供静态文件时,攻击者通过构造恶意请求,可造成目录遍历,读取系统上的文件。

2、影响版本

Grafana 8.3.x < 8.3.1
Grafana 8.2.x < 8.2.7
Grafana 8.1.x < 8.1.8
Grafana 8.0.x < 8.0.7

3、环境搭建

使用vulhub搭建漏洞环境。
搭建完成后,访问一下

在这里插入图片描述

<

### GoCD plugin CVE-2021-43287 任意文件读取漏洞分析与修复方案 #### 漏洞概述 GoCD 是一款由 ThoughtWorks 开发的持续集成和发布管理系统。该工具基于 CruiseControl 进行开发,支持快速构建项目的持续部署 pipeline[^2]。然而,在 GoCD 的 v20.6.0 至 v21.2.0 版本中,存在一个任意文件读取漏洞CVE-2021-43287)。此漏洞允许攻击者通过构造特定请求访问服务器上的任意文件。 #### 漏洞成因 漏洞的根本原因在于 `PrimaryStatusProviderController` 类中的函数 `getPluginFile` 对传递参数 `pluginName` 缺乏必要的过滤机制。攻击者可以通过路径穿越技术(如使用 `../../../../../../`)拼接目标文件路径,并通过以下 URL 读取文件内容: ```plaintext /go/add-on/business-continuity/api/plugin?folderName=&pluginName=../../../../../../../etc/passwd ``` 由于 GoCD 使用 Jetty 容器并依赖 `Spring Security` 框架完成访问控制,配置中的 `assumeAnonymousUserFilter` 过滤器将某些 URL 规则设置为无需认证,从而导致未授权访问成为可能[^3]。 #### 漏洞影响 攻击者可以利用此漏洞读取服务器上的敏感文件,例如 `/etc/passwd` 或 `windows/win.ini`。在 Linux 系统中,攻击者可能获取到系统用户信息;在 Windows 系统中,可能泄露系统配置信息。这些信息可能进一步被用于提权或其他恶意活动。 #### 修复方案 以下是针对 CVE-2021-43287 的修复建议: 1. **升级版本**: 最直接的解决方案是升级 GoCD 到不受影响的版本。官方已确认 v21.3.0 及更高版本修复了此漏洞[^1]。因此,建议用户尽快将 GoCD 升级到最新稳定版本。 2. **限制访问控制**: 如果无法立即升级,可以通过修改 `web.xml` 文件中的过滤器配置来限制对受影响 URL 的访问。具体操作包括移除或调整 `assumeAnonymousUserFilter` 的规则,确保所有敏感接口均需要身份验证[^3]。 3. **输入验证**: 在代码层面,确保对 `pluginName` 参数进行严格的输入验证,禁止包含路径穿越字符(如 `..` 和 `/`)。可以通过正则表达式或其他方式实现参数校验。 4. **防火墙规则**: 配置防火墙或 Web 应用防火墙(WAF),拦截包含路径穿越模式的请求。例如,阻止所有包含 `../../../../` 的 HTTP 请求。 5. **日志监控**: 启用详细的日志记录功能,监控是否存在尝试访问敏感文件的行为。一旦发现可疑请求,立即采取措施阻止潜在攻击。 #### 示例修复代码 以下是一个简单的代码示例,展示如何在服务端对 `pluginName` 参数进行输入验证: ```java public String sanitizePluginName(String pluginName) { if (pluginName == null || pluginName.contains("..") || pluginName.contains("/")) { throw new IllegalArgumentException("Invalid plugin name"); } return pluginName; } ``` #### 安全建议 除了上述修复措施外,还应定期检查系统的安全状态,及时更新软件版本,关闭不必要的服务端口,并遵循最小权限原则配置访问控制策略。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值