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
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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:
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:
- compute.instances.osLogin
- compute.instances.osAdminLogin
- compute.projects.setCommonInstanceMetadata
- compute.instances.setMetadata
- compute.instances.setIamPolicy
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>
HackTricks Cloud

