GCP - Understanding Domain-Wide Delegation
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
这篇文章是 https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover 的介绍,更多细节请访问该链接。
Google Workspace 的域范围委托允许身份对象,无论是来自 Google Workspace Marketplace 的 外部应用 还是内部的 GCP 服务账户,代表用户访问 Workspace 中的数据。这个功能对于与 Google API 或需要用户模拟的服务交互的应用至关重要,通过自动化任务提高效率并减少人为错误。使用 OAuth 2.0,应用开发者和管理员可以在不需要单个用户同意的情况下,授予这些服务账户访问用户数据的权限。 Google Workspace 允许创建两种主要类型的全局委托对象身份:
GWS 应用程序: 来自 Workspace Marketplace 的应用程序可以设置为委托身份。在进入市场之前,每个 Workspace 应用程序都经过 Google 的审核,以减少潜在的滥用。虽然这并不能完全消除滥用的风险,但显著增加了此类事件发生的难度。
GCP 服务账户: 了解更多关于 GCP 服务账户的信息。
这就是 GCP 服务账户如何代表 Google Workspace 中的其他身份访问 Google API 的方式:
身份创建 JWT: 身份使用服务账户的私钥(JSON 密钥对文件的一部分)来签署 JWT。此 JWT 包含有关服务账户、要模拟的目标用户以及请求的 REST API 的 OAuth 访问范围的声明。
身份使用 JWT 请求访问令牌: 应用程序/用户使用 JWT 向 Google 的 OAuth 2.0 服务请求访问令牌。请求还包括要模拟的目标用户(用户的 Workspace 电子邮件)和请求访问的范围。
Google 的 OAuth 2.0 服务返回访问令牌: 访问令牌代表服务账户在指定范围内代表用户行事的权限。此令牌通常是短期有效的,必须定期刷新(根据应用程序的需要)。理解 JWT 令牌中指定的 OAuth 范围对结果访问令牌的有效性和影响至关重要。例如,拥有多个范围的访问令牌将在多个 REST API 应用程序中保持有效。
身份使用访问令牌调用 Google API: 现在有了相关的访问令牌,服务可以访问所需的 REST API。应用程序在其发送到 Google API 的 HTTP 请求的 "Authorization" 头中使用此访问令牌。这些 API 使用令牌来验证被模拟的身份并确认其拥有必要的授权。
Google API 返回请求的数据: 如果访问令牌有效且服务账户具有适当的授权,Google API 将返回请求的数据。例如,在下图中,我们利用 users.messages.list 方法列出了与目标 Workspace 用户关联的所有 Gmail 消息 ID。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)