GCP - Public Buckets Privilege Escalation
バケットの特権昇格
バケットポリシーが「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エンドポイントを使用して、指定された権限を持っているかどうかを確認することです。例えば、次の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
昇格
allAuthenticatedUsers
にStorage Admin
を付与するには、次のコマンドを実行することが可能です:
別の攻撃は、バケットを削除して自分のアカウントに再作成し、所有権を盗むことです。
参考文献
Last updated