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
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
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:
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:
- compute.instances.osLogin
- compute.instances.osAdminLogin
- compute.projects.setCommonInstanceMetadata
- compute.instances.setMetadata
- compute.instances.setIamPolicy
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>
HackTricks Cloud

