泄露所有用户的Google Drive文件
大家好!好久不见。我决定撰写一系列关于我多年来在Google发现的重要安全漏洞的博客文章。希望在未来几周内持续更新这个系列,敬请关注。
本篇将介绍几年前我发现的一个有趣漏洞,该漏洞允许攻击者获取其他用户Google Drive文件的访问权限。Google Drive是一项文件共享服务,用户可上传Word文档、PDF等各类文件并与其他用户共享。若文件为私有或未共享给当前用户,访问时将显示"拒绝访问"错误。
今天我将展示如何在不被授权的情况下访问他人的Google Drive文件。需要说明的是,该漏洞已被修复,Google漏洞奖励计划为此支付了丰厚奖金。
漏洞复现
在开始之前,需要先了解Google Classroom的背景。Google Classroom是面向教师/学生的协作平台(访问地址classroom.google.com),教师可在其中发布公告、作业、批改论文等。
当教师发布作业后,学生会在提交页面看到如下界面: (图示:学生提交作业的页面)
学生提交作业时可附加文件,例如将Google Drive中的文档附加后点击提交。此时漏洞开始显现。
当学生向教师提交作业时,Google Classroom会将提交文档的所有权转移给班级教师(这是合理的设计,便于教师批阅)。学生添加Google Drive文件时实际发送的API请求如下:
|
|
关键参数"1h8tReWm8Cp6bsv24BwMlimFrJ3w1d7sdpxYHfUr1rgw"
是所提交Google Drive文件的ID。系统未对文件所有权进行严格的RBAC(基于角色的访问控制)验证。
虽然可修改请求中的文件ID,但初步测试并未成功获得访问权限,当时误以为RBAC检查有效。真正的绕过方法在于:将目标用户添加为Google Classroom的成员后,漏洞即可完全利用。
完整攻击流程:
- 创建Google Classroom班级,将目标用户添加为成员(学生/教师均可),并在班级中创建作业
- 将自己控制的另一个账号添加为班级学生并登录
- 以学生身份提交作业时,修改API请求中的Google Drive文件ID为目标用户的文件ID
- 提交作业后即可获得目标文件的完全访问权限
(附漏洞演示视频)
如有疑问欢迎通过X平台联系:Cam (@SecretlyHidden1) / X