GCP - Compute Privesc
Compute
Per ulteriori informazioni su Compute e VPC (rete) in GCP controlla:
GCP - Compute EnumNota che per eseguire tutti gli attacchi di escalation dei privilegi che richiedono di modificare i metadati dell'istanza (come aggiungere nuovi utenti e chiavi SSH) è necessario avere permessi actAs
sul SA allegato all'istanza, anche se il SA è già allegato!
compute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
Con quel permesso puoi modificare le informazioni di metadati di un'istanza e cambiare le chiavi autorizzate di un utente, o creare un nuovo utente con permessi sudo. Pertanto, sarai in grado di eseguire via SSH in qualsiasi istanza VM e rubare l'Account di Servizio GCP con cui l'istanza sta funzionando. Limitazioni:
Nota che gli Account di Servizio GCP in esecuzione nelle istanze VM per impostazione predefinita hanno un ambito molto limitato
Dovrai essere in grado di contattare il server SSH per accedere
Per ulteriori informazioni su come sfruttare questo permesso controlla:
GCP - Add Custom SSH MetadataPuoi anche eseguire questo attacco aggiungendo un nuovo script di avvio e riavviando l'istanza:
compute.instances.setMetadata
compute.instances.setMetadata
Questo permesso fornisce i stessi privilegi del permesso precedente ma su istanze specifiche invece che su un intero progetto. Gli stessi exploit e limitazioni della sezione precedente si applicano.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Questo tipo di permesso ti permetterà di assegnare a te stesso un ruolo con i permessi precedenti e di elevare i privilegi abusando di essi.
compute.instances.osLogin
compute.instances.osLogin
Se OSLogin è abilitato nell'istanza, con questo permesso puoi semplicemente eseguire gcloud compute ssh [INSTANCE]
e connetterti all'istanza. Non avrai privilegi di root all'interno dell'istanza.
Per effettuare correttamente il login con questo permesso all'interno dell'istanza VM, devi avere il permesso iam.serviceAccounts.actAs
sul SA associato alla VM.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Se OSLogin è abilitato nell'istanza, con questo permesso puoi semplicemente eseguire gcloud compute ssh [INSTANCE]
e connetterti all'istanza. Avrai privilegi di root all'interno dell'istanza.
Per effettuare correttamente il login con questo permesso all'interno dell'istanza VM, devi avere il permesso iam.serviceAccounts.actAs
sul SA associato alla 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
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
È possibile creare una macchina virtuale con un Service Account assegnato e rubare il token dell'account di servizio accedendo ai metadati per elevare i privilegi su di esso.
Lo script di exploit per questo metodo può essere trovato qui.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Se hai i permessi osconfig.patchDeployments.create
o osconfig.patchJobs.exec
puoi creare un lavoro di patch o distribuzione. Questo ti permetterà di muoverti lateralmente nell'ambiente e ottenere l'esecuzione di codice su tutte le istanze di calcolo all'interno di un progetto.
Nota che al momento non hai bisogno del permesso actAs
sul SA associato all'istanza.
Se vuoi sfruttare manualmente questo, dovrai creare o un lavoro di patch o distribuzione. Per un lavoro di patch esegui:
Per distribuire un'implementazione di patch:
Lo strumento patchy potrebbe essere stato utilizzato in passato per sfruttare questa misconfigurazione (ma ora non funziona).
Un attaccante potrebbe anche abusare di questo per la persistenza.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Concediti permessi extra per l'immagine di calcolo.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Concediti permessi extra per uno snapshot del disco.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Concediti permessi extra per un disco.
Bypass Access Scopes
Seguendo questo link troverai alcune idee per provare a bypassare gli access scopes.
Local Privilege Escalation in GCP Compute instance
GCP - local privilege escalation ssh pivotingReferences
Last updated