GCP - Public Buckets Privilege Escalation
バケット権限昇格
バケットポリシーが“allUsers”または“allAuthenticatedUsers”にバケットポリシーへの書き込み(storage.buckets.setIamPolicy権限)を許可している場合、誰でもバケットポリシーを変更して自分に完全なアクセス権を付与することができます。
権限の確認
バケットに対する権限を確認する方法は2つあります。1つ目は、https://www.googleapis.com/storage/v1/b/BUCKET_NAME/iam
にリクエストを送るか、gsutil iam get gs://BUCKET_NAME
を実行することで、それらを求めることです。
しかし、あなたのユーザー("allUsers"または"allAuthenticatedUsers"に属している可能性があります)がバケットのiamポリシーを読む権限(storage.buckets.getIamPolicy)を持っていない場合、それは機能しません。
常に機能するもう一つのオプションは、指定された権限を持っているかどうかを判断するために、バケットのtestPermissionsエンドポイントを使用することです。例えば、次のURLにアクセスします: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
権限昇格
Google StorageのCLIプログラムである“gsutil”を使用して、以下のコマンドを実行し、“allAuthenticatedUsers”に“Storage Admin”ロールへのアクセスを付与し、私たちがバケットに付与された権限を昇格させることができます:
LegacyBucketOwnerからStorage Adminへの権限昇格の主な魅力の一つは、「storage.buckets.delete」権限を使用できるようになることです。理論的には、権限を昇格した後にバケットを削除し、その名前を盗むために自分のアカウントでバケットを作成することができます。
参考文献
最終更新