GCP - Public Buckets Privilege Escalation
Escalación de Privilegios en Buckets
Si la política del bucket permite que "allUsers" o "allAuthenticatedUsers" escriban en su política de bucket (el permiso storage.buckets.setIamPolicy), entonces cualquiera puede modificar la política del bucket y otorgarse acceso completo.
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 utilizar 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
Con el programa CLI de Google Storage "gsutil", podemos ejecutar el siguiente comando para otorgar a "allAuthenticatedUsers" acceso al rol de "Storage Admin", escalando así los privilegios que nos fueron otorgados al bucket:
Uno de los principales atractivos para escalar de LegacyBucketOwner a Storage Admin es la capacidad de usar el privilegio "storage.buckets.delete". En teoría, podrías eliminar el bucket después de escalar tus privilegios, luego podrías crear el bucket en tu propia cuenta para robar el nombre.
Referencias
Última actualización