周年更新后通过Referrer实现XSS攻击
自Windows 10周年更新以来,微软似乎修复了IE11/Edge上的一些XSS技巧。Referrer行为就是其中之一。
以下页面直接写入HTTP_REFERER和document.referrer: https://vulnerabledoma.in/xss_referrer
此前IE/Edge不会对referrer字符串中的"<>
字符进行编码。因此,我们可以通过以下PoC在该页面上实现XSS:
https://l0.cm/xss_referrer_oldpoc.html?
但从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,不是吗?:D
今天,我想介绍一种小技巧,在最新的Win10 Edge/IE11上使用referrer实现XSS。
该技术非常简单。如果您通过Flash的navigateToURL()方法发送请求,可以轻松将<>
字符串包含到referrer中,如下所示:
https://l0.cm/xss_referrer.swf?
ActionScript代码如下:
|
|
从访问结果可以看出,我们可以通过Referer请求头实现XSS。但遗憾的是,我们无法通过document.referrer属性实现XSS,因为它变为空值。唉 :p
仅供参考,我也可以通过Acrobat API的JavaScript中的submitForm()方法重现此问题。
我在装有Adobe Reader插件的Win10 IE11上确认了这一点。
PoC如下: https://l0.cm/xss_referrer.pdf?
似乎通过插件发出的请求未被考虑在内。
就是这样。在某些情况下可能会有所帮助 :) 谢谢!