通过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的缓存中。
因此,通过添加“ lololol”,我们能够检索页面的非缓存版本,由x-sucuri-cache标头值“ MISS”指示。现在,我们将注入自己的标头(带有-H标志),以检查它是否以响应的形式出现。
成功,响应中反映了我们的虚拟标头对“ Test:myValue”。让我们更改“避免缓存字符串”以发出另一个请求,否则下一个将返回带有“ lololol”字符串的最后一个缓存响应。
我们在URL中使用“ kkkkk”作为字符串来再次开始缓存处理。如上所示,我们还注入了XSS向量。但仅对我们而言,因为我们正在通过终端发送该标头。它不会出现在浏览器,其他人甚至我们的请求中。
提出了另一个请求(在“ date”标题处检查时间),但似乎没有什么区别。这是因为缓存基于MISS-MISS-HIT方案,因此下一个将起作用。
我们已经缓存了。现在,我们使用刚才的URL 打开Brave浏览器,并:
我们在以下页面中共享了类似的练习:
https://brutelogic.com.br/lab/welcome.php
小#XSS锻炼你!https://t.co/y7vB13iP8U提示:使用自定义URL。
它的工作原理很像我们刚才解释的那样。XSS所需要的只是猜测入口点。
该页面的源代码如下,因此我们可以轻松地找到解决方案。
#hack2learn
以上是关于通过HTTP标头进行XSS的主要内容,如果未能解决你的问题,请参考以下文章