
Scanner do Grafana com todos os CVEs públicos que coletei em um script para facilitar o teste do Grafana.
Um scanner de vulnerabilidades para Grafana via linha de comando. Ele identifica a versão do Grafana instalada, executa um conjunto de verificações CVE sensíveis à versão, audita falhas comuns de configuração, armazena resultados em um banco de dados local e pode exibi-los por meio de um pequeno painel web.
Esta ferramenta envia requisições para instâncias do Grafana e, para algumas verificações, tenta caminhos de exploração conhecidos (path traversal, injeção SQL, SSRF). Execute-a apenas contra sistemas que lhe pertencem ou para os quais você possui permissão por escrito para testar. A digitalização não autorizada pode violar as leis de uso indevido de computador em sua jurisdição.
requestsflask (necessário apenas para --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
--no-ssl-verify apenas para hosts internos com certificados autoassinados; fazer isso exibe um aviso porque as credenciais poderiam, caso contrário, ser expostas à interceptação.--dashboard-token. Quando o painel está vinculado a uma interface não local, você deve definir um token. Todas as requisições que alteram o estado também exigem um token CSRF.Com -o, o scanner escreve BASE.json, BASE.html e BASE.csv. O relatório HTML neutraliza URIs javascript: / data: / vbscript: que poderiam vir de uma resposta maliciosa de um alvo.
Com --db, os resultados são armazenados em um arquivo JSON que é escrito atomicamente: uma cópia .bak do estado anterior é mantida, e um arquivo que falha ao ser analisado é movido para .corrupt-<timestamp> em vez de ser descartado silenciosamente.
O scanner executa verificações CVE sensíveis à versão, além de auditorias de configuração (cabeçalhos de segurança, CORS, acesso anônimo, auto-cadastro, análise de plugins, métricas expostas). A lista completa de CVEs e notas sobre o método de detecção estão em docs/vulnerabilities.md.
scanner.py — motor, verificações, banco de dados, painel web, CLIdocs/usage.md — modos de digitalização e fluxos de trabalhodocs/vulnerabilities.md — referência de CVEsdocs/architecture.md — estrutura interna e fluxo de dadostests/ — conjunto de testesmake test # run the test suite
make lint # ruff + flake8
O pipeline de CI executa os testes e linters no Python 3.9–3.12 e constrói a imagem Docker.
MIT. Veja LICENSE.
| Opção | Descrição |
|---|
-u, --url | Digitalizar uma única URL alvo |
-f, --file | Digitalizar alvos listados um por linha em um arquivo |
--auto-search FILE | Detectar Grafana em uma lista de URLs e, em seguida, digitalizar as instâncias detectadas |
-o, --output BASE | Nome base para arquivos de relatório JSON/HTML/CSV |
--timeout N | Tempo limite por requisição em segundos (padrão 10) |
--threads N | Threads de digitalização concorrentes (padrão 5) |
--db FILE | Habilitar o banco de dados de vulnerabilidades JSON no caminho fornecido |
--serve [PORT] | Iniciar o painel web Flask (porta padrão 8080) |
--host | Endereço ao qual o painel se vincula (padrão 127.0.0.1) |
--dashboard-token TOKEN | Exigir este token bearer em todas as rotas do painel |
--auth-token | Token bearer para digitalizar endpoints autenticados |
--auth-user / --auth-pass | Autenticação básica para digitalização |
--no-ssl-verify | Desabilitar verificação de certificado TLS (exibe um aviso) |
-v, --verbose | Exibir detalhes por verificação |
--no-banner | Suprimir o cabeçalho de inicialização |