通过HTTP标头进行XSS

Posted 网络安全与信息技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过HTTP标头进行XSS相关的知识,希望对你有一定的参考价值。

在某些情况下,未正确清除在应用程序的HTTP标头之一中传递的信息,并将其输出到请求的页面中的另一端或另一端,从而导致XSS情况。

但是不幸的是,一旦攻击者无法让受害者在实际的XSS攻击中编辑自己的HTTP标头,那么只有在攻击者的有效载荷仍然以某种方式存储的情况下,才能利用这些情况。

我们可能想到的第一种情况是经典的情况:我们可以控制的HTTP标头中的某些信息被存储在数据库中,并随后在同一页面,应用程序中的其他任何地方甚至在另一个不可访问的系统中检索到

练习:

https://brutelogic.com.br/lab/header.php

我们所有的请求标头都以JSON格式显示在此处。这是一种推断,在现实世界中,它可能只出现其中的一种或两种。这只是为了简化代码,因为代码是一种单行代码(PHP),可以轻松重现:

<?= json_encode(getallheaders())。” \ n”;

如下所示,在命令行中使用带有-i标志的curl,它向我们显示了响应的HTTP标头以及JSON构成我们的请求标头。


由于我们在此博客中使用的WAF提供了最后一个标头“ x-sucuri-cache”,因此我们需要在URL中添加一些内容来避免缓存,因为该标头的值为“ HIT”,这意味着它即将到来从WAF的缓存中。


通过HTTP标头进行XSS


因此,通过添加“ lololol”,我们能够检索页面的非缓存版本,由x-sucuri-cache标头值“ MISS”指示。现在,我们将注入自己的标头(带有-H标志),以检查它是否以响应的形式出现。

通过HTTP标头进行XSS


成功,响应中反映了我们的虚拟标头对“ Test:myValue”。让我们更改“避免缓存字符串”以发出另一个请求,否则下一个将返回带有“ lololol”字符串的最后一个缓存响应。

通过HTTP标头进行XSS



我们在URL中使用“ kkkkk”作为字符串来再次开始缓存处理。如上所示,我们还注入了XSS向量。但仅对我们而言,因为我们正在通过终端发送该标头。它不会出现在浏览器,其他人甚至我们的请求中。


通过HTTP标头进行XSS

提出了另一个请求(在“ date”标题处检查时间),但似乎没有什么区别。这是因为缓存基于MISS-MISS-HIT方案,因此下一个将起作用。


通过HTTP标头进行XSS


我们已经缓存了。现在,我们使用刚才的URL 打开Brave浏览器,并:


该URL将保持中毒状态,直到缓存过期。

我们在以下页面中共享了类似的练习:

https://brutelogic.com.br/lab/welcome.php

#XSS锻炼你!https://t.co/y7vB13iP8U提示:使用自定义URL。


它的工作原理很像我们刚才解释的那样。XSS所需要的只是猜测入口点。

该页面的源代码如下,因此我们可以轻松地找到解决方案。





#hack2learn


更多推荐

以上是关于通过HTTP标头进行XSS的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 XSS 获取受 http

通过修改 HTTP 标头使用没有 CORS 的 XMLHttpRequest?

如何关闭跨站点脚本 (XSS) 筛选器

如何确认用户/通过 http 授权?

获取请求未通过授权标头[关闭]

通过 HTTP 标头验证 SOAP 调用