挖洞经验 | 看我如何发现价值$3000美金的Facebook视频缩略图信息泄露漏洞
作者:admin | 时间:2018-6-21 02:01:29 | 分类:黑客技术 隐藏侧边栏展开侧边栏
本文我要分享的是我的一个$3000美金Facebook漏洞发现过程。在我决定对Facebook网站进行安全测试之后,我熟读了很多相关的漏洞发现writeup,发现Facebook对有效漏洞的赏金程度还算可观,于是乎,我就给自己制订了几个相关的Facebook网站目标,看看能否在其中发现一些有意思的问题,挖掘出实质性的漏洞来。
发现端倪
经过一些研究之后,一个名为Canvas的Facebook交互式广告功能引起了我的注意。基于这个功能,管理员和广告商都能申请创建自己的CANVAS广告内容,之后,还能对这个广告内容进行一些诸如图片和视频的上传插入等编辑操作。
Facebook Canvas是Facebook发布的具有交互式全屏广告的功能,它可以将图片、视频、文本和CTA按钮整合到一个单一的内容模式中,帮助企业设计出引人入胜的手机端内容体验。企业为特定产品建立一个迷你网站,网站内容包括幻灯片、图文信息和视频等。而移动端用户可以在不离开Facebook的前提下,通过简单的点击、滑动等操作来实现交流互动。
接着,我就马上创建了自己的一个CANVAS内容,并选定了一个视频片段进行了上传保存。之后,我开启了Burpsuite开始网络抓包,并对CANVAS内容的标题作了一个修改,想通过网络流量分析来探究一下这种编辑操作的具体运作机制。该修改请求如下:
POST /v2.11/{My_Page_ID}?access_token={My_page _Access _Token} HTTP/1.1
Host: graph.facebook.com
User-Agent:
Accept: */*
Accept-Language: en-US,en;q=0.5
Referer: https://www.facebook.com/
Content-type: application/x-www-form-urlencoded
Content-Length: 206
Origin: https://www.facebook.com
Connection: close
_reqName=object%3Acanvas_video&_reqSrc=AdsCanvasElementDataLoader&bottom_padding=0&locale=en_US&method=post&name=Video&pretty=0&style=FIT_TO_WIDTH&suppress_http_code=1&top_padding=0&video_id=956034724555363
可以看到,在以上消息中,存在一个名为video_id={id of video}的参数,它应该就是我上传保存的那个视频信息id了。看到这个参数后,我就觉得似乎有戏了。于是,我在虚拟机中登录了我的另一个Facebook CANVAS测试账号,我通过post方式上传了一个视频,然后抓包发现了这个对应的视频信息id号-video_id。
漏洞测试
我测试账号中的视频信息id为video-id=130146294495198,然后,我用这个video-id对之前在主机中测试发现的video_id=956034724555363进行了替换,然后,对它进行了一次post上传,哦….,竟然成功了!整个响应消息如下:
由于这种视频video-id号很容易获取,可以从Facebook中陌生人的公开视频,或是我朋友圈别人发的可见视频中来提取得到,这样也就是说,我可以用任意其它可获取到的video-id号来上传别人的视频。
现在,由于我主机和虚拟机中不同CANVAS账号上传的视频video-id号相同,并能通过video-id号成功上传,因此可以说,这个video-id号就是一个IDOR(不安全的对象引用)漏洞参数。那么我反过来想,那是不是我把主机CANVAS账号上的这个video-id号对应视频删除了,虚拟机中那个CANVAS账号上的视频也会被同时删除吗?试试看,这一试,不得了,竟然也能成功删除!
变换利用思路
哇,让我不知所措,现在我们再换种角度来考虑这个漏洞,要把这种思路进行最大化利用。第二天,我想到了Facebook的办公应用Workplace,由于Workplace App上的所有消息包括照片视频,都是有权限限制的,并不都是公开可见的,只有同一个公司且注册邮箱一致的成员好友才可见互相发的消息。
于是,我用我的Workplace测试账号发了一个视频朋友圈消息,想看看这种应用环境中的视频video_id号能否用于之前的CANVAS IDOR漏洞场景,经抓包测试我发现了这种Workplace下的视频上传video_id号:video_id=168712210608619,我二话不说就把它复制到了一开始对主机graph.facebook.com发起的CANVAS标题更改request消息中,之后,有了成功响应。此过程网络行为如下:
请求响应过程完成之后,我刷新了页面,并点击了预览选项,想看看能否浏览到我Workplace账号上发送的这条视频信息,遗憾的是我不能浏览这条视频内容,但是,我却发现了一个如下有意思的事情:
你可以看到,在上述图片两侧,都有一个不断转啊转的视频等待圈圈图标,这也就是说那条利用Workplace账号中video_id号上传的视频已经成功上传了,只是可能存在某种阻拦机制,暂时还不能预览它。好吧,那我就来想想办法是否能把这种阻拦机制绕过呢。
经过几分钟的考虑之后,在一支烟快要抽完之际,我想到了一个好方法,也就是在以下图片红色箭头标记处,可以看到,这有一个选项,这里的预览功能(Preview)写着“把这个CANVAS广告预览效果发送到智能手机上”:
于是我就把这个CANVAS广告预览效果发到我的手机上了,我的手机收到了一条提示:“Your canvas is ready to preview”,那就预览一下吧,咦,我就这样能在手机上看到那条上传的视频内容吗?哦,不,不能看到整个视频内容,只能看到几秒的一段视频缩略图效果。但不管了,也能说明一定程度的问题啊!
我把这个漏洞上报给Facebook的安全团队之后,由于这是一个有效漏洞,为什么呢?从我个人角度来说,Facebook 的Workplace App应用是专为企业和公司开发的,用于公司内部交流沟通的职场应用,由于Workplace上交流的消息可能涉及到一些公司企业内部消息、文章、通知等内容,而这种通过漏洞利用方式能看到其公司内部交流的视频缩略图也算是一种安全问题。就比如如果这种视频内容中包含了一些会议地点、私人邮箱,或一些涉及公司产品定价、预算、销售额等不该公众或其它公司可见的私密内容等,这就存在信息泄露风险了。
Workplace 是一个企业交流App,可帮助组织内的员工建立联系,加强员工之间的协作,提升组织业务成效。Workplace 拥有小组、搜索、档案、Workplace 聊天、动态消息、自动翻译和直播视频等功能。您可以创建 两种类型的 Workplace 帐户:Workplace 尊享版和 Workplace 标准版。使用 Workplace 可以创建不同于 Facebook 个人帐户的 Workplace 帐户
漏洞上报进程
2018.3.30 —漏洞初报
2018.4.5 — 漏洞分类
2018.4.10 — 漏洞修复
2018.4.10 — 漏洞修复确认
2018.5.3 — Facebook向我发放$3000美金
漏洞PoC
*参考来源:medium,FreeBuf 小编 clouds 编译,转自 FreeBuf