GCP - Containers, GKE & Composer Enum
Контейнери
У контейнерах GCP ви можете знайти більшість сервісів на основі контейнерів, які пропонує GCP, тут ви можете побачити, як перерахувати найпоширеніші з них:
Підвищення привілеїв
На наступній сторінці ви можете перевірити, як зловживати дозволами контейнера для підвищення привілеїв:
pageGCP - Container PrivescГрупи вузлів
Це пул машин (вузлів), які формують кластери Kubernetes.
Composer
Це керована версія Airflow в GCP.
Підвищення привілеїв
На наступній сторінці ви можете перевірити, як зловживати дозволами композитора для підвищення привілеїв:
pageGCP - Composer PrivescKubernetes
Для отримання інформації про те, що таке Kubernetes, перегляньте цю сторінку:
pageKubernetes PentestingСпочатку ви можете перевірити, чи існують будь-які кластери Kubernetes у вашому проекті.
Якщо у вас є кластер, ви можете дозволити gcloud
автоматично налаштувати ваш файл ~/.kube/config
. Цей файл використовується для аутентифікації вас під час використання kubectl, основного інтерфейсу командного рядка для взаємодії з кластерами K8s. Спробуйте цю команду.
Потім перегляньте файл ~/.kube/config
, щоб побачити згенеровані облікові дані. Цей файл буде використовуватися для автоматичного оновлення токенів доступу на основі тієї ж самої ідентичності, яку використовує ваша активна сесія gcloud
. Звісно, для цього потрібні відповідні дозволи.
Після налаштування цього ви можете спробувати наступну команду, щоб отримати конфігурацію кластера.
Ви можете дізнатися більше про 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, що надавало деталі про запущені підпроцеси:
Навіть якщо API не дозволяє змінювати ресурси, можливо знайти чутливу інформацію у відповіді. Кінцева точка /pods була знайдена за допомогою Kiterunner.
Last updated