Пентест ELK

MIS Team
3 min readJan 21, 2021

--

ELK — один из самых популярных стеков технологий. В очень многих компаниях используется связка Elasticsearch-Kibana-Logstash, в которой порой хранится очень интересная и важная информация (чаще всего это логи с различных систем). И очень часто при RedTeam эти логи могут помочь — доменные имена, ip-адреса, имена пользователей, какая-то информация, которая может косвенно помочь — все это мы встречали в своей практике в ELK разных компаний.

Речь идет к тому, что если вы встретили ELK — его надо тоже как-то проверить и указать Заказчику на недостатки.

Немного теории о том что для чего используется в стеке ELK. Elasticsearch хранит данные и обеспечивает быструю поисковую систему. Kibana — это графический интерфейс, который позволяет анализировать и визуализировать сохраненные данные в Elasticsearch. Logstash используется для сбора данных из разных источников и сохранения их в Elasticsearch.

Начнем с Elasticsearch

По умолчанию использует порт 9200, протокол HTTP.
Отметим сразу, что api elasticserach может быть не доступно напрямую — работать с elastic можно только через kibana

1. Первое, что необходимо проверить можем ли мы получить какую-то информацию по http://elasticsearch:9200/
Если мы увидели информацию, в которой фигурирует версия сервера — это хорошо и мы можем смело переходить к шагу 2.
Если информацию мы не увидели, то смотри пункт 3.

2. По умолчанию в elastic не включена аутентификация, что позволяет получить доступ сразу ко всей информации, содержащейся внутри

3. Если мы не увидели никакой информации на http://elasticsearch:9200/ — высок шанс того, что аутентификация включена и нам надо попробовать пробрутить пароли. Чаще всего пользователями являются: elastic (в старых версиях пароль был changeme), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system

4. Если мы не смогли подобрать пароль и Elasticsearch не использует SSL/TLS, то можно попробовать осуществить атаку типа “человек по середине” (если это возможно).
Возможно ваша проверка будет проходить методом “белого ящика” и логины-пароли вам дадут.

5. Следующий шаг — получение информации о пользователях и ролях в системе и дамп всей хранящейся информации (если это согласовано с Заказчиком).
Получить информацию о всех пользователях:
http://elasticsearch:9200/_security/user
Получить информацию о всех ролях:
http://elasticsearch:9200/_security/role

6. Сделать дамп информации, к которой есть доступ:
http://elasticsearch:9200/_search?pretty=true&size=9999
Здесь важно указать size, потому что без него, по умолчанию дампится будет только 10 результатов.

Kibana

По умолчанию использует порт 5601, протокол HTTP.

1. Аутентификация в Kibana связана с аутентификацией в Elastic — если в elasticsearch нет пароля — в кибане его тоже не будет. И наоборот — если есть пароль, то в кибане тоже будет — можно логиниться с учетными данными эластика

2. После получения доступа в веб интерфейс kibana — приступаем к поиску нужной нам информации (ip, домены, логи и т.д.)

3. Можно попробовать продвинуться немного дальше. В разделе Management можно увидеть версию Kibana. Если она < 6.6.0 — можно попробовать выполнить код, воспользовавшись CVE-2019–7609

4. Также необходимо проверить есть ли возможность под пользователем управлять индексами elasticsearch (в разделе Management — Elasticsearch — Index management). Если такая возможность есть без какой-либо авторизации — потенциальный злоумышленник может очень сильно навредить

Для пентеста Logstash необходим доступ к серверу. Поэтому в нашем рассказе мы его опустим.

Чаще всего пентест ELK начинается с того, что найдена кибана и из нее надо получить данные, а в идеале — добраться до всех данных в elasticsearch. Если развернута elk — значит есть необходимость обрабатывать большой объем данных.

Надеемся, что информация окажется вам полезной!

--

--

MIS Team
MIS Team

Written by MIS Team

ИБ глазами RedTeam

No responses yet