GCP - Public Buckets Privilege Escalation

Apoya a HackTricks

Escalación de Privilegios en Buckets

Si la política del bucket permitía a “allUsers” o “allAuthenticatedUsers” escribir en su política de bucket (el permiso storage.buckets.setIamPolicy), entonces cualquiera puede modificar la política del bucket y otorgarse acceso total.

Verificar Permisos

Hay 2 formas de verificar los permisos sobre un bucket. La primera es solicitarlos haciendo una petición a https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam o ejecutando gsutil iam get gs://BUCKET_NAME.

Sin embargo, si tu usuario (potencialmente perteneciente a "allUsers" o "allAuthenticatedUsers") no tiene permisos para leer la política iam del bucket (storage.buckets.getIamPolicy), eso no funcionará.

La otra opción que siempre funcionará es usar el endpoint testPermissions del bucket para averiguar si tienes el permiso especificado, por ejemplo accediendo 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

Escalando

Para otorgar Storage Admin a allAuthenticatedUsers es posible ejecutar:

gsutil iam ch allAuthenticatedUsers:admin gs://BUCKET_NAME

Otro ataque sería eliminar el bucket y recrearlo en tu cuenta para robar la propiedad.

Referencias

Support HackTricks

Last updated