В новой статье рассказали, как команда СайберОК в рамках Кибериспытаний на Standoff365 нашла открытую Grafana у заказчика и добилась недопустимого события — всё на этапе начального рекона и без особых сложностей.
Совсем недавно, принимая участие в Кибериспытаниях на платформе Standoff365, команда CyberOK на этапе начального рекона без особых сложностей получила доступ к системе мониторинга Grafana заказчика.
Быстрый анализ показал, что хост с Grafana используется для сбора метрик с прода и одной ногой находится в Интернете, а второй – во внутренней сети. Такие узлы являются лакомым кусочком, поэтому, естественно, мы сделали стойку и начали рыть.
К сожалению для нас и к счастью для владельца, Grafana была достаточно свежей и не была подвержена известным уязвимостям, дающим возможность сразу «бахнуть RCE». Поэтому нам пришлось изрядно попотеть для реализации недопустимого события и разобраться в сплойтинге корпоративного мониторинга встроенными средствами.
Предположим, в ходе пентеста вы получили доступ к Grafana. Что посмотреть в первую очередь? Вот короткий чеклист.
Пользователи и их активность:
Датасорсы:
Дашборды:
Иногда достаточно даже этого этапа. Иногда нет. Что дальше?
Итак, если не очень повезло, то все, что у нас есть, — это какое-то количество внутренних IP-адресов и доменных имен, имена учетных записей. А если случилось чудо — то и пароли или токены доступа. Что делать дальше?
По классике пентеста нужно максимально расширить свои знания, просканировать порты и идентифицировать доступные сервисы. Если вы уже внутри или элементы инфраструктуры доступны из внешней сети, то можно запустить nmap и радоваться, но давайте рассмотрим более сложную ситуацию, когда Grafana — единственная точка доступа во внутреннюю сеть.
Тогда надо превратить Grafana в сканер портов! Для этого можно использовать возможность создавать и модифицировать датасорсы. В рамках нашего исследования мы использовали следующие типы расширений:
Логика достаточно простая. Мы создаем новый или модифицирум существующий источник данных, указывая в качестве цели интересующий нас IP:port или FQDN, после чего с помощью встроенной функции тестирования проверяем доступность сервиса.
Если сервис доступен, то через функцию Explore мы отправляем нужные нам запросы и анализируем результат.
Этот подход отлично работает как для HTTP(S), так и для других протоколов. Дело в том, что при тестировании плагины Grafana возвращают достаточно подробную информацию об ошибках, а в случае использования Explore можно получить полное тело ответа, включая ответы бинарных протоколов.
Рис.1 Пример ошибки HTTP(S). Браузер Google Chrome. Автор: С.В. Гордейчик, 2025.
Рис.2 Пример ответа бинарного протокола. Grafana. Автор: С.В. Гордейчик, 2025.
Вуаля, всё, что нам нужно далее, — это скриптофикация и база данных фингерпринтов, которую мы можем взять из Wapalyzer, Cokmap или Nmap и наш Grafmap готов. Расскажем об этом подробнее в следующей статье.
Как уже догадался проницательный читатель, Grafana — это черт в коробке готовая машинка для SSRF. Через плагин Infinity мы может отправлять произвольные HTTP(S) запросы и получать ответы. Более того, можно использовать различные методы HTTP, параметры аутентификации (Basic Auth, Bearer Token и т.д.), кастомные заголовки, параметры запроса…
Рис. 3 Grafana. Автор: С.В. Гордейчик, 2025.
И даже прокси можно указать, если вдруг у Grafana нет прямого доступа в Интернет. Чем не чудо?
Рис.4 Делаем SSRF. Редактор Sublime Text. Автор: С.В. Гордейчик, 2025.
Как мы можем использовать SSRF?
Если представить конечное развитие этой истории, то из Grafana можно сделать прокси для подключения Burp Suite или вашего любимого offensive toolkit. Конечно, это будет чуть медленней чем при нормальном шеле, но вполне рабочий вариант.
Если вам удалось собрать имена пользователей, но не посчастливилось вытащить пароли или другие секреты, Grafana может помочь. Через Infinity data source plugin можно легко менять методы аутентификации и учетные записи, что позволяет спреить пароли и учетки для произвольных веб-сервисов.
Этот подход не ограничивается только паролями. Небольшая модификация дает возможность реализовать фаззинг файлов и директорий на веб серверах для поиска неочевидных объектов или ендройнтов API. Сделать этакий fuff или katana.
И это не ограничивается только веб-ресурсами. Если в ходе портскана вы нашли MS SQL, Elasticsearch или другое из десятков приложений, поддерживаемых плагинами Grafana, у вас есть прекрасная возможность для создания скриптов подбора паролей через API.
Рис.5 Тестируем логин mssql. Grafana. Автор: С.В. Гордейчик, 2025.
Раз в год или два кто-то находит, что Grafana “уязвима для SQL Injection”. Раз, два, три.
Это достаточно спорный момент, ведь по сути многие плагины Grafana созданы для того, чтобы отправлять произвольные SQL-запросы к различным базам. С таким подходом можно говорить, что SQL Server Management Studio позволяет SQLi. Однако доля правды тут есть и неверно сконфигурированные датасорсы могут быть проблемой. Например, когда пользователь с ограниченными привилегиями имеет возможность модифицировать запросы в дашбордах. Подробнее можно узнать тут.
Однако в нашем случае мы и так имели права на модификацию датасорсов, что позволяло создавать новые соединения и выполнять произвольные запросы. Главное — знать «куда» и обладать достаточными привилегиями. Чем с большими правами Grafana обращается к серверу, тем больше возможностей у злоумышленника. Вплоть до такого.
Рис. 6 Сommand execution through SQL Server. Grafana. Источник
Это открывает много интересных возможностей, о которых мы поговорим в следующих статьях.
Grafana, как система мониторинга и визуализации данных, является мощным инструментом для анализа состояния инфраструктуры. Однако, если злоумышленник получает доступ к Grafana, она может стать "воротами" в корпоративную сеть. В ходе нашего исследования мы выяснили, что Grafana может быть использована для:
Эти возможности делают Grafana привлекательной целью для атакующих, особенно если она неправильно настроена или имеет избыточные права доступа. Важно понимать, как злоумышленники могут использовать Grafana для эксплуатации уязвимостей, чтобы предотвратить такие атаки.
В настоящее время система CyberOK СКИПА отслеживает около 20к экземпляров Grafana в Рунете, 15% из них уязвимы для критических уязвимостей. Наверное, это не очень хорошо. Не дайте себя обграфанить!
Автор: Сергей Гордейчик, генеральный директор СайберОК