hop-by-hop headers

支持 HackTricks

RootedCON西班牙 最相关的网络安全事件,也是 欧洲 最重要的事件之一。该大会 旨在促进技术知识,是各个学科技术和网络安全专业人士的热烈交流平台。


这是文章的摘要 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 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. 未来请求相同资源的用户接收到缓存的响应,该响应是为攻击者量身定制的,可能导致会话劫持或敏感信息泄露。

RootedCON西班牙 最相关的网络安全事件,也是 欧洲 最重要的事件之一。该大会 旨在促进技术知识,是各个学科技术和网络安全专业人士的热烈交流平台。

支持 HackTricks

Last updated