跟进How to exploit HTTP header XSS vulnerability?
的问题假设页面只是打印HTTP“主机”标题的值而没有转义。因此,该页面容易受到XSS攻击,即攻击者可以使用包含alert('xss')等内容的'Host'标头来制作GET请求。
但你怎么能用它来攻击目标?攻击者如何使目标向该特定标头发出特定请求?
答案 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处理,但由于您的易受攻击的脚本在该网站上不存在,这对您没用。