GCP - Public Buckets Privilege Escalation

Support HackTricks

Escalação de Privilégios em Buckets

Se a política do bucket permitir que “allUsers” ou “allAuthenticatedUsers” escrevam em sua política de bucket (a permissão storage.buckets.setIamPolicy), então qualquer um pode modificar a política do bucket e conceder a si mesmo acesso total.

Verificando Permissões

Existem 2 maneiras de verificar as permissões sobre um bucket. A primeira é solicitá-las fazendo uma requisição para https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam ou executando gsutil iam get gs://BUCKET_NAME.

No entanto, se seu usuário (potencialmente pertencente a "allUsers" ou "allAuthenticatedUsers") não tiver permissões para ler a política iam do bucket (storage.buckets.getIamPolicy), isso não funcionará.

A outra opção que sempre funcionará é usar o endpoint testPermissions do bucket para descobrir se você tem a permissão especificada, por exemplo, acessando: 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 conceder Storage Admin a allAuthenticatedUsers, é possível executar:

gsutil iam ch allAuthenticatedUsers:admin gs://BUCKET_NAME

Outro ataque seria remover o bucket e recriá-lo na sua conta para roubar a propriedade.

Referências

Support HackTricks

Last updated