如何利用HTTP "Host" header XSS漏洞?
How to exploit HTTP "Host" header XSS vulnerability?
跟进
的问题
假设一个页面只是打印 HTTP 'Host' header 的值,没有转义。因此该页面容易受到 XSS 攻击,即攻击者可以使用 'Host' header 包含类似 alert('xss');.
的内容来制作 GET 请求
但是你怎么能用它来攻击目标呢?攻击者如何通过特定 header 发出特定请求的目标?
http 主机 header 基本上用作字符串来确定服务器配置中的(可能很多)named-based 主机应该用于处理请求。
假设您伪造了一个 HTTP 请求并发送了这个 header:
Host: <script>alert('foo');</script>.example.com
如果网站管理员将服务器和站点定义配置为允许该显式主机名,唯一 可以通过您想要攻击的 PHP 脚本的方式,或者有适当的通配符命名,例如
<VirtualHost ...
ServerName www.example.com
ServerAlias *.example.com
</VirtualHost>
由于通配符允许 .example.com
之前的任何内容,您的 JS-hostname 将通过。
但是这样配置的虚拟主机:
<Virtualhost ...>
Servername www.example.com
ServerAlias web.example.com
</Virtualhost
不会受到攻击,因为您提供的主机名与任何配置的主机名都不匹配。该请求可能由其他一些 catch-all 虚拟主机处理,但由于该站点上不存在您的易受攻击的脚本,因此这对您没有用。
跟进
假设一个页面只是打印 HTTP 'Host' header 的值,没有转义。因此该页面容易受到 XSS 攻击,即攻击者可以使用 'Host' header 包含类似 alert('xss');.
的内容来制作 GET 请求但是你怎么能用它来攻击目标呢?攻击者如何通过特定 header 发出特定请求的目标?
http 主机 header 基本上用作字符串来确定服务器配置中的(可能很多)named-based 主机应该用于处理请求。
假设您伪造了一个 HTTP 请求并发送了这个 header:
Host: <script>alert('foo');</script>.example.com
如果网站管理员将服务器和站点定义配置为允许该显式主机名,唯一 可以通过您想要攻击的 PHP 脚本的方式,或者有适当的通配符命名,例如
<VirtualHost ...
ServerName www.example.com
ServerAlias *.example.com
</VirtualHost>
由于通配符允许 .example.com
之前的任何内容,您的 JS-hostname 将通过。
但是这样配置的虚拟主机:
<Virtualhost ...>
Servername www.example.com
ServerAlias web.example.com
</Virtualhost
不会受到攻击,因为您提供的主机名与任何配置的主机名都不匹配。该请求可能由其他一些 catch-all 虚拟主机处理,但由于该站点上不存在您的易受攻击的脚本,因此这对您没有用。