# GCP - パブリックバケットの特権昇格

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

## バケットの特権昇格

バケットポリシーが「allUsers」または「allAuthenticatedUsers」に**バケットポリシーへの書き込みを許可している場合**（**storage.buckets.setIamPolicy**権限）、誰でもバケットポリシーを変更し、自分に完全なアクセス権を付与できます。

### 権限の確認

バケットに対する権限を確認する方法は2つあります。最初の方法は、`https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam`にリクエストを送信するか、`gsutil iam get gs://BUCKET_NAME`を実行して権限を要求することです。

ただし、ユーザー（潜在的にallUsersまたはallAuthenticatedUsersに属する）がバケットのiamポリシーを読み取る権限（storage.buckets.getIamPolicy）を持っていない場合、これは機能しません。

常に機能する別のオプションは、バケットのtestPermissionsエンドポイントを使用して、指定された権限を持っているかどうかを確認することです。例えば、次のようにアクセスします：`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`

### 昇格

`allAuthenticatedUsers`に`Storage Admin`を付与するには、次のコマンドを実行することができます：
```bash
gsutil iam ch allAuthenticatedUsers:admin gs://BUCKET_NAME
```
別の攻撃は、**バケットを削除して自分のアカウントに再作成し、所有権を奪う**ことです。

## 参考文献

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