泄露所有用户的Google Drive文件
大家好!好久不见。我决定写一些新的博客文章,介绍我多年来在Google发现的一些顶级漏洞。我希望在接下来的几周里,继续撰写更多这样的文章,作为一个系列,所以请保持关注。
在这篇新文章中,我将写一个几年前的有趣发现,它允许你获取其他用户的Google Drive文件访问权限。对于那些不知道的人,Google Drive是一个文件共享服务,你可以上传Word文档、PDF文件或任何文件,并与其他用户共享。如果文件是私有的或不打算与你共享,你会收到一个访问被拒绝的错误。
今天,我将展示如何在不被授予访问权限的情况下,获取其他人的Google Drive文件访问权限:)。
在开始之前,我想说这个问题已经修复,Google VRP为此支付了不错的奖金:D。
POC:
在开始介绍这个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 ID。
- 提交作业,你现在将能够访问他们的整个Google Drive文件并获得所有权。
就是这样:) 这里还有一个视频:
注意音乐,因为Google VRP喜欢音乐,所以我通常会添加它。
如果你有任何问题,请随时在X上联系我: Cam (@SecretlyHidden1) / X