如何利用HTTP标头XSS漏洞?

时间:2016-09-15 23:23:43

标签: http http-headers xss

让我们说一个页面只是打印HTTP&#39; referer&#39;的值。标头没有逃脱。因此,该页面容易受到XSS攻击,即攻击者可以使用包含<script>alert('xss');</script>之类的引用标头来制作GET请求。

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

3 个答案:

答案 0 :(得分:1)

这听起来像标准reflected XSS attack

在反映的XSS攻击中,攻击者需要受害者访问一些在某种程度上受攻击者控制的站点。即使这只是一个攻击者可以发布链接的论坛,希望有人会关注它。

如果使用referer标头反映XSS攻击,则攻击者可以将用户从论坛重定向到攻击者域中的页面。

e.g。

http://evil.example.com/?<script>alert(123)>

此页面依次以保留referer的方式重定向到以下目标网页。

http://victim.example.org/vulnerable_xss_page.php

因为它在没有正确转义的情况下显示此页面上的referer标头,所以http://evil.example.com/?<script>alert(123)>会在HTML源代码中输出,执行警报。请注意,这仅适用于Internet Explorer。

其他浏览器会自动对网址呈现进行编码

%3cscript%3ealert%28123%29%3c/script%3e

相反,这是安全的。

答案 1 :(得分:0)

我可以想到一些不同的攻击,也许还有其他人希望增加的攻击。 :)

如果您的XSS只是在未编码的响应中反映的某个标题值,我会说与存储相比风险较小。可能有些因素需要考虑。例如,如果它是浏览器添加的标题并且可以在浏览器中设置(如用​​户代理),则攻击者可以访问客户端计算机,更改用户代理,然后让普通用户使用该网站,随着攻击者的JavaScript注入。另一个想到的例子是网站可能会显示重定向到那里的网址(引用者) - 在这种情况下,攻击者只需要从他精心设计的网址链接到易受攻击的应用程序。但这些都是一种边缘情况。

如果存储了,那就更直截了当了。考虑使用所有请求标头记录用户访问权限的应用程序,并假设有一个内部应用程序供管理员用于检查日志。如果此日志查看器应用程序基于Web且易受攻击,则任何请求标头中的任何javascript都可以在管理上下文中运行。显然这只是一个例子,当然不需要盲目。

Cache poisoning也可能有助于利用标头XSS。

我能想到的另一件事是浏览器插件。 Flash现在不太流行(幸运的是),但是对于不同版本的Flash,您可以在请求中设置不同的请求标头。 What exactly you can and cannot set在Flash插件版本中是一团糟,非常混乱。

因此存在多种攻击,并且必须将所有标头视为用户输入并相应地对其进行编码。

答案 2 :(得分:0)

在引荐来源标头中使用xss几乎就像传统的反射xss一样,要做的另一点是“攻击者的网站重定向到受害网站,因此带有必需javascript的引荐来源标头将附加到受害网站请求中”。

这里需要讨论的一个基本要点是,为什么只有IE才能利用此漏洞,而其他浏览器则不能?

该问题的传统答案是“ Chrome和firefox自动对URL参数进行编码,因此XSS不可能。。”但有趣的是,当我们有n个传统xss旁路的旁路时。为什么我们不能绕过这种情况。

是的。我们可以绕过以下有效负载,这与绕过传统有效负载中的HTML验证的方式相同。

http://evil.example.com/?alert(1)//cctixn1f

此处的回复可能是这样的:

    指称     页面似乎错误或过时。 响应结束

如果受害者单击引荐页面,则会生成警报。

底线:不仅将IE,而且在将Referrer用作href标记的一部分时,即使在Mozilla和Firefox中,XSS也是可能的。.