79

挖洞经验 | 从Youtube的视频ID和频道ID中发现漏洞

 4 years ago
source link: https://www.tuicool.com/articles/uuInYfF
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ENB7Rzm.jpg!web

大家好,今天分享这篇Writeup是关于Youtube的两个漏洞,确切来说,是Youtube Studio平台( https://studio.youtube.com/ )漏洞。作者通过其中涉及的视频id和频道id,从而可以对任意Youtube视频进行属性修改,并获取到相关用户的私享频道视频。

Youtube Studio平台 是全新的创作中心,用户可以在上面轻松管理YouTube帐号、上传视频、推动频道发展并与观众互动,该平台具备多种炫酷功能,包括查看视频分析数据、更改社区和频道相关设置以及批量视频更新等。

一、更改任意Youtube视频的设置信息

当访问Youtube Studio主页,可以看到左边有一列菜单栏,其中有一个名为“视频(Videos)”的菜单,点击它之后,会跳出Youtub上所有你上传或编辑过的视频,如下:

FZ7nae7.jpg!web

如果你是一名视频制作者,想一次对所有视频做个批量修改,比如,在视频描述中添加合作者链接,在标题中添加标签或把视频设置为私有等等。那么,这里有一个功能可以实现这种操作。首先,选中你要编辑的视频,然后在视频栏上方黑色区域会出现一条工具栏(toolbar),在“修改”按钮下有“标题”、“说明”、“标签”、“公开范围”、“评论”等属性可待修改,按照不同类别选定修改后,在右边会出现一个“更新(UPDATE VIDEOS)”按钮,点击即可完成视频属性更改。

i2IZNjm.jpg!web

当点击这个“更新(UPDATE VIDEOS)”按钮之后,便会触发一个发送到Youtube服务器的POST请求: https://studio.youtube.com/youtubei/v1/creator/enqueue_creator_bulk_action

请求主体为JSON格式代码,该JSON内容包括各种视频属性和配置参数,但是在其中有一个参数引起了我的注意,那就是名为“videos”的参数,它由一个包含视频id的videoIds数组表示,如下:

IFf6z2u.jpg!web

分析一番之后,我发现没有任何验证或保护措施来保证这些视频id确实与用户实际发起更改的视频相对应,也就是说,我可以通过更改这些视频id来实现对任意Youtube视频的属性更改。

该漏洞影响还是相对较大的,比如我可以把一些频道的视频设置为私有,间接关闭掉该频道,造成视频无法公开被观看,导致粉丝流失。当然,也还可以在某些流行视频的说明中加入某些内容或链接,实现宣传某些网站或产品的目的。另外,某些投机份子甚至会在一些高点击量视频中加入与自己账户对应的“打赏”功能,来赚取零花钱。以下就是该漏洞的一个POC验证:

(需要视频嵌入): https://www.youtube.com/watch?v=6djwHzcZMM0

漏洞上报进程

 2018.11.11   漏洞上报
 2018.11.12  漏洞分类 – 被评定为好洞“Nice catch”
 2018.11.13  漏洞奖励
 2018.11.13  漏洞修复

二、获取任意Youtube用户私享播放资源列表

这是一个逻辑漏洞,因为攻击者可以通过它来获取目标Youtube用户未列出的播放资源列表。任何时候,当Youtube用户想在Studio平台中编辑发布某个视频时,需要点击该视频,之后会跳出一个发布编辑窗口,如下:

2U7bYfy.jpg!web

当该窗口打开时,会在后台发起一个请求Youtube Studio服务的POST请求: https://studio.youtube.com/youtubei/v1/creator/list_creator_playlists endpoint

如其链接所表达的意思,它会提取出当前视频对应的登录用户信息,该请求的作用在于,从其对应的编辑窗口充实播放列表的相关信息。

另外,该请求也是一个JSON格式,其中包含了频道名称对应的channelId参数,它表示当前编辑视频对应的频道。经过研究,我发现在这个channelId参数数值与用户身份之间,Youtube也未做必要的验证措施。

R736733.jpg!web

通过Youtube返回的响应消息我发现,当某个频道满足一个条件:只有PUBLIC(公开)和UNLISTED(私享)两种播放列表时,我们就能利用该漏洞获取到它所有的播放列表资源。

q2mErqy.jpg!web

如果目标Youtube用户满足上述条件,攻击者可以利用该漏洞获取到任意Youtube用户的任何私享视频(Unlisted),由于私享视频不会出现在YouTube搜索结果或频道网页中,只有获得链接的用户才能观看,所以这个漏洞算是一个涉及隐私的漏洞。(YouTube为用户提供了第三种视频隐私选项“unlisted”,方便用户私下与好友分享视频。隐私选项被设置为“unlisted”的视频不会出现在YouTube搜索结果、频道网页或用户档案中,只有获得链接的用户才能观看“unlisted”视频。)

漏洞上报进程

 2018.11.12   漏洞上报
 2018.11.13   漏洞分类
 2018.11.14   被评定为好洞“Nice catch”
 2018.11.30   漏洞奖励
 2018.12.12   漏洞修复

总结

在我的Hacking Google经历中,我尝试着对不同功能点进行了安全分析,其中也学到了很多经验,这两个漏洞仅当分享,希望大家都能有所收获。

*参考来源: medium ,clouds编译整理,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK