GWS - App Scripts
App Scripts
App Scripts 是 当具有编辑权限的用户访问与 App Script 关联的文档时触发的代码,并在 接受 OAuth 提示后。 它们也可以由 App Script 的所有者设置为 每隔一定时间执行(持久性)。
创建 App Script
创建 App Script 有几种方法,最常见的是 从 Google 文档(任何类型) 和作为 独立项目:
App Script 场景
使用 App Script 创建 Google 表格
首先创建一个 App Script,我对这个场景的建议是创建一个 Google 表格并转到 扩展 > App Scripts
,这将为你打开一个 与表格关联的新 App Script。
泄露令牌
为了提供对 OAuth 令牌的访问,你需要点击 服务 +
并添加范围,例如:
AdminDirectory:访问目录中的用户和组(如果用户具有足够的权限)
Gmail:访问 Gmail 数据
Drive:访问 Drive 数据
Google Sheets API:以便与触发器一起工作
要自行更改 所需的范围,你可以转到项目设置并启用:在编辑器中显示 "appsscript.json" 清单文件
。
要捕获请求,您只需运行:
权限请求以执行应用脚本:
由于发出了外部请求,OAuth 提示也将请求访问外部端点的权限。
创建触发器
一旦应用被读取,点击⏰ 触发器以创建触发器。作为函数选择**getToken
,在部署中选择Head
,在事件源中选择From spreadsheet
,在事件类型中选择On open
或On edit
**(根据您的需要)并保存。
请注意,如果您想调试某些内容,可以在执行选项卡中检查应用脚本的运行情况。
共享
为了触发****应用脚本,受害者需要以编辑者访问连接。
用于执行应用脚本的令牌将是触发器创建者的令牌,即使文件被其他用户以编辑者身份打开。
滥用与我共享的文档
如果有人与您共享了一个带有应用脚本和使用应用脚本的 Head 的触发器的文档(而不是固定部署),您可以修改应用脚本代码(例如添加窃取令牌的功能),访问它,并且应用脚本将以与您共享文档的用户的权限执行! (请注意,所有者的 OAuth 令牌将具有在创建触发器时给予的访问范围)。
将向脚本的创建者发送通知,指示有人修改了脚本(使用 Gmail 权限生成过滤器以防止警报怎么样?)
如果攻击者修改了应用脚本的范围,更新不会应用于文档,直到创建一个带有更改的新触发器。因此,攻击者将无法窃取比他在创建的触发器中设置的范围更多的所有者创建者令牌。
复制而不是共享
当您创建一个共享文档的链接时,会创建一个类似于以下的链接:https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
如果您将结尾的**"/edit"更改为"/copy",而不是访问它,谷歌会询问您是否想要生成文档的副本:**
如果用户复制并访问它,文档的内容和应用脚本将被复制,但是触发器不会,因此不会执行任何操作。
作为 Web 应用程序共享
请注意,将应用脚本作为 Web 应用程序共享也是可能的(在应用脚本的编辑器中,部署为 Web 应用程序),但会出现如下警报:
随后是典型的 OAuth 提示,请求所需的权限。
测试
您可以测试收集到的令牌以列出电子邮件:
列出用户的日历:
App Script 作为持久性
一个持久性的选项是创建一个文档并为 getToken 函数添加触发器,并与攻击者共享该文档,这样每次攻击者打开文件时,他就会提取受害者的令牌。
还可以创建一个 App Script,并使其每 X 时间(如每分钟、每小时、每天)触发。一个已获取受害者凭据或会话的攻击者可以设置一个 App Script 时间触发器,并每天泄露一个非常特权的 OAuth 令牌:
只需创建一个 App Script,转到触发器,点击添加触发器,选择事件源为时间驱动,并选择最适合您的选项:
这将创建一个安全警报电子邮件和一条推送消息到您的手机,提醒您此事。
共享文档未验证提示绕过
此外,如果有人与您共享了一个编辑访问权限的文档,您可以在文档中生成App Scripts,而文档的所有者(创建者)将是 App Script 的所有者。
这意味着,文档的创建者将显示为任何具有编辑访问权限的人在其中创建的任何 App Script 的创建者。
这也意味着App Script 将被文档创建者的 Workspace 环境信任。
这也意味着,如果App Script 已经存在并且人们已授予访问权限,那么任何具有编辑权限的人都可以修改它并滥用该访问权限。
要滥用这一点,您还需要人们触发 App Script。而一个巧妙的技巧是将脚本发布为网络应用。当已经授予App Script 访问权限的人访问网页时,他们将触发 App Script**(这也可以使用 <img>
标签实现)。
Last updated