GCP - KMS Privesc
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
关于 KMS 的信息:
GCP - KMS Enum请注意,在 KMS 中,权限不仅从组织、文件夹和项目继承,还从密钥环继承。
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 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)