通过浏览器缓存来bypass nonce script CSP_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

通过浏览器缓存来bypass nonce script CSP

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


通过浏览器缓存来bypass nonce script CSP

* 本文原创作者:LoRexxar,本文属于FreeBuf原创奖励计划,未经许可禁止转载 最近看了去年google团队写的文章CSP Is Dead, Long Live CSP!,对csp有了新的认识,在文章中,google团队提出了nonce-{random}的csp实现方式,而事实上,在去年的圣诞节,Sebastian 演示了这种csp实现方式的攻击方式,也就是利用浏览器缓存来攻击,现在来详细分析下。  漏洞分析 原文查看:http://sirdarckcat.blogspot.jp/2016/12/how-to-bypass-csp-nonces-with-dom-xss.html 国内的翻译(只有翻译):http://paper.seebug.org/166/ 首先我需要个demo 首先是实现了nonce script的站,然后包含了因为是利用了浏览器缓存,所以我们不能对页面发起请求,因为发起请求之后,后台就会刷新页面并刷新nonce的字符串,符合条件的只有3种。 1. 持久型 DOM XSS,当攻击者可以强制将页面跳转至易受攻击的页面,并且 payload 不包括在缓存的响应中(需要提取)。 2. 包含第三方 HTML 代码的 DOM XSS 漏洞(例如,fetch(location.pathName).then(r=>r.text()).then(t=>body.innerHTML=t);) 3. XSS payload 存在于 location.hash 中的 DOM XSS 漏洞(例如 https://victim/xss#!foo?payload=) 这里首先我们需要一个开启了nonce script规则的站,并加入一个xss点 /csp/test.php  iframe引用 然后我们需要利用iframe引入这个页面,并对其发起请求获取页面内容,这里我们通过向其中注入一个