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

У цьому сценарії припустимо, що ви скомпрометували обліковий запис без привілеїв всередині 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:

Cloud SSRF - HackTricks

Abusing IAM permissions

Більшість наведених нижче дозволів надаються default Compute SA, проблема лише в тому, що default access scope перешкоджає SA їх використовувати. Однак, якщо ввімкнено cloud-platform scope або лише compute scope, ви зможете ними зловживати.

Check the following permissions:

Пошук ключів у файловій системі

Перевірте, чи інші користувачі виконували 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>