序言

Facebook 和它的主打产品运用 Instagram全是把相片/视頻储存在Facebook本身的CDN网络服务器 “*.fbcdn.net” 或 “*.cdninstagram” 以上,随后,再根据其每个子CDN网站域名网站出示对于恳求的內容缓存文件派发服务。文中中创作者共享的是一个对于Facebook CDN网络服务器的XSS系统漏洞,运用该系统漏洞能够绕开连接中的校检体制,随意实行JS编码。

序言

Facebook储存在CDN网络服务器上的照片视频,都会本身浏览连接中包括了一个HASH串,这一HASH串目地取决于对Facebook本身储存的照片或视頻具有一个签字校检的维护功效,且其HASH串全是以像 ‘oh’ 或 ‘oe’ 那样的2个英文字母主要参数来取值的。
沧州建站公司的优势

https://instagram.fpnq2-1.fna.fbcdn.net/v/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.jpg?_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F

进行剩下84%

https://instagram.fpnq2-1.fna.fbcdn.net/v/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.jpg?_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F

假如大家把其文档文件格式做下变更,如把.jpg改成.html,那麼毫无疑问,网络服务器浏览便会错误。

因此,我一刚开始的念头便是,是不是能够把这类连接中的过剩主要参数除掉,让它简单化一下变成下列那样呢:

https://instagram.fpnq2-1.fna.fbcdn.net/12494762_1700832180174667_9131300789175210564_n.jpg

https://instagram.fpnq2-1.fna.fbcdn.net/12494762_1700832180174667_9131300789175210564_n.jpg

但这的确有点儿想自然了,恳求响应是: “Access Denied”。在历经一番科学研究以后,我寻找了能对于全部照片视频,绕开其连接中HASH串签字校检的方式,即便客户提交的一些照片视頻相匹配的连接是到期“expired”情况,我一样能够从Facebook CDN网络服务器中浏览到他们。

系统漏洞发觉

https://instagram.fpnq2-1.fna.fbcdn.net/v/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.jpg?_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F

https://instagram.fpnq2-1.fna.fbcdn.net/v/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.jpg?_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F

观查之上URL,在这其中,最先是存有一个主要参数”/v/”,用于限定当今URL是不是能浏览事后的HASH串,可是删掉 “/v/” 这一主要参数后依然会回到不正确:“Access Denied”。之后,我觉得假如让它跨域浏览又怎样呢,例如说,instagram.fpnq2-1.fna.fbcdn.net存有一某些名纪录(CNAME)以下:

instagram.fpnq2-1.fna.fbcdn.net. 3599 IN CNAME scontent.xx.fbcdn.net.

instagram.fpnq2-1.fna.fbcdn.net. 3599 IN CNAME scontent.xx.fbcdn.net.

换句话说,假如把恳求instagram.fpnq2-1.fna.fbcdn.net的照片连接中的CDN网络服务器换为scontent.xx.fbcdn.net,那会如何呢?在我简易的来看,这2个不一样的二级域名网站虽同属一个CDN根网络服务器,但这类一更换将会也不会存有一些跨域的校检限定了。

我一试,除去 “/v/”主要参数,除去HASH校检串_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F以后,居然能够浏览到总体目标照片!Boom!

那麼这般来说,能否变更浏览照片的后缀名文件格式了呢?例如说,大家在提交照片里加入一些js脚本制作,随后把它改成.html,不就可以完成Payload实行了没有?也或是可以把提交的照片改成”.html/.svg” 或 ”.php“呢。试一下一下吧。

PoC

做以下检测,大家融合Burp抓包软件,在提交照片里加入一个带XSS Payload的外部链接.js脚本制作,能够取得成功提交到instagram.fpnq2-1.fna.fbcdn.net的网络服务器上,随后,获得到网络服务器上当受骗前提交照片的实际浏览连接,把照片.jpg文件格式改成.html文件格式,就可以取得成功完成js脚本制作中的XSS Payload运作。这儿我采用的带XSS Payload的外部链接.js为:

https://amolbaikar/wp/js/instagram.js

https://amolbaikar/wp/js/instagram.js

也便是,获取到当今提交到CDN网络服务器中照片的实际浏览连接:

https://instagram.fpnq2-1.fna.fbcdn.net/v/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.jpg?_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F

https://instagram.fpnq2-1.fna.fbcdn.net/v/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.jpg?_nc_cat=0 oh=cb7024e12c863937b69c3d6c15589697 oe=5B31E89F

随后,把它变更为简单化后除去 “/v/”主要参数、除去HASH校检串,且为instagram.fpnq2-1.fna.fbcdn.net 别称scontent.xx.fbcdn.net ,但照片名字 12494762_1700832180174667_9131300789175210564_n 一样,但把.jpg文件格式变更为.html文件格式,实际的浏览连接以下:

https://scontent.xx.fbcdn.net/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.html

https://scontent.xx.fbcdn.net/t51.2885-15/12494762_1700832180174667_9131300789175210564_n.html

因为在其中添加了带XSS Payload的外部链接.js,在html文档的分析实行下,能够取得成功开启Payload。认证视頻以下:

小结

因为Facebook沒有考虑到“校检签字”绕开或其他“数据信息泄漏”难题的比较严重性,且没把根据CDN网络服务器浏览到照片或视頻初始连接的难题考虑到以内,(点此参照其他剖析文章内容),因而,导致了它本应是內部的数据信息,从而变为了公布的內容。

进攻者运用该系统漏洞能够在Facebook CDN网络服务器上实行随意JS编码,好在有沙盒游戏安全防护体制,其不可以载入客户的cookies/session信息内容,但运用在具体的进攻情景中,该系统漏洞能够绕开Facebook的连接信用黑名单系统软件 Linkshim,也可以用实际上施垂钓个人行为。

系统漏洞汇报过程

2018.3.8: 系统漏洞初报

2018.3.10: 系统漏洞确定

2018.3.23: 系统漏洞修补

2018.3.28:Facebook官方网$1500赏金派发

2018.3.8: 系统漏洞初报

2018.3.10: 系统漏洞确定

2018.3.23: 系统漏洞修补

2018.3.28:Facebook官方网$1500赏金派发

*参照来源于:amolbaikar,clouds编译程序,转截请标明来源于FreeBuf.COM

挖洞工作经验

序言 Facebook 和它的主打产品运用 Instagram全是把相片/视頻储存在Facebook本身的CDN网络服务器 “*.fbcdn.net” 或 “*.cdninstagram” 以上,随后,再根据其每个子CDN网站域名网站出示对于恳求的


预约挂号



扫描二维码分享到微信