# 逐跳头部
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
* 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
[**RootedCON**](https://www.rootedcon.com/)是西班牙最重要的网络安全活动之一,也是欧洲最重要的网络安全活动之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士的热点交流平台。
{% embed url="https://www.rootedcon.com/" %}
## 什么是逐跳头部?
逐跳头部是设计为由当前处理请求的代理进行处理和消费的头部,而不是端到端头部。
根据[RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1),HTTP/1.1规范默认将以下头部视为逐跳头部:`Keep-Alive`、`Transfer-Encoding`、`TE`、`Connection`、`Trailer`、`Upgrade`、`Proxy-Authorization`和`Proxy-Authenticate`。当在请求中遇到这些头部时,符合规范的代理应该处理或执行这些头部所指示的操作,而不将它们转发到下一个跳点。
除了这些默认值,请求还可以通过将它们添加到`Connection`头部来定义一组自定义的逐跳头部,如下所示:
```
Connection: close, X-Foo, X-Bar
```
## 滥用逐跳头的理论
理论上,代理应该在发送到下一个地址之前删除接收到的逐跳头。但你会发现在实际中,有些代理确实这样做了,而其他代理则会发送所有头部,并添加自己的`Connection`头部。
![](<../.gitbook/assets/image (138).png>)
## 测试逐跳删除
如果你发现某个头部在设置或不设置时会导致服务器响应发生显著变化,那么你可以搜索逐跳删除。例如,如果设置了Cookie头部(包含有效内容),服务器的响应将与不发送Cookie头部时截然不同。
因此,发送一个带有有效头部的请求,并使用以下Connection头部的值`Connection: close, Cookie`,如果响应与未发送Cookie时相同,则存在一个删除头部的代理。
你可以使用[此脚本](https://gist.github.com/ndavison/298d11b3a77b97c908d63a345d3c624d)找出如果删除某个头部会导致服务器响应有何不同。然后,如果你传入已知头部的列表,例如[此列表](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/BurpSuite-ParamMiner/lowercase-headers),你可以观察到哪些头部会产生效果,尽管它们不在你的原始请求中:
```
for HEADER in $(cat headers.txt); do python poison-test.py -u "https://target" -x "$HEADER"; sleep 1; done
```
这将循环遍历整个头列表,并打印出如果其在逐跳列表中的存在导致不同的状态码或响应体大小。
## 滥用 X-Forwarded-For
通常,代理会在 `X-Forwarded-For` 头中添加客户端的 IP,以便下一个跳点知道请求的来源。然而,如果攻击者发送一个类似 `Connection: close, X-Forwarded-For` 的 Connection 值,并且第一个代理发送了带有其值的逐跳头(它发送了特殊的 Connection 值),那么第二个值可能会删除 X-Forward-For 头。\
最终的应用程序将不知道是谁发送了请求,并可能认为是最后一个代理发送的,而在这种情况下,攻击者可能能够访问由 IP 白名单保护的资源(也许是一些 `/admin` ?)。
根据目标系统的不同,您还可能有 `Forwarded`、`X-Real-IP` 和其他一些不太常见的头。
## 检测代理和指纹识别服务
这种技术可能有助于检测代理(使用 cookie 技术)甚至检测服务。例如,如果您滥用此技术删除头 `X-BLUECOAT-VIA` 并抛出错误,则可以确定正在使用 Bluecoat。
## 其他攻击
* 有关滥用此技术进行可能导致 DoS 缓存污染的攻击,请阅读原始链接
* 这在可能允许您插入新头的攻击中可能很有用(概率较低)
* 还可以用于绕过防御功能。例如,如果缺少一个头意味着请求不应该由 WAF 处理,您可以使用此技术绕过 WAF。
## 参考资料
{% embed url="https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers" %}
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的网络安全活动之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点交流。
{% embed url="https://www.rootedcon.com/" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 您在**网络安全公司**工作吗?您想在 HackTricks 中宣传您的公司吗?或者您想获得最新版本的 PEASS 或下载 PDF 格式的 HackTricks 吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家 NFT 收藏品 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass),或在 **Twitter** 上 **关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享您的黑客技巧**。