Kubernetes — различия между версиями
| Drakylar (обсуждение | вклад) м (→secrets) | Drakylar (обсуждение | вклад)  м | ||
| Строка 7: | Строка 7: | ||
| Предварительно статья разделена на сервисы и как их можно найти, эксплуатировать и может быть закрепиться. | Предварительно статья разделена на сервисы и как их можно найти, эксплуатировать и может быть закрепиться. | ||
| + | = Pod = | ||
| + | |||
| + | == Локальные файлы == | ||
| + | |||
| + | ca.crt - сертификат для проверки коммуникаций (можно отключить в curl функцией -k) | ||
| + | |||
| + | namespace - текущее рабочее пространство | ||
| + | |||
| + | token - сервисный токен Pod'а | ||
| + | |||
| + | Где их обычно можно найти: | ||
| + | |||
| + | <syntaxhighlight lang="bash" line="1" enclose="div" style="overflow-x:auto" > | ||
| + | /run/secrets/kubernetes.io/serviceaccount | ||
| + | /var/run/secrets/kubernetes.io/serviceaccount | ||
| + | /secrets/kubernetes.io/serviceaccount  | ||
| + | </syntaxhighlight> | ||
| = Role-Based Access Control = | = Role-Based Access Control = | ||
Версия 19:50, 12 марта 2022
Статья посвящена тестированию на проникновение Kubernetes.
Предварительно статья разделена на сервисы и как их можно найти, эксплуатировать и может быть закрепиться.
Содержание
Pod
Локальные файлы
ca.crt - сертификат для проверки коммуникаций (можно отключить в curl функцией -k)
namespace - текущее рабочее пространство
token - сервисный токен Pod'а
Где их обычно можно найти:
/run/secrets/kubernetes.io/serviceaccount
/var/run/secrets/kubernetes.io/serviceaccount
/secrets/kubernetes.io/serviceaccountRole-Based Access Control
Система по управлению ролями. Если проще - просто система контроля доступа, которая говорит куда у нас есть доступ и что это за доступ (get, list, update, delete).
Как правило, неправильная настройка доступа может привести к проблемам безопасности.
Для получения списка доступных ресурсов у сервисного аккаунта, требуется выполнить следующую команду:
# Весь список привилегий
kubectl get rolebindings,clusterrolebindings --all-namespaces -o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind=="ServiceAccount")].name' | grep service_account_namecurl -s $APISERVER/apis/rbac.authorization.k8s.io/v1/clusterrolebindings?limit=500 --header "Authorization: Bearer $TOKEN" --cacert /tmp/ca.crt
# удачи парсить:)Там же можно посмотреть информацию о роли.
Далее проблемы будут разделены на ресурсы, к которым был предоставлен доступ
secrets
Относится к etcd - хранилище секретов.
Доступ list
Позволяет получить список всех секретов в namespace.
kubectl
kubectl get secrets
HTTP API
curl -s $APISERVER/api/v1/secrets/ --header "Authorization: Bearer $TOKEN" --cacert /tmp/ca.crtДоступ get
Позволяет прочитать секрет.
Проблема в том, что при этом не всегда у нас будет доступ list на получение списка секретов, но тк идентификатор секрета - это 5 символов из A..Z, поэтому его возможно перебрать.
Пример названия секрета пользователя drakylar-admin:
drakylalr-admin-token-sgjbpгде sgjbp - случайная строка.
kubectl
Получить секрет по имени
kubectl get secrets secret_name -o yamlcurl
curl -s $APISERVER/api/v1/namespaces/default/secrets/drakylar-admin-token-sgjbp --header "Authorization: Bearer $TOKEN" --cacert /tmp/ca.crtpods
Доступ create
Позволяет создавать новые Pod'ы.
