如何利用HTTP头XSS漏洞?

如何利用HTTP头XSS漏洞?,http,http-headers,xss,Http,Http Headers,Xss,假设一个页面只是打印HTTP“referer”头的值,没有转义。因此,该页面容易受到XSS攻击,即攻击者可以使用包含alert('XSS')之类内容的referer头来创建GET请求 但是你怎么能用它来攻击目标呢?攻击者如何使目标发出具有该特定标头的特定请求?我可以想到一些不同的攻击,可能还有更多的攻击,希望其他人能够添加。:) 如果您的XSS只是未编码响应中反映的某个头值,那么与存储的XSS相比,风险更小。不过,也有一些因素需要考虑。例如,如果它是浏览器添加的标题,并且可以在浏览器中设置(如用

假设一个页面只是打印HTTP“referer”头的值,没有转义。因此,该页面容易受到XSS攻击,即攻击者可以使用包含
alert('XSS')之类内容的referer头来创建GET请求


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

我可以想到一些不同的攻击,可能还有更多的攻击,希望其他人能够添加。:)

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

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

也可能有助于利用头XSS

我能想到的另一件事是浏览器插件。Flash现在不那么流行了(谢天谢地),但使用不同版本的Flash,您可以在请求上设置不同的请求头。整个Flash插件版本都很混乱,非常混乱


因此,有几种攻击,有必要将所有标题视为用户输入,并对其进行相应的编码。

这听起来像是一种标准

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

在使用
referer
头进行反射XSS攻击的情况下,攻击者可以将用户从论坛重定向到攻击者域上的页面

e、 g

因为它在此页面上显示的是
referer
标题,没有正确的转义,
http://evil.example.com/?alert(123)>
获取HTML源代码中的输出,执行警报。注意:这仅适用于Internet Explorer

其他浏览器将自动对URL呈现进行编码

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

相反,这是安全的。

在referer header上利用xss几乎与传统的反射xss一样,只是需要指出的另一点是“攻击者的网站重定向到受害者网站,因此带有所需javascript的referer header将附加到受害者网站请求”

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

这个问题的传统答案是“Chrome和firefox会自动对URL参数进行编码,因此XSS是不可能的…”但有趣的是,当我们有n个旁路用于传统XSS旁路时。为什么我们不能为这个场景设置旁路呢

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

这里的响应可能是这样的:

网站上的链接 提到 页面似乎错误或过时。 响应结束

若受害者点击参考页面,将生成警报

底线:不仅仅是IE,当referer被用作href标签的一部分时,即使在Mozilla和Firefox中,XSS也是可能的

http://victim.example.org/vulnerable_xss_page.php
%3cscript%3ealert%28123%29%3c/script%3e