GCP - Compute Privesc
Compute
Pour plus d'informations sur Compute et VPC (réseau) dans GCP, consultez :
pageGCP - Compute Enumcompute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
Avec cette autorisation, 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 une connexion 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 s'exécutant dans les instances VM ont par défaut une portée très limitée
Vous devrez être en mesure de contacter le serveur SSH pour vous connecter
Pour plus d'informations sur l'exploitation de cette autorisation, consultez :
pageGCP - Add Custom SSH Metadatacompute.instances.setMetadata
compute.instances.setMetadata
Cette autorisation confère les mêmes privilèges que l'autorisation précédente mais sur des instances spécifiques plutôt que sur l'ensemble d'un projet. Les mêmes exploits et limitations que pour la section précédente s'appliquent.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Ce type d'autorisation vous permettra de vous accorder un rôle avec les autorisations précédentes et d'escalader les privilèges en les abusant.
compute.instances.osLogin
compute.instances.osLogin
Si OSLogin est activé dans l'instance, avec cette autorisation, 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.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Si OSLogin est activé dans l'instance, avec cette autorisation, 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.
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
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 attribué et de voler le jeton du compte de service en accédant aux métadonnées pour escalader les privilèges vers celui-ci.
Le script d'exploitation pour cette méthode peut être trouvé ici.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Si vous avez les autorisations osconfig.patchDeployments.create
ou osconfig.patchJobs.exec
, vous pouvez créer un job ou déploiement de correctif. Cela vous permettra de vous déplacer latéralement dans l'environnement et d'exécuter du code sur toutes les instances de calcul dans un projet.
Si vous souhaitez exploiter manuellement cela, vous devrez créer soit un job de correctif soit un déploiement pour un job de correctif exécuter :
gcloud compute os-config patch-jobs execute --file=patch.json
Pour déployer un déploiement de correctif :
gcloud compute os-config patch-deployments create my-update --file=patch.json
Des outils automatisés tels que patchy existent pour détecter les autorisations laxistes et se déplacer automatiquement latéralement.
Vous pouvez également abuser de cela pour la persistance.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Accordez-vous des autorisations supplémentaires pour l'image Compute.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Accordez-vous des autorisations supplémentaires pour un instantané de disque.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Accordez-vous des autorisations supplémentaires pour un disque.
Contourner les étendues d'accès
En suivant ce lien, vous trouverez quelques idées pour essayer de contourner les étendues d'accès.
Élévation de privilèges locale dans une instance Compute GCP
pageGCP - local privilege escalation ssh pivotingRéférences
Dernière mise à jour