GCP - Privilege Escalation

Support HackTricks

Вступ до Підвищення Привілеїв GCP

GCP, як і будь-яке інше хмарне середовище, має деякі принципи: користувачі, групи та облікові записи служб, а також деякі ресурси, такі як обчислювальний двигун, хмарні функції… Потім, через ролі, дозволи надаються цим принципам над ресурсами. Це спосіб вказати дозволи, які має принцип над ресурсом у GCP. Є певні дозволи, які дозволять користувачу отримати ще більше дозволів на ресурс або сторонні ресурси, і це називається підвищенням привілеїв (також, експлуатація вразливостей для отримання більше дозволів).

Отже, я хотів би розділити техніки підвищення привілеїв GCP на 2 групи:

  • Підвищення привілеїв до принципу: Це дозволить вам видавати себе за інший принцип, і, отже, діяти як він з усіма його дозволами. наприклад: Зловживання getAccessToken для видачі себе за обліковий запис служби.

  • Підвищення привілеїв на ресурсі: Це дозволить вам отримати більше дозволів над конкретним ресурсом. наприклад: ви можете зловживати дозволом setIamPolicy над cloudfunctions, щоб дозволити вам викликати функцію.

  • Зверніть увагу, що деякі дозволи ресурсів також дозволять вам прикріпити довільний обліковий запис служби до ресурсу. Це означає, що ви зможете запустити ресурс з SA, потрапити в ресурс і вкрасти токен SA. Отже, це дозволить підвищити привілеї до принципу через ескалацію ресурсу. Це сталося в кількох ресурсах раніше, але тепер це трапляється рідше (але все ще може статися).

Очевидно, що найцікавіші техніки підвищення привілеїв - це техніки другої групи, оскільки вони дозволять вам отримати більше привілеїв поза ресурсами, над якими ви вже маєте деякі привілеї. Однак зверніть увагу, що ескалація в ресурсах може також дати вам доступ до чутливої інформації або навіть до інших принципів (можливо, через читання секрету, що містить токен SA).

Важливо також зазначити, що в GCP облікові записи служб є як принципами, так і дозволами, тому підвищення привілеїв у SA також дозволить вам видавати себе за нього.

Дозволи в дужках вказують на дозволи, необхідні для експлуатації вразливості за допомогою gcloud. Вони можуть не знадобитися, якщо експлуатувати через API.

Дозволи для Методології Підвищення Привілеїв

Ось як я перевіряю конкретні дозволи для виконання конкретних дій у GCP.

  1. Завантажте репозиторій github https://github.com/carlospolop/gcp_privesc_scripts

  2. Додайте в tests/ новий скрипт

Обхід обмежень доступу

Токени SA, витік з сервісу метаданих GCP, мають обмеження доступу. Це обмеження на дозволи, які має токен. Наприклад, якщо токен має https://www.googleapis.com/auth/cloud-platform область, він матиме повний доступ до всіх сервісів GCP. Однак, якщо токен має https://www.googleapis.com/auth/cloud-platform.read-only область, він матиме лише доступ лише для читання до всіх сервісів GCP, навіть якщо SA має більше дозволів у IAM.

Немає прямого способу обійти ці дозволи, але ви завжди можете спробувати знайти нові облікові дані на скомпрометованому хості, знайти ключ служби для генерації токена OAuth без обмежень або перейти на іншу VM з меншими обмеженнями.

Коли використовуються обмеження доступу, токен OAuth, який генерується для обчислювального екземпляра (VM), буде мати обмеження включено. Однак ви можете бути в змозі обійти це обмеження та експлуатувати дозволи, які має скомпрометований обліковий запис.

Найкращий спосіб обійти це обмеження - або знайти нові облікові дані на скомпрометованому хості, або знайти ключ служби для генерації токена OAuth без обмежень, або скомпрометувати іншу VM з SA з меншими обмеженнями.

Перевірте SA з ключами, згенерованими за допомогою:

for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

Техніки ескалації привілеїв

Спосіб ескалації ваших привілеїв в AWS полягає в тому, щоб мати достатньо дозволів, щоб, так чи інакше, отримати доступ до привілеїв інших облікових записів/користувачів/груп. Ланцюгова ескалація, поки ви не отримаєте адміністративний доступ до організації.

GCP має сотні (якщо не тисячі) дозволів, які можуть бути надані сутності. У цій книзі ви можете знайти всі дозволи, які я знаю, які ви можете зловживати для ескалації привілеїв, але якщо ви знаєте якийсь шлях, не згаданий тут, будь ласка, поділіться ним.

Підсторінки цього розділу впорядковані за сервісами. Ви можете знайти на кожному сервісі різні способи ескалації привілеїв на сервісах.

Зловживання GCP для ескалації привілеїв локально

Якщо ви знаходитесь всередині машини в GCP, ви можете зловживати дозволами для ескалації привілеїв навіть локально:

GCP - local privilege escalation ssh pivoting

Посилання

Підтримка HackTricks

Last updated