# GCP - Escalation dei Privilegi dei Bucket Pubblici

{{#include ../../../../banners/hacktricks-training.md}}

## Escalation dei Privilegi dei Bucket

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

### Controllare i Permessi

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 i permessi per leggere la politica 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`

### Escalation

Per concedere `Storage Admin` a `allAuthenticatedUsers` è possibile eseguire:
```bash
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

- [https://rhinosecuritylabs.com/gcp/google-cloud-platform-gcp-bucket-enumeration/](https://rhinosecuritylabs.com/gcp/google-cloud-platform-gcp-bucket-enumeration/)

{{#include ../../../../banners/hacktricks-training.md}}
