GCP - local privilege escalation ssh pivoting
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.
У цьому сценарії припустимо, що ви скомпрометували обліковий запис без привілеїв всередині VM у проєкті Compute Engine.
Дивовижно, що дозволи GCP для Compute Engine, який ви скомпрометували, можуть допомогти вам ескалувати привілеї локально всередині машини. Навіть якщо це не завжди буде дуже корисно в хмарному середовищі, добре знати, що це можливо.
Read the scripts
Compute Instances ймовірно призначені для виконання скриптів, які виконують дії від імені їх service accounts.
Оскільки IAM дозволяє тонке налаштування, обліковий запис може мати read/write привілеї над ресурсом, але не мати привілеїв list.
Добрим гіпотетичним прикладом є Compute Instance, який має дозвіл читати/записувати резервні копії в storage bucket з назвою instance82736-long-term-xyz-archive-0332893.
Запуск gsutil ls з командного рядка нічого не поверне, оскільки service account не має IAM-дозволу storage.buckets.list. Однак якщо виконати gsutil ls gs://instance82736-long-term-xyz-archive-0332893, ви можете знайти повну резервну копію файлової системи, що дає вам доступ до даних у відкритому вигляді, до яких ваш локальний Linux-обліковий запис не має доступу.
Ви можете знайти цю назву bucket всередині скрипта (bash, Python, Ruby…).
Custom Metadata
Адміністратори можуть додавати custom metadata на рівні instance і project level. Це простий спосіб передати довільні пари ключ/значення в інстанс, і зазвичай використовується для змінних середовища та startup/shutdown скриптів.
Крім того, можливо додати userdata — скрипт, який буде виконуватися щоразу, коли машина запускається або перезапускається, і який також можна отримати через metadata endpoint.
For more info check:
Abusing IAM permissions
Більшість наведених нижче дозволів надаються default Compute SA, проблема лише в тому, що default access scope перешкоджає SA їх використовувати. Однак, якщо ввімкнено cloud-platform scope або лише compute scope, ви зможете ними зловживати.
Check the following permissions:
- compute.instances.osLogin
- compute.instances.osAdminLogin
- compute.projects.setCommonInstanceMetadata
- compute.instances.setMetadata
- compute.instances.setIamPolicy
Пошук ключів у файловій системі
Перевірте, чи інші користувачі виконували gcloud на машині та не залишили свої облікові дані у файловій системі:
Пошук облікових даних gcloud у файловій системі
``` sudo find / -name "gcloud" ```Найбільш цікаві файли:
~/.config/gcloud/credentials.db~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto~/.credentials.json
Більше регулярних виразів для API-ключів
Grep patterns for GCP credentials and keys
```bash TARGET_DIR="/path/to/whatever"Service account keys
grep -Pzr “(?s){[^{}]?service_account[^{}]?private_key.*?}”
“$TARGET_DIR”
Legacy GCP creds
grep -Pzr “(?s){[^{}]?client_id[^{}]?client_secret.*?}”
“$TARGET_DIR”
Google API keys
grep -Pr “AIza[a-zA-Z0-9\-_]{35}”
“$TARGET_DIR”
Google OAuth tokens
grep -Pr “ya29.[a-zA-Z0-9_-]{100,200}”
“$TARGET_DIR”
Generic SSH keys
grep -Pzr “(?s)—–BEGIN[ A-Z]?PRIVATE KEY[a-zA-Z0-9/+=\n-]?END[ A-Z]*?PRIVATE KEY—–”
“$TARGET_DIR”
Signed storage URLs
grep -Pir “storage.googleapis.com.*?Goog-Signature=[a-f0-9]+”
“$TARGET_DIR”
Signed policy documents in HTML
grep -Pzr ‘(?s)<form action.?googleapis.com.?name=“signature” value=“.*?”>’
“$TARGET_DIR”
</details>
## Посилання
- [https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/](https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/)
> [!TIP]
> Вивчайте та практикуйте AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Вивчайте та практикуйте GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Вивчайте та практикуйте Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Підтримка HackTricks</summary>
>
> - Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
> - **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
>
> </details>
HackTricks Cloud

