GCP - local privilege escalation ssh pivoting

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

w tym scenariuszu załóżmy, że skompromitowałeś konto bez uprawnień wewnątrz VM w projekcie Compute Engine.

Zadziwiająco, GPC permissions of the compute engine you have compromised may help you to escalate privileges locally inside a machine. Nawet jeśli nie zawsze będzie to bardzo przydatne w środowisku cloud, dobrze wiedzieć, że jest to możliwe.

Read the scripts

Compute Instances prawdopodobnie są tam po to, by execute some scripts wykonywać akcje używając swoich service accounts.

Ponieważ IAM jest bardzo granularne, konto może mieć uprawnienia read/write do zasobu, ale no list privileges.

Świetnym hipotetycznym przykładem jest Compute Instance, które ma permission do read/write backupów w storage bucket o nazwie instance82736-long-term-xyz-archive-0332893.

Uruchomienie gsutil ls z linii poleceń nic nie zwróci, ponieważ service account nie posiada IAM permission storage.buckets.list. Jednak jeśli uruchomisz gsutil ls gs://instance82736-long-term-xyz-archive-0332893 możesz znaleźć kompletną kopię systemu plików, dając dostęp w clear-text do danych, do których twoje lokalne konto Linux nie ma dostępu.

Możesz znaleźć tę nazwę bucketu wewnątrz skryptu (w bash, Python, Ruby…).

Custom Metadata

Administratorzy mogą dodać custom metadata na poziomie instance i project level. To po prostu sposób na przekazanie dowolnych par klucz/wartość do instancji, i jest powszechnie używane do zmiennych środowiskowych oraz startup/shutdown scripts.

Co więcej, możliwe jest dodanie userdata, czyli skryptu, który będzie executed everytime maszyna jest uruchamiana lub restartowana i który może być accessed from the metadata endpoint also.

For more info check:

Cloud SSRF - HackTricks

Abusing IAM permissions

Większość z poniższych proponowanych uprawnień jest przypisywana domyślnemu Compute SA, jedynym problemem jest to, że domyślny access scope uniemożliwia SA ich użycie. Jednak jeśli włączony jest cloud-platform scope lub tylko compute scope, będziesz w stanie abuse them.

Check the following permissions:

Search for Keys in the filesystem

Sprawdź, czy inni użytkownicy nie logowali się do gcloud wewnątrz boxa i nie zostawili swoich credentials w systemie plików:

Szukaj gcloud credentials w systemie plików ``` sudo find / -name "gcloud" ```

Oto najbardziej interesujące pliki:

  • ~/.config/gcloud/credentials.db
  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json
  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto
  • ~/.credentials.json

Więcej API Keys regexes

Wzorce grep dla 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>

## Źródła

- [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]
> Ucz się & ćwicz 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;">\
> Ucz się & ćwicz 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;">\
> Ucz się & ćwicz 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>Wspieraj HackTricks</summary>
>
> - Sprawdź [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Dołącz do** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) lub [**telegram group**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Podziel się hacking tricks, zgłaszając PRy do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>