當前位置:
首頁 > 新聞 > 通過瀏覽器緩存來bypass nonce script CSP

通過瀏覽器緩存來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種。



持久型 DOM XSS,當攻擊者可以強制將頁面跳轉至易受攻擊的頁面,並且 payload 不包括在緩存的響應中(需要提取)。


包含第三方 HTML 代碼的 DOM XSS 漏洞(例如,fetch(location.pathName).then(r=>r.text()).then(t=>body.innerHTML=t);)


XSS payload 存在於 location.hash 中的 DOM XSS 漏洞(例如 https://victim/xss#!foo?payload=)


這裡首先我們需要一個開啟了nonce script規則的站,並加入一個xss點






iframe引用




然後我們需要利用iframe引入這個頁面,並對其發起請求獲取頁面內容,這裡我們通過向其中注入一個