GWS - Google Platforms Phishing

支持 HackTricks

通用钓鱼方法论

Google 群组钓鱼

显然,默认情况下,在工作区成员 可以创建群组 并邀请人们加入。然后,您可以修改将发送给用户的电子邮件 添加一些链接。电子邮件将来自 Google 地址,因此看起来 合法,人们可能会点击链接。

还可以将 发件人 地址设置为 Google 群组电子邮件,以向 群组内的用户发送更多电子邮件,如以下图像所示,其中创建了群组 google--support@googlegroups.com 并向该群组的所有成员发送了 电子邮件(这些成员是在没有任何同意的情况下添加的)

Google Chat 钓鱼

您可能能够仅通过拥有某人的电子邮件地址 开始聊天 或发送 邀请进行对话。此外,可以 创建一个空间,可以有任何名称(例如“Google 支持”)并 邀请 成员加入。如果他们接受,他们可能会认为自己正在与 Google 支持进行对话:

然而,在我的测试中,被邀请的成员甚至没有收到邀请。

您可以查看过去如何运作: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Google 文档钓鱼

过去,可以创建一个 看似合法的文档,并在评论中 提到某个电子邮件(如 @user@gmail.com)。Google 向该电子邮件地址发送了一封电子邮件,通知他们在文档中被提到。 如今,这不再有效,但如果您 给予受害者电子邮件访问文档的权限,Google 将发送一封电子邮件指示如此。这是提到某人的时候出现的消息:

受害者可能有保护机制,不允许指示与他们共享外部文档的电子邮件到达他们的邮箱。

Google 日历钓鱼

您可以 创建日历事件,并添加尽可能多的您攻击的公司的电子邮件地址。将此日历事件安排在 当前时间的 5 或 15 分钟 内。使事件看起来合法,并 添加评论和标题,指示他们需要阅读某些内容(带有 钓鱼链接)。

这是浏览器中将出现的警报,会议标题为“解雇员工”,因此您可以设置一个更具钓鱼性质的标题(甚至更改与您的电子邮件关联的名称)。

为了使其看起来不那么可疑:

  • 设置为 接收者无法看到其他被邀请的人

  • 不要发送通知事件的电子邮件。然后,人们只会看到他们关于 5 分钟后会议的警告,以及他们需要阅读该链接。

  • 显然,使用 API,您可以将 人们接受 事件设置为 True,甚至可以代表他们创建 评论

应用脚本重定向钓鱼

可以在 https://script.google.com/ 创建一个脚本,并 将其公开为所有人可访问的网络应用程序,将使用合法域名 script.google.com。 使用以下代码,攻击者可以使脚本在此页面加载任意内容,而不停止访问该域:

function doGet() {
return HtmlService.createHtmlOutput('<meta http-equiv="refresh" content="0;url=https://cloud.hacktricks.xyz/pentesting-cloud/workspace-security/gws-google-platforms-phishing#app-scripts-redirect-phishing">')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

例如访问 https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec 你将看到:

请注意,当内容在 iframe 中加载时,会出现警告。

应用脚本 OAuth 钓鱼

可以创建附加到文档的应用脚本,以尝试获取受害者的 OAuth 令牌,更多信息请查看:

GWS - App Scripts

OAuth 应用钓鱼

之前的任何技术都可以用来让用户访问一个 Google OAuth 应用,该应用将 请求 用户一些 访问权限。如果用户 信任来源,他可能会 信任应用(即使它请求高权限)。

请注意,Google 在多种情况下会显示一个丑陋的提示,警告该应用不受信任,Workspace 管理员甚至可以阻止用户接受 OAuth 应用。

Google 允许创建可以 代表用户与多个 Google 服务 交互的应用:Gmail、Drive、GCP...

在创建一个 代表其他用户操作 的应用时,开发者需要在 GCP 中创建一个 OAuth 应用 并指明该应用需要访问用户数据的范围(权限)。 当 用户 想要 使用应用 时,他们将被 提示 接受 该应用将访问其在范围中指定的数据。

这是一种非常诱人的方式来 钓鱼 非技术用户使用 访问敏感信息的应用,因为他们可能不理解后果。然而,在组织账户中,有方法可以防止这种情况发生。

未验证应用提示

如前所述,Google 将始终向用户呈现一个 提示以接受 他们代表应用授予的权限。然而,如果该应用被认为是 危险的,Google 将 首先 显示一个 提示,指示它是 危险的,并 使用户更难 授予该应用权限。

此提示出现在以下应用中:

  • 使用任何可以访问私人数据的范围(Gmail、Drive、GCP、BigQuery...)

  • 用户少于 100 的应用(用户超过 100 的应用也需要审核流程以停止显示未验证提示)

有趣的范围

这里 你可以找到所有 Google OAuth 范围的列表。

  • cloud-platform:查看和管理您在 Google Cloud Platform 服务中的数据。您可以在 GCP 中冒充用户。

  • admin.directory.user.readonly:查看和下载您组织的 GSuite 目录。获取所有用户的姓名、电话、日历 URL。

创建 OAuth 应用

开始创建 OAuth 客户端 ID

  1. 然后,系统会询问 用户类型内部(仅限您组织中的人员)还是 外部。选择适合您需求的选项

  • 如果您已经入侵了组织中的用户并且正在创建此应用以钓鱼另一个用户,内部可能会很有趣。

  1. 给应用命名,提供 支持电子邮件(请注意,您可以设置一个 Google 群组电子邮件以尝试更匿名),一个 徽标授权域 和另一个用于 更新电子邮件

  2. 选择 OAuth 范围

  • 此页面分为非敏感权限、敏感权限和受限权限。每次添加新权限时,它会被添加到其类别中。根据请求的权限,用户将看到不同的提示,指示这些权限的敏感性。

  • admin.directory.user.readonlycloud-platform 都是敏感权限。

  1. 添加测试用户。只要应用的状态是测试,只有这些用户能够访问该应用,因此请确保 添加您要钓鱼的电子邮件

现在让我们使用 之前创建的 OAuth 客户端 ID 获取 Web 应用的凭据

  1. 返回 https://console.cloud.google.com/apis/credentials/oauthclient,这次会出现不同的选项。

  2. 选择 为 Web 应用创建凭据

  3. 设置所需的 Javascript 来源重定向 URI

  • 您可以在两者中设置类似 http://localhost:8000/callback 的内容进行测试

  1. 获取您的应用 凭据

最后,让我们 运行一个将使用 OAuth 应用凭据的 Web 应用。您可以在 https://github.com/carlospolop/gcp_oauth_phishing_example 找到一个示例。

git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"

前往 http://localhost:8000 点击“使用 Google 登录”按钮,您将会看到类似于以下的提示信息:

该应用程序将显示 访问和刷新令牌,可以轻松使用。有关 如何使用这些令牌的更多信息,请查看

GCP - Non-svc Persistance

使用 glcoud

可以使用 gcloud 而不是网页控制台来执行某些操作,请查看:

GCP - ClientAuthConfig Privesc

参考资料

支持 HackTricks

Last updated