hop-by-hop headers

支持 HackTricks

这是对帖子 https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers 的总结

Hop-by-hop headers 是特定于单个传输级连接的,主要用于 HTTP/1.1 中管理两个节点(如客户端-代理或代理-代理)之间的数据,并不打算被转发。标准的 hop-by-hop headers 包括 Keep-AliveTransfer-EncodingTEConnectionTrailerUpgradeProxy-AuthorizationProxy-Authenticate,如 RFC 2616 中所定义。可以通过 Connection 头将其他头指定为 hop-by-hop。

滥用 Hop-by-Hop Headers

代理对 hop-by-hop headers 的不当管理可能导致安全问题。虽然代理应该删除这些头,但并非所有代理都这样做,从而产生潜在的漏洞。

测试 Hop-by-Hop Header 处理

可以通过观察在特定头被标记为 hop-by-hop 时服务器响应的变化来测试 hop-by-hop headers 的处理。工具和脚本可以自动化此过程,识别代理如何管理这些头,并可能发现配置错误或代理行为。

滥用 hop-by-hop headers 可能导致各种安全隐患。以下是几个示例,演示如何操纵这些头以进行潜在攻击:

通过 X-Forwarded-For 绕过安全控制

攻击者可以操纵 X-Forwarded-For 头以绕过基于 IP 的访问控制。此头通常由代理用于跟踪客户端的原始 IP 地址。然而,如果代理将此头视为 hop-by-hop 并在没有适当验证的情况下转发它,攻击者就可以伪造他们的 IP 地址。

攻击场景:

  1. 攻击者向位于代理后面的 Web 应用程序发送 HTTP 请求,在 X-Forwarded-For 头中包含一个虚假的 IP 地址。

  2. 攻击者还包括 Connection: close, X-Forwarded-For 头,促使代理将 X-Forwarded-For 视为 hop-by-hop。

  3. 配置错误的代理将请求转发到 Web 应用程序,而没有伪造的 X-Forwarded-For 头。

  4. Web 应用程序没有看到原始的 X-Forwarded-For 头,可能会将请求视为直接来自受信任的代理,从而可能允许未授权访问。

通过 Hop-by-Hop Header 注入进行缓存中毒

如果缓存服务器错误地根据 hop-by-hop headers 缓存内容,攻击者可以注入恶意头以毒化缓存。这将向请求相同资源的用户提供不正确或恶意的内容。

攻击场景:

  1. 攻击者向 Web 应用程序发送请求,包含一个不应被缓存的 hop-by-hop 头(例如,Connection: close, Cookie)。

  2. 配置不当的缓存服务器未删除 hop-by-hop 头,并缓存了特定于攻击者会话的响应。

  3. 未来请求相同资源的用户接收到缓存的响应,该响应是为攻击者量身定制的,可能导致会话劫持或敏感信息泄露。

支持 HackTricks

Last updated