mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
43 lines
3.0 KiB
Markdown
43 lines
3.0 KiB
Markdown
# hop-by-hop headers
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
---
|
||
|
||
**这是文章的摘要** [**https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers**](https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers)
|
||
|
||
Hop-by-hop headers 是特定于单个传输级连接的,主要用于 HTTP/1.1 中管理两个节点(如客户端-代理或代理-代理)之间的数据,并不打算被转发。标准的 hop-by-hop headers 包括 `Keep-Alive`、`Transfer-Encoding`、`TE`、`Connection`、`Trailer`、`Upgrade`、`Proxy-Authorization` 和 `Proxy-Authenticate`,如 [RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1) 中所定义。可以通过 `Connection` header 将其他 headers 指定为 hop-by-hop。
|
||
|
||
### 滥用 Hop-by-Hop Headers
|
||
|
||
代理对 hop-by-hop headers 的不当管理可能导致安全问题。虽然代理应该删除这些 headers,但并非所有代理都这样做,从而产生潜在的漏洞。
|
||
|
||
### 测试 Hop-by-Hop Header 处理
|
||
|
||
可以通过观察在特定 headers 被标记为 hop-by-hop 时服务器响应的变化来测试 hop-by-hop headers 的处理。工具和脚本可以自动化此过程,识别代理如何管理这些 headers,并可能揭示配置错误或代理行为。
|
||
|
||
滥用 hop-by-hop headers 可能导致各种安全隐患。以下是几个示例,演示如何操纵这些 headers 进行潜在攻击:
|
||
|
||
### 通过 `X-Forwarded-For` 绕过安全控制
|
||
|
||
攻击者可以操纵 `X-Forwarded-For` header 以绕过基于 IP 的访问控制。此 header 通常由代理用于跟踪客户端的源 IP 地址。然而,如果代理将此 header 视为 hop-by-hop 并在没有适当验证的情况下转发,攻击者可以伪造其 IP 地址。
|
||
|
||
**攻击场景:**
|
||
|
||
1. 攻击者向位于代理后面的 web 应用程序发送 HTTP 请求,在 `X-Forwarded-For` header 中包含一个虚假的 IP 地址。
|
||
2. 攻击者还包括 `Connection: close, X-Forwarded-For` header,促使代理将 `X-Forwarded-For` 视为 hop-by-hop。
|
||
3. 配置错误的代理将请求转发到 web 应用程序,而没有伪造的 `X-Forwarded-For` header。
|
||
4. web 应用程序没有看到原始的 `X-Forwarded-For` header,可能会将请求视为直接来自受信任的代理,从而可能允许未经授权的访问。
|
||
|
||
### 通过 Hop-by-Hop Header 注入进行缓存中毒
|
||
|
||
如果缓存服务器错误地根据 hop-by-hop headers 缓存内容,攻击者可以注入恶意 headers 来毒化缓存。这将向请求相同资源的用户提供不正确或恶意的内容。
|
||
|
||
**攻击场景:**
|
||
|
||
1. 攻击者向 web 应用程序发送请求,包含一个不应被缓存的 hop-by-hop header(例如,`Connection: close, Cookie`)。
|
||
2. 配置不当的缓存服务器未能删除 hop-by-hop header,并缓存了特定于攻击者会话的响应。
|
||
3. 未来请求相同资源的用户收到缓存的响应,该响应是为攻击者量身定制的,可能导致会话劫持或敏感信息泄露。
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|