GCP - KMS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
KMSに関する情報:
KMSでは、権限はOrg、フォルダ、プロジェクトからだけでなく、キーリングからも継承されることに注意してください。
cloudkms.cryptoKeyVersions.useToDecrypt
この権限を使用して、あなたがこの権限を持つキーで情報を復号化することができます。
cloudkms.cryptoKeys.setIamPolicy
この権限を持つ攻撃者は、自分自身に権限を与えて 情報を復号化するためにキーを使用することができます。
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
この委任がどのように機能するかの概念的な内訳は次のとおりです:
サービスアカウントA は、KMS内の特定のキーを使用して復号化する直接的なアクセス権を持っています。
サービスアカウントB は useToDecryptViaDelegation
権限を付与されます。これにより、サービスアカウントAの代わりにKMSにデータの復号化を要求することができます。
この権限の使用は、復号化リクエストが行われる際のKMSサービスの権限チェックの方法に暗黙的に含まれています。
Google Cloud KMS API(Pythonや他の言語で)を使用して標準の復号化リクエストを行うと、サービスはリクエストを行っているサービスアカウントが必要な権限を持っているかどうかを確認します。リクエストが**useToDecryptViaDelegation
** 権限を持つサービスアカウントによって行われた場合、KMSはこのアカウントがキーを所有するエンティティの代わりに復号化を要求することを許可されているかどうかを確認します。
カスタムロールの定義: カスタムロールを定義するYAMLファイル(例:custom_role.yaml
)を作成します。このファイルには cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
権限が含まれている必要があります。このファイルの例は次のようになります:
gcloud CLIを使用してカスタムロールを作成する: 次のコマンドを使用して、Google Cloudプロジェクトにカスタムロールを作成します:
[YOUR_PROJECT_ID]
をあなたの Google Cloud プロジェクト ID に置き換えます。
カスタムロールをサービスアカウントに付与する: この権限を使用するサービスアカウントにカスタムロールを割り当てます。次のコマンドを使用します:
[YOUR_PROJECT_ID]
と [SERVICE_ACCOUNT_EMAIL]
をそれぞれあなたのプロジェクトIDとサービスアカウントのメールに置き換えてください。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)