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)
Вивчайте та практикуйте Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перегляньте the subscription plans!
- Приєднуйтесь до 💬 Discord group або до telegram group або стежте за нами в Twitter 🐦 @hacktricks_live.
- Діліться hacking tricks, надсилаючи PRs до HackTricks та HackTricks Cloud github repos.
У цьому сценарії припустимо, що ви скомпрометували обліковий запис без привілеїв всередині 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://hacktricks-training.com/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://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Вивчайте та практикуйте Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Підтримайте HackTricks</summary>
>
> - Перегляньте the [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Приєднуйтесь до** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) або до [**telegram group**](https://t.me/peass) або **стежте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Діліться hacking tricks, надсилаючи PRs до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

