有一天,我收到了Google的一封邮件,是一封关于漏洞奖励计划的邮件,其中包含了一个我从未见过的系统” Richmedia Studio”,一个活动营销管理系统。让我们看看他到底安不安全。
挑战一:
你是无法”偶然”发现这个系统的。如果你没有配置你的账号来使用这个系统,你就看不到这个系统,连认证页面都看不到,你就会被重定向到别的页面。这也是我虽然一直在搜索Google的系统,但从来看到过这个系统的原因。
如果你想访问这个系统,你首先要先填个表单,然后如果Google授权了的话,你会收到一封邮件,邀请你访问这个系统。欢迎你来到Richmedia。

背景
从我个人的理解,Richmedia平台是用于管理在线营销广告活动的的。角色管理系统允许管理员创建新的活动并将媒体上传到这些活动(HTML页面,视频,图像等媒体)。然后,管理员可以授予不同的广告客户访问该广告系列的权限,以及通过质量检查(均通过权限进行管理),发表评论等来运行它。由于我不太了解营销活动的流程,因此我确定在简短的描述中,我们不评价这个平台做的事情。
第一个漏洞:访问其他用户的媒体资料$500
我先看了媒体上传功能,我以为这个系统和google其他的系统的上传机制一样,上传到用户的google driver里,然后通过一个长的随机的ID googleusercontent来展示出来。但是这个不一样。Richmedia这个系统,文件会被上传到另一个域, “s0.2mdn.net”,链接大概长这个样子,
https://s0.2mdn.net/preview/CgkIARCom4rX5i4SGQCkoPPIITT873VA4lA-bButtVLChPwsXnU/ads/richmedia/studio/60019864/60019864_20201004010909357_xsspng.png
文件被放在单独的域里,如何认证成了问题(当然其实有很多方法)。事实上,访问这个文件并没有要求认证。但是这个链接很复杂,不可能去爆破或猜测。但是 然我们回到这个链接,”preview”参数吸引了我。这个链接是文件的真实存放地址吗?还是只是从这个链接生成一个预览图。
我又上传了另一个文件,然后仔细观察了网络请求。我找到了一个链接,这个链接简单多了。
http://s0.2mdn.net/ads/richmedia/studio/pv2/61580927/20201004040915088/xsspng.png
这个链接可以无认证直接访问,而且攻击者可以很容易生成出来。(前8位是商家ID,然后是日期,和短的随机数)。
这样我们就可以访问任意的媒体文件。我报告给了Google,Google给了我$500赏金。
漏洞2:访问其他人的活动($5000)
说实话,这个漏洞很简单。如果你够回看的话,你会看到我之前提到的角色管理系统。事实上,你不通过QA面板就可以创建一个账户。而且如果你创建了一个账号,这个QA面板会看起来有一些不一样。
Admin面板:


我知道你在想啥。Google太擅长于处理模糊不清的安全问题了。如果我使用受限账号访问QA,他绝对不会正常工作,对吧。
但是总的试试。结果出人意料。

我不仅仅可以看到我的活动,我可以看到所有人的活动。我报告了这个给Google,Google给了我$5000赏金。
漏洞3:GWT
Google Richmedia studio在他们的API上使用GWT。这篇文章里https://www.komodosec.com/post/google-groups-authorization-bypass阐述了GWT认证的问题,所以我想在这里故技重施以下。
我决定重新再重新再看一下文件上传的点,这次我关注于GWT请求。我观察了去获取下载链接的HTTP请求。我注意到了HTTP POST body里很奇怪的地方。
7|0|8|https://www.google.com/doubleclick/studio/gwt/|9DB073B0A4AFE75F8679003264944EE5|com.google.ads.api.gwt.rpc.client.BatchedInvocationService|invoke|com.google.ads.api.gwt.rpc.client.BatchedInvocationRequest/2983766987|com.google.ads.richmedia.studio.ui.common.grubby.client.BatchedInvocationRequestHeaderImpl/3117963532|java.util.ArrayList/4159755760|com.google.ads.richmedia.studio.service.CreativeServiceGwt$GetDownloadArchiveUrlRequest/1562479252|1|2|3|4|1|5|5|6|0|7|1|8|DlQXE|DlQWU|
如果您以前从未看过GWT,那么这样的机构可能会令人生畏,但如果您研究该协议,则很容易破译。最后的这两个字符串' DlQXE '和' DlQWU '引起了我的注意-它们似乎是指示我实际上要访问的文件的字符串。在系统中四处寻找,很明显,这些字符串实际上是代表系统中特定活动的ID。
我想您会看到现在的情况-我以其他用户身份登录并获得了另一对ID。然后,我尝试将此ID与第一个用户cookie一起使用-并能够获取第二个用户文件的URL链接。由于这些字符串很短,我认为猜测起来很容易。我运行了一个快速脚本来猜测外观相似的ID,并迅速找到了更多有效的ID,这些ID指向了更多属于其他用户的文件。
我把这个漏洞报告给Google,他们给了我$500美元。
译者按:
作者通过填写申请表单,来获取营销系统的访问权限,进而测试并发现了一些漏洞。即使像Google这么注重安全的公司,在这种需要授权的系统上也漏洞百出。译者在这里有一个疑问,像大厂对外公开的系统,肯定会经过内部测试的嘛,但是像这种需要申请才能使用的系统,会经过完整的安全测试嘛?
本文迁移自知识星球“火线Zone”