GCP - Public Buckets Privilege Escalation

Support HackTricks

Buckets Privilege Escalation

Se la policy del bucket consente a “allUsers” o “allAuthenticatedUsers” di scrivere nella loro policy del bucket (il permesso storage.buckets.setIamPolicy), allora chiunque può modificare la policy del bucket e concedersi accesso completo.

Check Permissions

Ci sono 2 modi per controllare i permessi su un bucket. Il primo è richiederli facendo una richiesta a https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam o eseguendo gsutil iam get gs://BUCKET_NAME.

Tuttavia, se il tuo utente (potenzialmente appartenente a "allUsers" o "allAuthenticatedUsers") non ha permessi per leggere la policy iam del bucket (storage.buckets.getIamPolicy), questo non funzionerà.

L'altra opzione che funzionerà sempre è utilizzare l'endpoint testPermissions del bucket per capire se hai il permesso specificato, ad esempio accedendo a: https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam/testPermissions?permissions=storage.buckets.delete&permissions=storage.buckets.get&permissions=storage.buckets.getIamPolicy&permissions=storage.buckets.setIamPolicy&permissions=storage.buckets.update&permissions=storage.objects.create&permissions=storage.objects.delete&permissions=storage.objects.get&permissions=storage.objects.list&permissions=storage.objects.update

Escalating

Per concedere Storage Admin a allAuthenticatedUsers è possibile eseguire:

gsutil iam ch allAuthenticatedUsers:admin gs://BUCKET_NAME

Un altro attacco sarebbe rimuovere il bucket e ricrearlo nel tuo account per rubarne la proprietà.

Riferimenti

Support HackTricks

Last updated