Получи случайную криптовалюту за регистрацию!

Заметки на полях: Пентестим Kubernetes Лет 6 назад проект Kub | [MIS]ter & [MIS]sis Team

Заметки на полях: Пентестим Kubernetes

Лет 6 назад проект Kubernetes только начинал развиваться, а сегодня - его используют компании во всем мире. Kubernetes присутствует в сетях, наверное, всех крупных компании. Соответственно, возникает вопрос, а нужно ли проверять безопасность контейнеров приложения при пентесте или анализе этого приложения? И если надо, то, как это сделать?

Сегодня поделимся с вами информацией о том, на что нужно обратить внимание при анализе Kubernetes и получении первоначального доступа. По крайней мере тем, как видим это мы. И поделимся полезными (на наш взгляд) ссылками.

Итак, что нужно проверить в первую очередь:

1.Открытые порты. Если Kubernetes настроен правильно, то доступно извне очень ограниченное число портов. Но мы с вами знаем, что правильная настройка чего-либо встречается редко. К примеру, для удобства разработчиков, администраторов, очень часто оставляют доступный ssh порт с не очень надежным паролем. Поэтому всегда проверяем наличие открытых TCP портов для различных узлов: 22,443,2379,2380,4194,6443,6782-6784,6666,8080,8443,9099,10250-10252,30000-32767

2. Доступность API и немного профаззить каталоги. Цель - найти скрытые каталоги или файлы, а также точки в которых разрешен анонимный доступ. По умолчанию в Kubernetes API не разрешен анонимный доступ и очень сильная ролевая модель доступа, в которой по умолчанию запрещено все. Но опять же - проверить надо.

3. Доступ к etcd (обычно это порты 6666 и 2379). etcd - хранит информацию о конфигурации и секретах кластера. Доступ для записи в etcd - это, по сути, root-доступ к всему кластеру. На самом деле даже доступ на чтение - это риск повышения привилегий. Качественная настройка - доступ до etcd только с серверов API

4. Доступ к Kubelet. Kubelet - это такой посредник в общении каждого модуля кластера и API. И вот тут по умолчанию между API и Kubelet настроен анонимный доступ. Чтобы проверить доступна ли точка kubelet - нужно проверить доступ на порт 10250 и каталог pods. Если есть доступ к такой точке, то можно воспользоваться уже готовым инструментом для атаки - https://github.com/cyberark/kubeletctl

5. Доступ к панели управления Kubernetes. По сути, это веб-приложение, которое позволяет управлять кластером. До версии 1.8 в панели управления была учетная запись службы с полными привилегиями. В новых версиях открытая панель управления встречается редко, а кластеры с облачным управлением переводят все на централизованный интерфейс на своих порталах. Однако для старых версий проверка все еще актуальна

Эти пункты стоит проверить, чтобы понять - можете вы получить первоначальный доступ к Kubernetes или нет. Более глубокий анализ - это уже тема для более детальной статьи.

Если вам интересно что-то почитать на тему Kubernetes, его пентеста и безопасности - делимся несколькими ссылками:

https://cheatsheetseries.owasp.org/cheatsheets/Kubernetes_Security_Cheat_Sheet.html - подробный разбор того как безопасно развернуть, настроить и контролировать Kubernetes

https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/ - матрица угроз Kubernetes от Microsoft, в стиле ATT&CK

https://github.com/magnologan/awesome-k8s-security - отличный ресурс, где собрано огромное количество ссылок и информации по Kubernets и его безопасности