
Сканер Grafana со всеми публичными CVE, которые я собрал в одном скрипте, чтобы упростить тестирование Grafana
Командный сканер уязвимостей для Grafana. Он определяет установленную версию Grafana, выполняет набор проверок CVE с учетом версии, аудитирует общие слабости конфигурации, сохраняет результаты в локальную базу данных и может предоставлять их через небольшой веб-дашборд.
Этот инструмент отправляет запросы к экземплярам Grafana и, для некоторых проверок, пытается использовать известные пути эксплуатации (path traversal, SQL injection, SSRF). Запускайте его только против систем, которыми вы владеете или на тестирование которых у вас есть письменное разрешение. Несанкционированное сканирование может нарушать законы о компьютерных злоупотреблениях в вашей юрисдикции.
requestsflask (требуется только для --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 | Описание |
|---|---|
-u, --url | Сканировать одну цель по URL |
-f, --file | Сканировать цели, перечисленные по одной в строке в файле |
--auto-search FILE | Обнаружить Grafana в списке URL, затем отсканировать найденные экземпляры |
-o, --output BASE | Базовое имя для файлов отчетов JSON/HTML/CSV |
--timeout N | Тайм-аут запроса в секундах (по умолчанию 10) |
--threads N | Количество параллельных потоков сканирования (по умолчанию 5) |
--db FILE | Включить базу данных уязвимостей JSON по указанному пути |
--serve [PORT] | Запустить веб-дашборд Flask (порт по умолчанию 8080) |
--host | Адрес, к которому привязывается дашборд (по умолчанию 127.0.0.1) |
--dashboard-token TOKEN | Требовать этот токен Bearer для всех маршрутов дашборда |
--auth-token | Bearer-токен для сканирования защищенных конечных точек |
--auth-user / --auth-pass | Базовая аутентификация для сканирования |
--no-ssl-verify | Отключить проверку сертификата TLS (выводит предупреждение) |
-v, --verbose | Выводить детали каждой проверки |
--no-banner | Подавить заголовок при запуске |
--no-ssl-verify только для внутренних хостов с самоподписанными сертификатами; при этом выводится предупреждение, так как учетные данные могут быть перехвачены.--dashboard-token. Когда дашборд привязан к нелокальному интерфейсу, вы должны установить токен. Все запросы, изменяющие состояние, также требуют CSRF-токен.С опцией -o сканер записывает BASE.json, BASE.html и BASE.csv. HTML-отчет нейтрализует URI javascript:/data:/vbscript:, которые могут исходить от вредоносного ответа цели.
С опцией --db результаты сохраняются в JSON-файл, который записывается атомарно: сохраняется копия .bak предыдущего состояния, а файл, который не удаётся проанализировать, перемещается в .corrupt-<timestamp> вместо того, чтобы быть молча отброшенным.
Сканер выполняет проверки CVE с учетом версии, а также аудит конфигурации (заголовки безопасности, CORS, анонимный доступ, самостоятельная регистрация, анализ плагинов, открытые метрики). Полный список CVE и примечания по методам обнаружения находятся в docs/vulnerabilities.md.
scanner.py — движок, проверки, база данных, веб-дашборд, CLIdocs/usage.md — режимы сканирования и рабочие процессыdocs/vulnerabilities.md — справочник CVEdocs/architecture.md — внутренняя структура и поток данныхtests/ — набор тестовmake test # run the test suite
make lint # ruff + flake8
Конвейер CI запускает тесты и линтеры на Python 3.9–3.12 и собирает Docker-образ.
MIT. См. LICENSE.