GCP - Привілейоване підвищення
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Вступ до привілейованого підвищення в GCP
GCP, як і будь-яке інше хмарне середовище, має деякі принципи: користувачі, групи та облікові записи служб, а також деякі ресурси, такі як обчислювальний двигун, хмарні функції…
Тоді, через ролі, дозволи надаються цим принципам над ресурсами. Це спосіб вказати дозволи, які має принцип над ресурсом у GCP.
Є певні дозволи, які дозволять користувачу отримати ще більше дозволів на ресурс або сторонні ресурси, і це називається привілейованим підвищенням (також, експлуатація вразливостей для отримання більше дозволів).
Отже, я хотів би розділити техніки привілейованого підвищення в GCP на 2 групи:
- Привілейоване підвищення до принципу: Це дозволить вам видавати себе за інший принцип, і, отже, діяти як він з усіма його дозволами. Наприклад: Зловживання getAccessToken для видачі себе за обліковий запис служби.
- Привілейоване підвищення на ресурсі: Це дозволить вам отримати більше дозволів над конкретним ресурсом. Наприклад: ви можете зловживати дозволом setIamPolicy над cloudfunctions, щоб дозволити собі викликати функцію.
- Зверніть увагу, що деякі дозволи ресурсів також дозволять вам прикріпити довільний обліковий запис служби до ресурсу. Це означає, що ви зможете запустити ресурс з SA, потрапити в ресурс і вкрасти токен SA. Отже, це дозволить підвищити привілей до принципу через ескалацію ресурсу. Це сталося в кількох ресурсах раніше, але тепер це трапляється рідше (але все ще може статися).
Очевидно, що найцікавіші техніки привілейованого підвищення - це техніки другої групи, оскільки вони дозволять вам отримати більше привілеїв поза ресурсами, над якими ви вже маєте деякі привілеї. Однак зверніть увагу, що ескалація в ресурсах може також надати вам доступ до чутливої інформації або навіть до інших принципів (можливо, через читання секрету, що містить токен SA).
warning
Важливо також зазначити, що в GCP облікові записи служб є як принципами, так і дозволами, тому підвищення привілеїв у SA також дозволить вам видавати себе за нього.
note
Дозволи в дужках вказують на дозволи, необхідні для експлуатації вразливості з gcloud
. Вони можуть не знадобитися, якщо експлуатувати через API.
Дозволи для методології привілейованого підвищення
Ось як я перевіряю конкретні дозволи для виконання конкретних дій у GCP.
- Завантажте репозиторій github https://github.com/carlospolop/gcp_privesc_scripts
- Додайте в 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 полягає в тому, щоб мати достатньо дозволів, щоб, так чи інакше, отримати доступ до привілеїв інших облікових записів/користувачів/груп. Ланцюгові ескалації, поки ви не отримаєте адміністративний доступ до організації.
warning
GCP має сотні (якщо не тисячі) дозволів, які можуть бути надані сутності. У цій книзі ви можете знайти всі дозволи, які я знаю, які ви можете зловживати для ескалації привілеїв, але якщо ви знаєте якийсь шлях, не згаданий тут, будь ласка, поділіться ним.
Підсторінки цього розділу впорядковані за службами. Ви можете знайти на кожній службі різні способи ескалації привілеїв на службах.
Зловживання GCP для ескалації привілеїв локально
Якщо ви знаходитесь всередині машини в GCP, ви можете зловживати дозволами для ескалації привілеїв навіть локально:
GCP - local privilege escalation ssh pivoting
Посилання
- https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/
- https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/
- https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.