# GCP - Escalade de privilèges des buckets publics

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

## Escalade de privilèges des buckets

Si la politique du bucket permet à "allUsers" ou "allAuthenticatedUsers" de **modifier leur politique de bucket** (la permission **storage.buckets.setIamPolicy**), alors n'importe qui peut modifier la politique du bucket et se donner un accès complet.

### Vérifier les permissions

Il y a 2 façons de vérifier les permissions sur un bucket. La première consiste à les demander en faisant une requête à `https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam` ou en exécutant `gsutil iam get gs://BUCKET_NAME`.

Cependant, si votre utilisateur (appartenant potentiellement à "allUsers" ou "allAuthenticatedUsers") n'a pas les permissions pour lire la politique iam du bucket (storage.buckets.getIamPolicy), cela ne fonctionnera pas.

L'autre option qui fonctionnera toujours est d'utiliser le point de terminaison testPermissions du bucket pour déterminer si vous avez la permission spécifiée, par exemple en accédant à : `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`

### Escalade

Pour accorder `Storage Admin` à `allAuthenticatedUsers`, il est possible d'exécuter :
```bash
gsutil iam ch allAuthenticatedUsers:admin gs://BUCKET_NAME
```
Une autre attaque consisterait à **supprimer le bucket et à le recréer dans votre compte pour voler la propriété**.

## Références

- [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}}
