GCP - IAM Post Exploitation

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

IAM

You can find further information about IAM in:

GCP - IAM, Principals & Org Policies Enum

向管理控制台授予访问权限

GCP management console 的访问是授予用户账户,而非服务账户。要登录 Web 界面,你可以授予你控制的 Google 账户访问权限。这可以是一个通用的 “@gmail.com” 账户,它不必是目标组织的成员

但是,要将基础角色中的 Owner 授予 通用的 “@gmail.com” 账户,你需要使用 web 控制台gcloud 如果你尝试授予高于 Editor 的权限会报错。

你可以使用以下命令将某用户授予你现有项目的 基础角色 Editor

gcloud projects add-iam-policy-binding [PROJECT] --member user:[EMAIL] --role roles/editor

如果你在这里成功,尝试访问 web 界面并从那里进行探索。

这是你可以使用 gcloud 工具分配的最高级别

删除 IAM 组件 iam.*.delete

iam.*.delete 权限(例如 iam.roles.deleteiam.serviceAccountApiKeyBindings.deleteiam.serviceAccountKeys.delete 等)允许某个身份删除关键的 IAM 组件,例如自定义角色、API key bindings、service account keys,以及 service accounts 本身。在攻击者手中,这可以用来移除合法的访问机制,从而造成拒绝服务。

要实施这样的攻击,例如可以使用以下命令删除角色:

gcloud iam roles delete <ROLE_ID> --project=<PROJECT_ID>

iam.serviceAccountKeys.disable || iam.serviceAccounts.disable

iam.serviceAccountKeys.disableiam.serviceAccounts.disable 权限允许禁用活动的服务账号密钥或服务账号;攻击者获得这些权限后,可能用来中断操作、造成拒绝服务,或通过阻止合法凭证的使用来妨碍事件响应。

要禁用服务账号,可以使用以下命令:

gcloud iam service-accounts disable <SA_EMAIL> --project=<PROJECT_ID>

要禁用服务账户的密钥,可以使用以下命令:

gcloud iam service-accounts keys disable <KEY_ID> --iam-account=<SA_EMAIL>

iam.*.undelete

iam.*.undelete 权限允许恢复先前被删除的元素,例如 API 密钥绑定、自定义角色或服务账户。在攻击者手中,这可以用来撤销防御性操作(恢复被移除的访问权限)、重新建立已删除的入侵载体以维持持久性,或规避修复措施,从而增加事件遏制的难度。

gcloud iam service-accounts undelete "${SA_ID}" --project="${PROJECT}"

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks