除了低版本 angular js 的模板注入,还有许多库可以绕过 CSP。 比如,如果用了 Jquery-mobile 库,且 CSP 中包含 "script-src 'unsafe-eval'" 或者 "script-src 'strict-dynamic'",可以用这个 exp。 <div data-role=popup id='alert(1)'> 还比如 RCTF2018 题目出现的 AMP 库,可以使用下面的标签获取名字为...
希望基于nonce的方法的组合和'strict-dynamic'关键字将允许开发人员和组织最终能够享受由内容安全策略提供的真正的安全利益。 在看到Google煞费苦心的这么多帮助推广CSP部署的工具,以及认真的深度调研后,我坚信CSP的今世可能还未能尽如人意,但是未来在Google以及其它各家标准制定者的大力推动下,改进后的CSP必能够在现代浏...
在2016年,Google安全团队已经发现了这种静态的、基于规则的CSP有缺陷(基于规则就会存在大量被绕过的可能),提出了新的“strict-dynamic”关键字和动态的、基于nonce随机数的CSP,并将研究成果于同年的的ACM计算机与通信安全会议上发表,名字非常震撼:CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and ...
CSP无效。 2、strict-dynamic Bypass 2017年7月 Blackhat,Google团队提出了全新的攻击方式Script Gadgets。 header("Content-Security-Policy: default-src 'self'; script-src 'strict-dynamic' "); Strict-dynamic的提出正是为了适应现代框架 但Script Gadgets正是现代框架的特性 Script Gadgets 一种类似于短标签的...
为了简化这种基于nonce的方式,我们提出了一个新的CSP源表达式关于script,我们称它为strict-dynamic。使用这个,动态生成的脚本隐式地从穿件他们的可信脚本集成值。这样,已经执行的合法脚本可以轻松地将新脚本添加到DOM,而不需要大量的代码修改。但是如果攻击者找到了xss漏洞,但是不知道正确的nonce,他们的脚本将会被阻止。
CSP设置了strict-dynamic,结合查阅的Black Hat 2017的文章可知,我们可以在页面上找一个可以动态生成DOM节点的JS Gadget,然后通过某些方式来劫持其中的DOM节点元素,从而使动态生成的标签可以继承该Gadget的nonce直接执行JS代码。 回到Demo,我们重新check一遍JS代码,分别有两段: ...
因为新生成的,被插入到页面的js并不知道nonce的值,所以会被拦截,因此需要CSP3里的 script-src: ’strict-dynamic’。’ trict-dynamic’允许将信任关系传递给动态生成的脚本,也就是说,“strict-dynamic”允许js动态添加的脚本执行,而忽略script-src的白名单。并且,其他的script-src白名单会被忽略,浏览器不会执行...
在很多情况下,我们只需要添加这样一行简单的代码,就可以保护Web应用免受XSS攻击的侵害,因为‘strict-dynamic’可以帮助开发人员在Web应用的运行过程中动态加载受信任的脚本。需要注意的是,通过这种方式所设置的策略是完全向下兼容的,所有能够识别CSP策略的浏览器都支持这样的设置方式。除此之外,它也能够与Web应用中的...
但是,来自jQuery的小工具只能使攻击者绕过CSP中的strict-dynamic,并且绕过多个XSS筛选器,而不能绕过基于主机的CSP白名单。此外,如果没有使用攻击者控制的输入显式调用jQuery函数,就无法触发jQuery中的脚本小工具。第二个最常用的小工具库Bootstrap也仅包含用于绕过strict-dynamic过滤器和XSS过滤器的小工具。但是,第三个...
因为新生成的,被插入到页面的js并不知道nonce的值,所以会被拦截,因此需要CSP3里的 script-src: ’strict-dynamic’。’strict-dynamic’允许将信任关系传递给动态生成的脚本,也就是说,“strict-dynamic”允许js动态添加的脚本执行,而忽略script-src的白名单。并且,其他的script-src白名单会被忽略,浏览器不会执行...