Авторские курсы Михаила Тарасова

Exposed Prometheus/Grafana dashboards — это admin-панель с метриками и токенами в чистом виде

Exposed Prometheus/Grafana dashboards is an admin panel with metrics and tokens in its purest form

Почему Это Пиздец Космического Масштаба

Prometheus собирает метрики со всей твоей инфраструктуры — процессы, API-ключи в env, внутренние эндпоинты, токены в логах. Grafana визуализирует это дело через дашборды. Когда оба висят без auth на 0.0.0.0, ты буквально транслируешь весь бэкенд в 4K-качестве.

Что видит хакер (реальный чеклист):

  • Prometheus /metrics — текстовый формат с переменными окружения:

  • Да, токены прямо там. Без шуток.

  • Grafana API — /api/datasources возвращает коннекторы к PostgreSQL/MySQL с credentials:

PromQL Injection — через /api/v1/query?query=... можно дёргать внутренние сервисы:

  • Получаешь карту всей сети + живые/мёртвые хосты.

Точка Входа: Как Ломать (Без Лирики)

Фаза 1: Сканирование

Что ищем:

  • /metrics — текст с # HELP в начале = джекпот

  • /api/v1/status/config — весь конфиг Prometheus (alertmanager URLs, scrape targets)

  • Grafana без логина на /login (дефолт admin:admin)

Фаза 2: Добыча Токенов

Пример 1: AWS Keys в метриках

Часто в process_cmdline или кастомных метриках валяются IAM-ключи.

Пример 2: Grafana API Key Dump

Фаза 3: Lateral Movement

PromQL как SSRF:

Grafana Plugin RCE (CVE-2021-43798):

Реальные Кейсы (Без Пруфов — Верь На Слово)

Case #1: Crypto-биржа (2023)

  • Prometheus на :9090 без auth

  • В метриках hot_wallet_balance — адреса кошельков + приватные ключи в process_cmdline

  • Итог: $2M вывели за 4 часа через крипто-миксер

Case #2: SaaS-стартап (2024)

  • Grafana с admin:admin

  • В datasources — production PostgreSQL

  • Через SQL-инъекцию в дашборде слили 500k email’ов + хэши паролей

Case #3: Гос.структура (без деталей)

  • Prometheus экспортил метрики VPN-сервера

  • В /metrics торчал список подключённых IP + usernames

  • Дальше молчу, но там было весело

Митигация (Или Как Не Быть Дауном)

  1. Auth ВЕЗДЕ:

2. IP Whitelisting:

3. Скрыть токены из метрик:

  1. Grafana Hardening:

    • Отключи anonymous access: [auth.anonymous] enabled = false

    • Убей дефолтного admin’а после первого логина

    • Включи 2FA через /admin/users

  2. Мониторинг Мониторинга (да, серьёзно):

Советы

3 вектора для добивания:

  1. Grafana Plugins — если есть загрузка кастомных плагинов, заливай зиппед веб-шелл (структура plugin.json + shell.php). Распаковывается в /var/lib/grafana/plugins/.

  2. PromQL Time-Based Blind — через query_range с большими таймстампами можно DoS’ить Prometheus или вычислять внутренние данные по времени ответа.

  3. Grafana Snapshot Leak — старые снапшоты дашбордов (/dashboard/snapshot/...) часто доступны без авторизации. Там могут быть токены в query-параметрах.

Если всё закрыто:

  • Брутфорси /api/login — многие оставляют admin:admin123

  • Ищи старые версии через X-Grafana-Version в хедерах → CVE-поиск

  • Проверь /public/ на забытые бэкапы конфигов

План атаки (если зацепка есть):

  1. Дампишь /api/v1/targets из Prometheus → список всех scrape-узлов

  2. Через Grafana API получаешь credentials к datasources

  3. Коннектишься к БД напрямую → sqlmap или ручной дамп

  4. Из БД достаёшь API-ключи других сервисов → lateral movement

  5. Profit (или Bug Bounty на $15k, если играешь в белую)

Мои курсы