
Scanner Grafana avec tous les CVE publics que j'ai rassemblés dans un seul script pour faciliter les tests de Grafana
Un scanner de vulnérabilités en ligne de commande pour Grafana. Il identifie la version installée de Grafana, exécute un ensemble de vérifications CVE adaptées à la version, audite les faiblesses de configuration courantes, stocke les résultats dans une base de données locale et peut les servir via un petit tableau de bord web.
Cet outil envoie des requêtes aux instances Grafana et, pour certaines vérifications, tente des chemins d'exploitation connus (path traversal, injection SQL, SSRF). Exécutez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite de test. L'analyse non autorisée peut violer les lois sur les abus informatiques dans votre juridiction.
requestsflask (uniquement requis pour --serve)pip install -r requirements.txt
# Scan a single target
python scanner.py -u https://grafana.example.com
# Scan a list of URLs from a file
python scanner.py -f targets.txt -o report
# Detect Grafana instances in a mixed URL list, then scan them
python scanner.py --auto-search urls.txt -o discovery
# Persist results to a database and view them in the dashboard
python scanner.py -f targets.txt --db vulndb.json
python scanner.py --serve --db vulndb.json
| Option | Description |
|---|---|
-u, --url | Scanner une seule URL cible |
-f, --file | Analyser les cibles listées une par ligne dans un fichier |
--auto-search FILE | Détecter Grafana dans une liste d'URL, puis analyser les instances détectées |
-o, --output BASE | Nom de base pour les fichiers de rapport JSON/HTML/CSV |
--timeout N | Délai d'attente par requête en secondes (par défaut 10) |
--threads N | Threads d'analyse concurrents (par défaut 5) |
--db FILE | Activer la base de données JSON de vulnérabilités au chemin donné |
--serve [PORT] | Démarrer le tableau de bord web Flask (port par défaut 8080) |
--host | Adresse à laquelle le tableau de bord se lie (par défaut 127.0.0.1) |
--dashboard-token TOKEN | Exiger ce jeton Bearer sur toutes les routes du tableau de bord |
--auth-token | Jeton Bearer pour l'analyse des points de terminaison authentifiés |
--auth-user / --auth-pass | Authentification de base pour l'analyse |
--no-ssl-verify | Désactiver la vérification du certificat TLS (affiche un avertissement) |
-v, --verbose | Afficher les détails par vérification |
--no-banner | Supprimer l'en-tête de démarrage |
--no-ssl-verify que pour des hôtes internes avec des certificats auto-signés ; cela imprime un avertissement car les informations d'identification pourraient autrement être exposées à une interception.--dashboard-token. Lorsque le tableau de bord est lié à une interface non locale, vous devez définir un jeton. Toutes les requêtes modifiant l'état nécessitent également un jeton CSRF.Avec -o, le scanner écrit BASE.json, BASE.html et BASE.csv. Le rapport HTML neutralise les URI javascript:/data:/vbscript: qui pourraient provenir d'une réponse cible malveillante.
Avec --db, les résultats sont stockés dans un fichier JSON écrit de manière atomique : une copie .bak de l'état précédent est conservée, et un fichier qui ne peut pas être analysé est déplacé vers .corrupt-<timestamp> au lieu d'être silencieusement ignoré.
Le scanner exécute des vérifications CVE adaptées à la version ainsi que des audits de configuration (en-têtes de sécurité, CORS, accès anonyme, inscription automatique, analyse des plugins, métriques exposées). La liste complète des CVE et les notes sur les méthodes de détection se trouvent dans docs/vulnerabilities.md.
scanner.py — moteur, vérifications, base de données, tableau de bord web, CLIdocs/usage.md — modes d'analyse et flux de travaildocs/vulnerabilities.md — référence CVEdocs/architecture.md — structure interne et flux de donnéestests/ — suite de testsmake test # run the test suite
make lint # ruff + flake8
Le pipeline CI exécute les tests et les linters sur Python 3.9–3.12 et construit l'image Docker.
MIT. Voir LICENSE.