hop-by-hop headers

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Il s'agit d'un résumé de l'article https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers

Les en-têtes hop-by-hop sont spécifiques à une seule connexion de niveau transport, utilisées principalement dans HTTP/1.1 pour gérer les données entre deux nœuds (comme client-proxy ou proxy-proxy), et ne sont pas destinées à être transmises. Les en-têtes hop-by-hop standard incluent Keep-Alive, Transfer-Encoding, TE, Connection, Trailer, Upgrade, Proxy-Authorization et Proxy-Authenticate, tels que définis dans RFC 2616. Des en-têtes supplémentaires peuvent être désignés comme hop-by-hop via l'en-tête Connection.

Abus des en-têtes hop-by-hop

Une gestion incorrecte des en-têtes hop-by-hop par les proxies peut entraîner des problèmes de sécurité. Alors que les proxies sont censés supprimer ces en-têtes, tous ne le font pas, créant des vulnérabilités potentielles.

Test de la gestion des en-têtes hop-by-hop

La gestion des en-têtes hop-by-hop peut être testée en observant les changements dans les réponses du serveur lorsque des en-têtes spécifiques sont marqués comme hop-by-hop. Des outils et des scripts peuvent automatiser ce processus, identifiant comment les proxies gèrent ces en-têtes et découvrant éventuellement des mauvaises configurations ou des comportements de proxy.

L'abus des en-têtes hop-by-hop peut entraîner diverses implications en matière de sécurité. Voici quelques exemples démontrant comment ces en-têtes peuvent être manipulés pour des attaques potentielles:

Contournement des contrôles de sécurité avec X-Forwarded-For

Un attaquant peut manipuler l'en-tête X-Forwarded-For pour contourner les contrôles d'accès basés sur l'IP. Cet en-tête est souvent utilisé par les proxies pour suivre l'adresse IP d'origine d'un client. Cependant, si un proxy traite cet en-tête comme hop-by-hop et le transmet sans validation appropriée, un attaquant peut usurper son adresse IP.

Scénario d'attaque:

  1. L'attaquant envoie une requête HTTP à une application web derrière un proxy, incluant une fausse adresse IP dans l'en-tête X-Forwarded-For.

  2. L'attaquant inclut également l'en-tête Connection: close, X-Forwarded-For, incitant le proxy à traiter X-Forwarded-For comme hop-by-hop.

  3. Le proxy mal configuré transmet la requête à l'application web sans l'en-tête X-Forwarded-For falsifié.

  4. L'application web, ne voyant pas l'en-tête X-Forwarded-For d'origine, pourrait considérer la requête comme provenant directement d'un proxy de confiance, permettant potentiellement un accès non autorisé.

Empoisonnement de cache via l'injection d'en-têtes hop-by-hop

Si un serveur de cache met en cache incorrectement du contenu basé sur des en-têtes hop-by-hop, un attaquant pourrait injecter des en-têtes malveillants pour empoisonner le cache. Cela servirait un contenu incorrect ou malveillant aux utilisateurs demandant la même ressource.

Scénario d'attaque:

  1. Un attaquant envoie une requête à une application web avec un en-tête hop-by-hop qui ne doit pas être mis en cache (par exemple, Connection: close, Cookie).

  2. Le serveur de cache mal configuré ne supprime pas l'en-tête hop-by-hop et met en cache la réponse spécifique à la session de l'attaquant.

  3. Les futurs utilisateurs demandant la même ressource reçoivent la réponse mise en cache, adaptée à l'attaquant, ce qui pourrait entraîner un détournement de session ou une exposition d'informations sensibles.

Dernière mise à jour