GCP - Containers, GKE & Composer Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Контейнери

У контейнерах GCP ви можете знайти більшість сервісів на основі контейнерів, які пропонує GCP, тут ви можете побачити, як перерахувати найпоширеніші з них:

gcloud container images list
gcloud container images list --repository us.gcr.io/<project-name> #Search in other subdomains repositories
gcloud container images describe <name>
gcloud container subnets list-usable
gcloud container clusters list
gcloud container clusters describe <name>
gcloud container clusters get-credentials [NAME]

# Run a container locally
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

# Login & Download
sudo docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://HOSTNAME
## where HOSTNAME is gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io.
sudo docker pull HOSTNAME/<project-name>/<image-name>

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами контейнера для підвищення привілеїв:

pageGCP - Container Privesc

Групи вузлів

Це пул машин (вузлів), які формують кластери Kubernetes.

# Pool of machines used by the cluster
gcloud container node-pools list --zone <zone> --cluster <cluster>
gcloud container node-pools describe --cluster <cluster> --zone <zone> <node-pool>

Composer

Це керована версія Airflow в GCP.

gcloud composer environments list --locations <loc>
gcloud composer environments describe --location <loc> <environment>s

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами композитора для підвищення привілеїв:

pageGCP - Composer Privesc

Kubernetes

Для отримання інформації про те, що таке Kubernetes, перегляньте цю сторінку:

pageKubernetes Pentesting

Спочатку ви можете перевірити, чи існують будь-які кластери Kubernetes у вашому проекті.

gcloud container clusters list

Якщо у вас є кластер, ви можете дозволити gcloud автоматично налаштувати ваш файл ~/.kube/config. Цей файл використовується для аутентифікації вас під час використання kubectl, основного інтерфейсу командного рядка для взаємодії з кластерами K8s. Спробуйте цю команду.

gcloud container clusters get-credentials [CLUSTER NAME] --region [REGION]

Потім перегляньте файл ~/.kube/config, щоб побачити згенеровані облікові дані. Цей файл буде використовуватися для автоматичного оновлення токенів доступу на основі тієї ж самої ідентичності, яку використовує ваша активна сесія gcloud. Звісно, для цього потрібні відповідні дозволи.

Після налаштування цього ви можете спробувати наступну команду, щоб отримати конфігурацію кластера.

kubectl cluster-info

Ви можете дізнатися більше про gcloud для контейнерів тут.

Це простий скрипт для переліку Kubernetes в GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum

Привілеї ескалації привілеїв TLS Boostrap

Спочатку цей метод ескалації привілеїв дозволяв піднятися в середину кластера GKE, ефективно дозволяючи зловмиснику повністю скомпрометувати його.

Це тому, що GKE надає TLS Bootstrap credentials в метаданих, які доступні будь-кому, просто скомпрометувавши підпроцес.

Техніка, яка використовується, пояснена в наступних постах:

Цей інструмент був створений для автоматизації процесу: https://github.com/4ARMED/kubeletmein

Однак техніка використовувала той факт, що за допомогою облікових даних метаданих було можливо створити CSR (Certificate Signing Request) для нового вузла, який автоматично схвалювався. У моєму тесті я перевірив, що ці запити вже не автоматично схвалюються, тому я не впевнений, чи ця техніка ще дійсна.

Секрети в Kubelet API

У цьому пості було виявлено адресу Kubelet API, до якої можна було отримати доступ зсередини підпроцесу в GKE, що надавало деталі про запущені підпроцеси:

curl -v -k http://10.124.200.1:10255/pods

Навіть якщо API не дозволяє змінювати ресурси, можливо знайти чутливу інформацію у відповіді. Кінцева точка /pods була знайдена за допомогою Kiterunner.

Last updated