前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跨站Websocket Hijacking漏洞导致的Facebook账号劫持

跨站Websocket Hijacking漏洞导致的Facebook账号劫持

作者头像
FB客服
发布2020-03-05 15:19:54
1.2K0
发布2020-03-05 15:19:54
举报
文章被收录于专栏:FreeBufFreeBuf

作者在测试Facebook的近期推出的某个新应用中(出于保密原因此处不便公开),存在跨站Websocket Hijacking漏洞,攻击者利用该漏洞可以劫持使用该新应用的用户Websocket 连接,之后构造恶意的Websocket信息,可实现对目标受害者的Facebook账号劫持。

因为该项Facebook新近推出的应用还处于测试阶段,只有少数安全人员可以受邀进行访问测试,所以以下漏洞解释中已对应用名称进行了隐匿,且暂不提供相关的漏洞利用代码。

漏洞原因

由于该项Facebook新近推出的应用托管在facebook.com的子域名之下,并允许其本地IP地址(如0.0.0.1/8 或 192.168.1.1/8)包含成为Origin主机头,该应用基于随机数的安全登录(随机数在登录页面中生成然后在后续的某个websocket消息中被发送验证),随机数用于建立获取有效的websocket连接会话,这里并不依赖Cookie信息进行用户身份验证。

但当测试授权机制的另一个bug时,我发现了一个变化,按之前的分析来看,授权机制也应该用随机数来验证登录,但此处却开始用了用户的Facebook全局Cookie来验证用户身份。

以下为用Facebook内部的本地IP地址成功构造为Origin主机头建立的Websocket连接:

综上分析来看,由于Origin主机头仅允许本地IP地址,因此与受害者在同一本地网段的攻击者可构造恶意Websocket连接,通过DNS欺骗(Spoofing)或点对点发送给受害者,实现对受害者Facebook的账号劫持。

另外,也可以在受害者手机中的安装恶意APP来启动无权限限制的HTTP服务,然后向受害者同网段的其他IP地址的Facebook用户发送经过构造的deep-link形式的恶意URL链接,实现扩大化攻击。

漏洞复现

1、为了更好的说明利用,我访问REDACTED.facebook.com,然后保存主页,这里要连同其中处理websocket通信的Javascript脚本文件一起保存。因为Websocket通信消息是加密的,且这里的Javascript脚本文件是经过编码的,有些难懂,且在后续的攻击利用中要用到其中一些稍作修改的Javascript脚本文件。之后,我用包含这些修改的Javascript脚本文件启动了一个HTTP服务;

2、利用上述启动的http服务,我向同一网段的受害者发送了一个恶意链接之后,其中涉及的脚本会与REDACTED.facebook.com服务端建立起一个Websocket连接,然后会在登录阶段的身份验证时需要用到用户的Cookie信息(由于Websocket不受限于SOP或CORS策略,所以这对本地IP来说是可行的)

3、作为POC测试,受害者在访问了上述包含有本地IP的恶意链接之后,就会看到自己成功登录到了Facebook账户,而在Javascript脚本文件中,却包含了一个攻击Payload,可以当受害者登录成功后向攻击者发送一个特定的websocket,以进行Facebook账户的绑定邮箱或手机号的添加,以此实现对受害者Facebook账户的劫持。该攻击针对安卓手机APP用户亲测有效,iOS中未测试过。

漏洞上报和处理进程

2019.12.10 漏洞初报 2019.12.10 Facebook确定漏洞有效 2019.12.17 Facebook修复漏洞 2020.1.2 Facebook奖励了 12,500$

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞原因
  • 漏洞复现
  • 漏洞上报和处理进程
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档