怎么利用Oculus网站XSS漏洞实现对Facebook和Oculus用户的账户劫持


今天就跟大家聊聊有关怎么利用Oculus网站XSS漏洞实现对Facebook和Oculus用户的账户劫持,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。漏洞原因主要在于,Oculus论坛forums.oculusvr.com采用了oculus.com的认证机制,该认证机制使用了路径https://graph.oculus.com/authenticate_web_application/来验证登录用户,之后会把用户跳转到https://forums.oculusvr.com/entry/oculus,跳转后用户携带了一个oculus访问令牌(access_token),且利用该访问令牌,可以有权限访问graph.oculus.com/graphql,并实现GraphQL查询。因此,基于该GraphQL查询,恶意用户可以利用该功能实现对其他用户的账户劫持。由于论坛forums.oculus.com基于开源网站应用Vanilla Forum搭建,本来不在Faceboo免费云主机域名k漏洞奖励项目内,但是,由于该漏洞存在Facebook论坛的身份验证机制中,且攻击者无需创建新的论坛账户就能实现漏洞利用,因此之后Facebook也把该漏洞认定为重要和有效。从页面https://forums.oculusvr.com/entry/oculus中的源码可以看到,其开启了调试模式,并嵌入了以下JS脚本文件-https://forums.oculusvr.com/plugins/oculus/js/oculus-oauth.js,通过了解该JS文件,可知其中在state参数读取时采用了document.write方法,如果把攻击PAYLOAD赋值给state(#state=PAYLOAD),那会不会产生安全问题呢?请注意,尽管document.location也被传递给了document.write,但这里我们可以用其URL中涉及的“state”参数来加载攻击测试的有效负载Payload,因为document.location最后会将带有效负载Payload的URL编码格式,之后,在decodeURIComponent 方法解码hash片段提取“response”时,“state”将会被解码。至此,代码分析到这里,初步的感觉是可以从Payload中做手脚把它构造成一个XSS,但是,如果认真看其中的代码可知,在document.write方法调用前还有代码var loginType = this.frameElement.id;,所以这并不如我们所料,这里,如果按照我们之前的构造将会返回错误消息“TypeError: Cannot read property ‘id’ of null”,只有当前这个页面是框架化且与其父页面是同源才能正确调用通过。为此,需要把论坛网站forums.oculusvr.com中的页面https://forums.oculusvr.com/entry/oculus#state=payload 进行框架化,然后把其框架化的URL链接发送给受害者,才能触发漏洞。经分析发现,开源网站应用Vanilla Forums源码中加载嵌入了一个白名单网站列表,如下:这其中的某个白名单网站存在一个漏洞,导致能让我从Vanilla Forums嵌入页面跳转到https://forums.oculusvr.com/entry/oculus ,并实现最终的XSS Payload触发。遗憾的是,由于该漏洞还未完全修复,因此抱歉在此我不能公开该漏洞。用Oculus账户登录forums.oculus.com网站,到“New Discussion”区域点击“Toggle Html View“,然后添加进Vanilla Forums中的漏洞利用Payload,这里原谅我做了隐藏处理。之后,点击“Preview” 和“Post Discussion”,将会创建一个包含REDACTED的框架化进程,REDACTED中的框架化页面会触发跳转至最终的XSS漏洞利用URL路径。成型的可以窃取受害者access_token的XSS Payload如下:由于Vanilla Forums中的漏洞利用Payload包含了太多类似=, &的字符,可能会对oculusConnect方法中的state参数提取产生干扰,因此我把其进行了base64编码,其原始形式为:此外,我还构造了另外的一个框架化页面,它会对https://graph.oculus.com/authenticate_web_application发起请求,然后携带用户有效access_token执行到https://forums.oculusvr.com/entry/oculus的跳转,由于该页面中的iframe和其父页面均为同源,因此我们可以访问其iframe界面并读取其location.href属性,最终可以把收集到的access_token信息发送到我们控制的服务器中。从“Oculus Forums”页面view-source:https://forums.oculusvr.com/entry/oculus源码可知,其生成了一个应用id-1238816349468370,并具备对https://graph.oculus.com/graphql的GraphQL查询访问权限。但是,账户劫持需要涉及到密码更改、contactpoints添加或知晓用户PIN码,而且,该Oculus Forums的Web页面也无法具备对Facebook绑定用户access_token的读取。不过之后,我从安全研究者JOSIP FRANJKOVI的博客里发现了一种解决此困惑的技巧方法:https://graph.oculus.com/graphql?access_token=VICTIM_TOKEN&method=post
&q=viewer(){linked_accounts_info{facebook_account{access_token}}}但这里窃取的access_token不能实现真正意义的劫持,只能实现受害者的用户信息读取,以及受害者应用和其所在组织机构的更改。幸运的是,最终我发现了第三个劲爆漏洞,利用其可以把窃取的用户令牌access_token升级成另一个应用身份( WWW 752908224809889 ),并能绕过应用身份限制,去读取Facebook绑定用户的access_token以实现Facebook用户账户劫持,或用该Facebook绑定用户的access_token访问https://graph.oculus.com/fbauth去登录关联的Oculus账户。看完上述内容,你们对怎么利用Oculus网站XSS漏洞实现对Facebook和Oculus用户的账户劫持有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注云编程开发博客行业资讯频道,感谢大家的支持。

相关推荐: SSL证书中keytool有什么用

小编给大家分享一下SSL证书中keytool有什么用,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!SSL证书是保护网络信息的常用手段,主要包括公用密钥和私人密钥两种保密措施,能够有效的保护客户端与互联网之间的数据信息传送。SSL证书不仅可以保护使…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/03 13:23
下一篇 02/03 13:23