GCP - local privilege escalation ssh pivoting

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

dans ce scĂ©nario nous allons supposer que vous avez compromis un compte non privilĂ©giĂ© Ă  l’intĂ©rieur d’une VM dans un projet Compute Engine.

Étonnamment, les permissions GCP de la Compute Engine que vous avez compromise peuvent vous aider Ă  escalate privileges locally inside a machine. MĂȘme si cela n’est pas toujours trĂšs utile dans un environnement cloud, c’est bon de savoir que c’est possible.

Lire les scripts

Compute Instances sont probablement lĂ  pour exĂ©cuter certains scripts afin d’effectuer des actions avec leurs service accounts.

Comme IAM devient granulaire, un compte peut avoir des privilĂšges read/write sur une ressource mais no list privileges.

Un excellent exemple hypothétique est une Compute Instance qui a la permission de lire/écrire des backups dans un storage bucket appelé instance82736-long-term-xyz-archive-0332893.

ExĂ©cuter gsutil ls depuis la ligne de commande ne retourne rien, car le service account n’a pas la permission IAM storage.buckets.list. Cependant, si vous lancez gsutil ls gs://instance82736-long-term-xyz-archive-0332893 vous pouvez trouver une sauvegarde complĂšte du systĂšme de fichiers, vous donnant un accĂšs en clair Ă  des donnĂ©es que votre compte Linux local n’a pas.

Vous pouvez retrouver ce nom de bucket Ă  l’intĂ©rieur d’un script (bash, Python, Ruby
).

Custom Metadata

Les administrateurs peuvent ajouter custom metadata au niveau de l’instance et du project level. C’est simplement un moyen de transmettre des paires clĂ©/valeur arbitraires dans une instance, et c’est couramment utilisĂ© pour des variables d’environnement et des scripts de dĂ©marrage/arrĂȘt.

De plus, il est possible d’ajouter du userdata, qui est un script qui sera exĂ©cutĂ© Ă  chaque dĂ©marrage de la machine et qui peut aussi ĂȘtre accessible depuis le metadata endpoint.

Pour plus d’infos check:

Cloud SSRF - HackTricks

Abusing IAM permissions

La plupart des permissions suivantes sont donnĂ©es au Compute SA par dĂ©faut, le seul problĂšme est que le default access scope empĂȘche le SA de les utiliser. Cependant, si le cloud-platform scope est activĂ© ou si seul le compute scope est activĂ©, vous serez en mesure de les abuser.

Check the following permissions:

Rechercher des clés dans le systÚme de fichiers

VĂ©rifiez si d’autres utilisateurs se sont connectĂ©s avec gcloud sur la machine et ont laissĂ© leurs identifiants dans le systĂšme de fichiers :

Rechercher les identifiants gcloud dans le systĂšme de fichiers ``` sudo find / -name "gcloud" ```

Voici les fichiers les plus intéressants :

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

Autres regex pour les clés API

Patrons grep pour les identifiants et clés GCP ```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éférences

- [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]
> Apprenez & pratiquez 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;">\
> Apprenez & pratiquez 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;">\
> Apprenez & pratiquez 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>Soutenez HackTricks</summary>
>
> - Consultez les [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Rejoignez le** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ou le [**telegram group**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐩 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Partagez des hacking tricks en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>