谷歌广告越权获取Youtube私享视频图像帧分析


谷歌广告越权获取Youtube私享视频图像帧分析
文章图片
本文通过谷歌广告中的视频制作功能 , 作者发现了Youtube私享(Private)视频图像帧的越权获取漏洞 , 利用该漏洞可以获取知晓视频ID号的任意Youtube私享(Private)视频的所有图像帧 , 从而可完整拼凑出整个视频图像信息 。 漏洞最终获得了谷歌官方$5k的奖励 。
漏洞测试2019年底的时候 , 我参与了YouTube的漏洞众测 , 在此过程中我尝试去测试对他人未授权视频的获取 。 当用户上传视频到YouTube时 , 可以对上传视频选择三种隐私权限 。 公开(Public)-即任何人可以发现并观看该视频;不公开(Unlisted)-只有知晓该视频ID或URL链接的用户才能观看该视频;私享(Private)-只有上传者自己或是其他授权者才能观看该视频 。
首先 , 我用我的第二个Youtube账户进行了视频上传 , 并把该视频权限设置为私享(Private) , 然后以该视频为对象进行测试 。 如果我用我另一个Youtube账户获取到该视频 , 那么 , 漏洞就存在了 。
然后 , 我登录了我的第一个Youtube账户 , 对上传视频流程相关的功能进行了反复测试 , 之后 , 我发现了一个包含视频ID(videoID)HTTP请求 , 此时我的直观思路就是能否把该视频ID替换成另一个账户中上传的私享视频ID , 这样看看会有什么反应?但一番操作后完全不行 。 Youtube主站点会对请求中的视频执行权限检查 , 因此 , 最后的响应一直返回’Thisvideoisprivate’ 。
因此 , 这里需要转变一下思路 。 可以这样想想 , 看看是否有其它产品/服务是否会从内部去调用YouTube视频 , 或者说与YouTube上传的视频有交互关系 。 如果有 , 那么在其中的机制中可能会有一些脆弱性环节 。 之后 , 我发现了一个有意思的服务平台-GoogleAds(谷歌广告) , 广告商可以通过该平台使用包括YouTube在内的等多种谷歌服务来创建广告页面 。
漏洞线索发现接下来 , 我就创建了一个GoogleAds(谷歌广告)账户 , 它将播放我的一个视频 , 作为YouTube用户的可跳过广告 。 在该广告的制作过程当中 , 我还是用之前上传的私享视频做为测试目标 , 但是几经尝试 , 还是没能发现可利用的线索 。 广告制作完成后 , 我看了一下GoogleAds的各种功能 , 发现它当中的功能非常全面 , 为此我着重看了一下它其中与YouTube相当的功能 。
GoogleAds中有一个叫Videos的页面 , 从中可以看到广告用到的相关视频列表 。 当点击其中的某个视频时 , 会打开一个针对该视频的特定分析(Analytics)功能 。 广告制作者可以通过该分析功能中内嵌的播放器、数据和一个叫Moments(片刻)的有意思功能 , 了解广告视频的点击情况 , 并可通过其Moments(片刻)功能标记视频 , 设置某些广告Logo的出现时间等 。
【谷歌广告越权获取Youtube私享视频图像帧分析】当我标记视频的时候 , 从burp抓包流量中发现了以下包含视频ID的请求包:
POST/aw_video/_/rpc/VideoMomentService/GetThumbnailsHTTP/1.1Host:ads.google.comUser-Agent:Internet-Explorer-6Cookie:[redacted]__ar={"1":"kCTeqs1F4ME","2":"12240","3":"387719230