泄露所有用户的Google Drive文件
大家好!好久不见。我决定撰写新的博客文章,分享我多年来在Google发现的一些顶级安全漏洞。我希望在未来几周内持续撰写这个系列文章,敬请关注。
这篇新文章将介绍我几年前发现的一个有趣漏洞,该漏洞允许你获取其他用户Google Drive文件的访问权限。对于不了解的人来说,Google Drive是一项文件共享服务,用户可以上传Word文档、PDF文件或任何类型的文件,并与其他用户共享。如果文件是私有的或不应与你共享,你将收到访问被拒绝的错误。
今天,我将展示如何在不被授权的情况下获取他人Google Drive文件的访问权限:)。
在开始之前,我需要说明该问题已被修复,并且Google VRP为此支付了丰厚的奖金 :D。
概念验证
在开始介绍这个POC之前,我需要简要说明一下Google Classroom的背景。对于不了解的人来说,Google Classroom是Google为教师/学生提供的服务,用于在类似课堂的环境中协作。你可以在classroom.google.com找到它,其工作方式是教师可以发布公告、作业、评分等。
当教师在Google Classroom上发布作业时,学生会收到一个向教师提交作业的页面。例如,该页面如下所示:
学生将看到上述页面,向课堂的教师提交作业以供评分。
在提交作业时,学生能够将文件附加到作业中。假设学生需要附加他们为课程撰写的论文。他们会将Google Drive DOC附加到作业中并点击提交。
问题就在这里出现了。
当学生向教师提交作业时,Google Classroom有一个流程,会授予课堂教师对提交文档的所有权。这是必要的,因为显然教师需要能够在学生提交后阅读文档。
当学生实际将Google Drive文件添加到他们的作业时,会运行以下API请求:
|
|
如果我们仔细看,可以看到这个值:
"1h8tReWm8Cp6bsv24BwMlimFrJ3w1d7sdpxYHfUr1rgw"
这是学生Google Drive文件的ID,例如为作业提交的文件。没有适当的RBAC检查来验证你是否实际拥有附加到作业的Google Drive文件。
所以现在我们知道我们可以将任何Google Drive文件附加到我们的作业中,但Google Classroom后端会授予我文件的访问权限吗?
在最初的测试中,它没有授予我访问权限。因此,当时我认为RBAC检查工作正常,如果有什么问题,也更多是UI方面的问题。当我在上述请求中更改ID时,我无法获得我其他帐户的Google Drive文件的访问权限。
绕过方法?
经过进一步挖掘,有一个绕过方法完全有效。如果你将目标用户添加为你的Google Classroom的学生/教师,那么你现在就可以使用上述请求完全获得他们的Google Drive文件的完全访问权限。
流程如下:
- 将目标用户添加为你的Google Classroom的用户,并在课堂中创建一个作业。
- 将你控制的另一个帐户作为学生添加到课堂,并登录该帐户。
- 以你登录的学生帐户提交作业,并修改此请求:
|
|
并将你在步骤1中添加的课堂中目标用户的Google Drive的ID放入。
- 提交作业,你现在将能够访问他们的整个Google Drive文件并获得其所有权。
就是这样 :) 这里还有一个视频:
音乐请多包涵,因为Google VRP喜欢音乐,所以我通常会添加它。
如果你有任何问题,请随时在X上联系我: Cam (@SecretlyHidden1) / X