
Scanner per Grafana con tutte le CVE pubbliche che ho raccolto in un unico script per rendere più facile il testing di Grafana.
Scanner di vulnerabilità da riga di comando per Grafana. Rileva la versione di Grafana installata, esegue una serie di controlli CVE basati sulla versione, verifica le debolezze di configurazione più comuni, salva i risultati in un database locale e può mostrarli tramite una piccola dashboard web.
Questo strumento invia richieste a istanze di Grafana e, per alcuni controlli, tenta percorsi di exploit noti (path traversal, SQL injection, SSRF). Eseguilo solo su sistemi di tua proprietà o per i quali hai ricevuto autorizzazione scritta a testarli. La scansione non autorizzata potrebbe violare le leggi relative ai reati informatici nella tua giurisdizione.
requestsflask (richiesto solo con --serve)pip install -r requirements.txt
# Scansiona un singolo target
python scanner.py -u https://grafana.example.com
# Scansiona un elenco di URL da un file
python scanner.py -f targets.txt -o report
# Rileva le istanze Grafana in un elenco di URL misti, poi scansionale
python scanner.py --auto-search urls.txt -o discovery
# Salva i risultati in un database e visualizzali nella dashboard
python scanner.py -f targets.txt --db vulndb.json
python scanner.py --serve --db vulndb.json
| Opzione | Descrizione |
|---|---|
-u, --url | Scansiona un singolo URL di destinazione |
-f, --file | Scansiona i target elencati uno per riga in un file |
--auto-search FILE | Rileva Grafana in un elenco di URL, poi scansiona le istanze rilevate |
-o, --output BASE | Nome base per i file di report JSON/HTML/CSV |
--timeout N | Timeout per richiesta in secondi (predefinito 10) |
--threads N | Thread di scansione concorrenti (predefinito 5) |
--db FILE | Abilita il database delle vulnerabilità JSON nel percorso indicato |
--serve [PORT] | Avvia la dashboard web Flask (porta predefinita 8080) |
--host | Indirizzo a cui si vincola la dashboard (predefinito 127.0.0.1) |
--dashboard-token TOKEN | Richiedi questo bearer token su tutte le route della dashboard |
--auth-token | Bearer token per la scansione di endpoint autenticati |
--auth-user / --auth-pass | Autenticazione di base per la scansione |
--no-ssl-verify | Disabilita la verifica del certificato TLS (mostra un avviso) |
-v, --verbose | Stampa i dettagli per ogni controllo |
--no-banner | Sopprime l'intestazione di avvio |
--no-ssl-verify solo per host interni con certificati autofirmati; in tal caso viene mostrato un avviso perché le credenziali potrebbero altrimenti essere esposte a intercettazioni.--dashboard-token. Quando la dashboard è vincolata a un'interfaccia non locale, è necessario impostare un token. Anche tutte le richieste che modificano lo stato richiedono un token CSRF.Con -o, lo scanner scrive BASE.json, BASE.html e BASE.csv. Il report HTML neutralizza gli URI javascript:/data:/vbscript: che potrebbero provenire da una risposta di un target dannoso.
Con --db, i risultati vengono archiviati in un file JSON scritto in modo atomico: viene conservata una copia .bak dello stato precedente e un file che non riesce a essere analizzato viene spostato in .corrupt-<timestamp> invece di essere scartato silenziosamente.
Lo scanner esegue controlli CVE basati sulla versione oltre ad audit di configurazione (header di sicurezza, CORS, accesso anonimo, auto-registrazione, analisi dei plugin, metriche esposte). L'elenco completo delle CVE e le note sui metodi di rilevamento si trovano in docs/vulnerabilities.md.
scanner.py — motore, controlli, database, dashboard web, CLIdocs/usage.md — modalità di scansione e flussi di lavorodocs/vulnerabilities.md — riferimento CVEdocs/architecture.md — struttura interna e flusso dei datitests/ — suite di testmake test # esegue la suite di test
make lint # ruff + flake8
La pipeline CI esegue test e linter su Python 3.9–3.12 e crea l'immagine Docker.
MIT. Vedi LICENSE.