curl http header_在HTTP头中进行XSS

curl http header_在HTTP头中进行XSS_第1张图片

说到 XSS 相信大家肯定都不陌生(都 2020 年了,还在讲 XSS 这种老掉牙的东西),有些人甚至看到输入框就想往里面输 ,今天我们就来学习 怎样在 HTTP 头中进行 XSS ?

直奔主题,先几个 XSS 的经典案例:

  • " method="POST">
  • ">
  • var test = '';
  • ...

当然,远不止这些,枚不胜举。

其他关于 XSS 的知识就不多讲了,毕竟是老生常谈的东西,下面就来讲讲不一般的 XSS。

HTTP头中的XSS

开门见山,在某些情况下,没有清除应用程序 HTTP 头中传递的信息,并将其输出到请求页面的某个位置时,导致的 XSS 情况。

一种情况

我们可以控制 HTTP 头中的某些信息存储在数据库中,然后在同一页面中,应用程序中的其他任何地方甚至在另一个不可访问的系统中检索到。但是,由于 CDN 和 WAF 的存在,还存在另一种非常普遍的情况,无需进行数据库操作即可持续进行攻击:Web 缓存中毒

实践

练习地址:https://brutelogic.com.br/lab/header.php

curl http header_在HTTP头中进行XSS_第2张图片

在命令行中执行命令 curl -i,它向我们显示了响应的 HTTP 标头以及 JSON 格式的请求头。

curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)上面,它支持多种协议。
-i 参数可以显示 http response 的头信息,连同网页代码一起。

curl http header_在HTTP头中进行XSS_第3张图片

由于实验靶场的 WAF 提供了最后一个标头 x-sucuri-cache,因此我们需要在 URL 中添加一些内容来避免缓存,该标头的值为 HIT,意思就是它来着 WAF 的缓存。

curl http header_在HTTP头中进行XSS_第4张图片

因此,访问带参数“lololol”的页面,我们能够得到页面的非缓存版本,标头 x-sucuri-cache 的标头值变成了 MISS 。再注入自己的标头(使用参数 -H),以检查它是否以响应的形式出现。

-H --header 在 http request 之中,自行增加一个头信息。

curl http header_在HTTP头中进行XSS_第5张图片

响应成功,得到带有 Test:myValue 的响应。再更改字符串为“kkkkk”发出另一个请求,不然将返回带有“ lololol”字符串的缓存响应。

curl http header_在HTTP头中进行XSS_第6张图片

再使用“kkkkk”作为字符串来再次开始缓存处理。如上图所示,还带入了 XSS payload。但仅是对自己有用,因为只是本机终端发送该标头。payload 不会出现在其他的浏览器请求中。

curl http header_在HTTP头中进行XSS_第7张图片

发另一个请求(注意看 data 时间不同),貌似没有什么区别。这是因为缓存机制是基于 MISS-MISS-HIT,因此下一个为 MISS。

curl http header_在HTTP头中进行XSS_第8张图片

验证是否已经缓存,打开目标 URL

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

curl http header_在HTTP头中进行XSS_第9张图片

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

练习地址2:https://brutelogic.com.br/lab/welcome.php

工作原理跟上面一样,不过没有了那么明显的输出点,执行 XSS 需要先找到输出点。页面的源代码如下:



Welcome, $name!

n"; }else{ echo "

Welcome, guest!

n"; } ?>

尝试进行 XSS 吧,完成的同学,评论区欢迎:)

来源: https:// brutelogic.com.br/blog/ xss-via-http-headers/

二向箔安全的网络安全技能包更新了!CISP-PTE 认证技能包,让你免费体验 CISP-PTE 认证内容。

curl http header_在HTTP头中进行XSS_第10张图片

更多有关渗透测试的内容请前往二向箔安全进行学习,最近推出了“挖洞”班,想了解更多资讯的,可咨询客服微信 twosecurity02

curl http header_在HTTP头中进行XSS_第11张图片

你可能感兴趣的:(curl,http,header)