GCP - Public Buckets Privilege Escalation
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:
Otro ataque sería eliminar el bucket y recrearlo en tu cuenta para robar la propiedad.
Referencias
Last updated