如何利用HTTP“Host”头XSS漏洞?

时间:2016-09-16 16:58:41

标签: http http-headers xss

跟进How to exploit HTTP header XSS vulnerability?

的问题

假设页面只是打印HTTP“主机”标题的值而没有转义。因此,该页面容易受到XSS攻击,即攻击者可以使用包含alert('xss')等内容的'Host'标头来制作GET请求。

但你怎么能用它来攻击目标?攻击者如何使目标向该特定标头发出特定请求?

1 个答案:

答案 0 :(得分:1)

http主机头基本上用作字符串,以确定应该使用服务器配置中哪些(可能很多)基于命名的主机来提供请求。

让我们假设您伪造了一个HTTP请求并将此标头发送过来:

Host: <script>alert('foo');</script>.example.com

如果网站管理员将服务器和网站定义配置为允许显式主机名,或者具有通配符命名, ONLY 方式可以通过您要攻击的PHP脚本,例如< / p>

<VirtualHost ...
    ServerName www.example.com
    ServerAlias *.example.com
</VirtualHost>

由于通配符允许.example.com之前的ANYTHING,因此您的JS主机名将会通过。

但是vhost配置如下:

<Virtualhost ...>
    Servername www.example.com
    ServerAlias web.example.com
</Virtualhost

不会受到攻击,因为您提供的主机名与任何已配置的主机名都不匹配。该请求可能由其他一些全能vhost处理,但由于您的易受攻击的脚本在该网站上不存在,这对您没用。