泄露所有用户的Google Drive文件
大家好!好久不见。我决定撰写一系列关于我过去几年在Google漏洞挖掘中的重大发现。希望在未来几周持续更新这个系列,敬请关注。
本篇将介绍几年前我发现的一个有趣漏洞,该漏洞允许攻击者获取其他用户Google Drive文件的访问权限。Google Drive是文件共享服务,用户可上传Word文档、PDF等文件并共享。若文件为私有状态,未授权用户会收到访问拒绝错误。
今天我将展示如何在不被授权的情况下访问他人Google Drive文件。
需要声明的是,该漏洞已被修复,Google VRP项目支付了丰厚奖金。
漏洞验证
在讲解漏洞细节前,需先了解Google Classroom背景。Google Classroom是为教师/学生提供的在线协作平台(classroom.google.com),教师可发布公告、作业、批改论文等。
当教师发布作业后,学生会在提交页面看到如下界面: (图示:学生提交作业页面)
学生提交作业时可附加文件,例如将Google Drive文档附加至作业后点击提交。
关键问题出现在此处:当学生提交作业时,Google Classroom会将提交文档的所有权转移给班级教师(这是必要的,否则教师无法批阅)。
学生添加Google Drive文件时的API请求示例:
|
|
注意其中的值:"1h8tReWm8Cp6bsv24BwMlimFrJ3w1d7sdpxYHfUr1rgw",这是学生提交的Google Drive文件ID。系统未对附件文件所有权进行RBAC校验。
但初步测试发现,直接修改ID无法获取文件访问权限,看似RBAC校验有效。
绕过方案
进一步测试后发现:将目标用户添加为Google Classroom成员后,即可通过上述请求完全访问其Google Drive文件。
完整攻击流程:
- 创建Google Classroom,将目标用户添加为班级成员(学生/教师),并创建作业
- 添加受控账户作为学生加入班级
- 以学生账户提交作业时,修改API请求中的Google Drive文件ID为目标用户的文件ID:
|
|
- 提交作业后即可获得目标用户Google Drive文件的完全访问权限
漏洞演示视频:(含背景音乐,因Google VRP偏好音乐演示)
如有疑问欢迎通过X平台联系:Cam (@SecretlyHidden1) / X