GCP - local privilege escalation ssh pivoting

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir 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 et pratiquez le hacking AWS :<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;">\
> Apprenez et pratiquez le hacking GCP : <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;">
> Apprenez et pratiquez le hacking Azure : <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>Soutenir HackTricks</summary>
>
> - Vérifiez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
> - **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Partagez des astuces de hacking en soumettant des PR au** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
>
> </details>