【问题标题】:How to exploit HTTP "Host" header XSS vulnerability?如何利用 HTTP“Host”标头 XSS 漏洞?
【发布时间】:2016-09-16 16:58:41
【问题描述】:

How to exploit HTTP header XSS vulnerability?的跟进问题

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

但是你怎么能用它来攻击目标呢?攻击者如何使目标发出带有特定标头的特定请求?

【问题讨论】:

  • 请看我对原始问题的回答。这涵盖了攻击者利用它的实际方法。反映的部分并不真正适用,但存储的 xss、缓存中毒或浏览器插件会。

标签: http http-headers xss


【解决方案1】:

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

假设您伪造了一个 HTTP 请求并发送了这个标头:

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

如果网站管理员配置服务器和站点定义以允许该明确的主机名,或者有通配符命名,则唯一方法可以通过您要攻击的 PHP 脚本,例如

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

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

但是像这样配置的虚拟主机:

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

不会受到攻击,因为您提供的主机名与任何已配置的主机名都不匹配。该请求可能由其他包罗万象的虚拟主机处理,但由于您的易受攻击的脚本在该站点上不存在,这对您毫无用处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2011-12-03
    • 2012-06-21
    • 2017-01-02
    • 2022-01-12
    相关资源
    最近更新 更多