欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Facebook Clickjacking分析

来源: 作者: 时间:2019-02-24 19:29 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

研究人员首先发现一个Facebook中一个非常讨厌的垃圾邮件活动,许多好友都发布了位于AWS bucket上的链接。该链接是一个有许多笑话的法国网站,这样的网站谁不会点呢?

其中的一个垃圾邮件链接
如果有人点击了该链接,就会看到位于AWS bucket的网站。网站会要求用户确认是否大于16周岁,然后才能访问限制级内容。用户点击按钮后,会被重定向到一个有很多笑话的页面。同时刚才点击的链接会出现在Facebook wall(留言板)上。这是怎么做到的呢?

Clickjacking页面
研究人员分析页面源代码发现一个可疑的iframe tag,看似与clickjacking有关。该frame指向另一个位于AWS的页面,该页面最终会执行下面的Facebook URL:https://mobile.facebook.com/v2.6/dialog/share?app_id=283197842324324&href=https://example.com&in_iframe=1&locale=en_US&mobile_iframe=1把该链接复制到浏览器中,会看到一个来自Facebook的分享窗口。查看响应头,发现该页面设置了X-Frame-Options: DENY header,所以不应该是clickjacking攻击。

可疑的iframe代码
研究人员在Chrome, Chromium, Edge, IE, Firefox等主流浏览器中进行了测试,测试结果完全一样。每次在浏览器中加载该iframe都会引发X-Frame-Options错误。

准确的Chromium行为
研究人员对此很疑惑,同时研究人员发现攻击者禁止波兰用户将该站点重定向。看起来攻击者的主要目标是法国的Facebook用户,但同时也有许多来自波兰的流量。

禁止来自波兰的受害者的简单脚本
研究人员进一步分析发现不能使用桌面版浏览器,因为iframe中有mobile.子域名的暗示。因此,研究人员在Android Facebook App中加载该域名发现竟然可以正常工作。X-Frame-Options header中的内容被忽略了。
研究人员认为Facebook内置的浏览器会选择性地为特定的API调用忽略X-Frame-Options header。研究人员查看Facebook开发者文档,看似这并不是一个bug,而是一个特征。开发者文档中有一个名为mobile_iframe的特殊参数:
if set to true the share button will open the share dialog in an iframe on top of your website […] This option is only available for mobile, not desktop
从开发者文档来看,这确实应该是一个特征,但就算是特征也是实现很差的特征。研究人员22日确认这是一个特征,因为如果用户从手机设备连接Facebook,Facebook甚至不会为该网站设置X-Frame-Options header。而且Facebook对手机用户还提供应对clickjacking的安全预警,即弹窗问用户是否想要分享该链接。该本文的描述证明了该弹窗并没有那么有效。Facebook拒绝承认这是一个漏洞,认为这是“working as intended”,而且不会提供修复方案。PoC研究人员同时给出了poc:
1.注册新的Facebook App账号
2.打开API
3.用下面的html代码创建新网站:
&href=https://example.com/&in_iframe=1&locale=en_US&mobile_iframe=1" scrolling="no">
需要将 修改为你自己的APP id。
4.在Facebook wall上发布一个到该网站的链接;
5.在安卓Facebook APP上点击该链接,可以看到iframe被成功加载了。
PoC参见:https://malfind.com/test/poc.html
 

研究人员首先发现一个Facebook中一个非常讨厌的垃圾邮件活动,许多好友都发布了位于AWS bucket上的链接。该链接是一个有许多笑话的法国网站,这样的网站谁不会点呢?

其中的一个垃圾邮件链接
如果有人点击了该链接,就会看到位于AWS bucket的网站。网站会要求用户确认是否大于16周岁,然后才能访问限制级内容。用户点击按钮后,会被重定向到一个有很多笑话的页面。同时刚才点击的链接会出现在Facebook wall(留言板)上。这是怎么做到的呢?

Clickjacking页面
研究人员分析页面源代码发现一个可疑的iframe tag,看似与clickjacking有关。该frame指向另一个位于AWS的页面,该页面最终会执行下面的Facebook URL:https://mobile.facebook.com/v2.6/dialog/share?app_id=283197842324324&href=https://example.com&in_iframe=1&locale=en_US&mobile_iframe=1把该链接复制到浏览器中,会看到一个来自Facebook的分享窗口。查看响应头,发现该页面设置了X-Frame-Options: DENY header,所以不应该是clickjacking攻击。 无奈人生安全网

可疑的iframe代码
研究人员在Chrome, Chromium, Edge, IE, Firefox等主流浏览器中进行了测试,测试结果完全一样。每次在浏览器中加载该iframe都会引发X-Frame-Options错误。

准确的Chromium行为
研究人员对此很疑惑,同时研究人员发现攻击者禁止波兰用户将该站点重定向。看起来攻击者的主要目标是法国的Facebook用户,但同时也有许多来自波兰的流量。

禁止来自波兰的受害者的简单脚本 www.wnhack.com
研究人员进一步分析发现不能使用桌面版浏览器,因为iframe中有mobile.子域名的暗示。因此,研究人员在Android Facebook App中加载该域名发现竟然可以正常工作。X-Frame-Options header中的内容被忽略了。
研究人员认为Facebook内置的浏览器会选择性地为特定的API调用忽略X-Frame-Options header。研究人员查看Facebook开发者文档,看似这并不是一个bug,而是一个特征。开发者文档中有一个名为mobile_iframe的特殊参数:
if set to true the share button will open the share dialog in an iframe on top of your website […] This option is only available for mobile, not desktop
从开发者文档来看,这确实应该是一个特征,但就算是特征也是实现很差的特征。研究人员22日确认这是一个特征,因为如果用户从手机设备连接Facebook,Facebook甚至不会为该网站设置X-Frame-Options header。而且Facebook对手机用户还提供应对clickjacking的安全预警,即弹窗问用户是否想要分享该链接。该本文的描述证明了该弹窗并没有那么有效。Facebook拒绝承认这是一个漏洞,认为这是“working as intended”,而且不会提供修复方案。PoC研究人员同时给出了poc:
1.注册新的Facebook App账号 www.wnhack.com
2.打开API
3.用下面的html代码创建新网站:
&href=https://example.com/&in_iframe=1&locale=en_US&mobile_iframe=1" scrolling="no">
需要将 修改为你自己的APP id。
4.在Facebook wall上发布一个到该网站的链接;
5.在安卓Facebook APP上点击该链接,可以看到iframe被成功加载了。
PoC参见:https://malfind.com/test/poc.html
  无奈人生安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。