Injection d’en-tête hôte

Injection d’en-tête hôte

L'e-mail de réinitialisation est réel. Le lien qu’il contient n’est pas le vôtre.

Qu'est-ce que Injection d’en-tête hôte?

Les applications créent des liens de réinitialisation de mot de passe à partir de l'en-tête Host ou X-Forwarded-Host de la requête entrante, ce qui permet au demandeur de décider où ils pointent. Vous allez reconstruire une demande de réinitialisation avec un domaine similaire dans X-Forwarded-Host , laisser l'application envoyer un véritable jeton sur votre lien et le rejouer au cours de sa durée de vie pour devenir propriétaire du compte. Ensuite, vous créez l'URL de base à partir d'un APP_BASE_URL configuré plutôt que de demander des données, soutenues par une liste d'autorisation d'hôte au niveau du proxy. La même forme se cache dans les URL de téléchargement signées et les clés de cache.

Ce que vous apprendrez dans Injection d’en-tête hôte

Injection d’en-tête hôte — Étapes de la formation

  1. Utilisez la fonction de réinitialisation

    Bob est après les comptes Verdanta. Il s'agit d'une application de finances personnelles, donc chaque compte qu'il prend en charge est directement lié aux soldes bancaires réels de quelqu'un. Il ne connaît le mot de passe de personne, alors il commence là où il n'en a pas besoin : la page de mot de passe oublié. Il le soumet d’abord avec sa propre adresse jetable, afin de pouvoir voir exactement la demande formulée par la page.

  2. Trouver le point final

    La demande a été envoyée et le navigateur l'a enregistrée. Bob ouvre le panneau Réseau pour lire où la page l'a réellement envoyé.

  3. Lire le schéma corporel

    Une demande, et elle dit à Bob tout ce dont il a besoin. Il vérifie ce que la page a mis dans le corps de la requête.

  4. Forger la demande de réinitialisation

    Bob reconstruit cette même requête dans API Tester, où il peut ajouter une chose qu'un formulaire de navigateur ne lui permet jamais de définir : un en-tête d'hôte falsifié. Il demande une réinitialisation du compte réel d'Alice mais indique à l'application que la demande est arrivée à account-verdanta.app, un domaine similaire qu'il a enregistré et qu'il contrôle (notez le .app, où le vrai site de Verdanta est account.verdanta.com). Si l'application crée le lien de réinitialisation à partir de l'en-tête, l'e-mail d'Alice contiendra son domaine et son véritable jeton.

  5. La réponse ne révèle rien

    L'API répond par un simple 200 et un message générique. Rien dans la réponse n'indique que quelque chose s'est mal passé, c'est exactement pourquoi ce bug est silencieux. Les dégâts ne résident pas dans la réponse que Bob peut voir. Il se trouve dans l'e-mail qui se trouve désormais dans la boîte de réception d'Alice, contenant un lien qui commence par son domaine.

  6. Un e-mail de réinitialisation du mot de passe

    En dehors de l'horloge, Alice reçoit un e-mail de réinitialisation de mot de passe de Verdanta. Elle n’en a pas demandé, mais il ressemble exactement au vrai : même expéditeur, même formulation, même mise en page.

  7. Cliquez sur le lien de réinitialisation

    Alice clique sur le lien pour réinitialiser son mot de passe, exactement comme n'importe qui le ferait.

  8. Regardez la barre d'adresse

    La page de réinitialisation s'ouvre. Cela ressemble à Verdanta, mais la barre d'adresse raconte une autre histoire.

  9. Attrapez le jeton

    Le clic d'Alice n'a jamais atteint Verdanta. Son navigateur a ouvert account-verdanta.app, le serveur que Bob contrôle et le jeton de réinitialisation figurait dans l'URL. De retour sur sa propre machine, Bob suit le journal d'accès de ce serveur pour récupérer ce qui vient d'arriver.

  10. Rejouer le jeton

    Le jeton appartient à Alice, mais il est maintenant entre les mains de Bob, et les jetons de réinitialisation ne se soucient pas de savoir qui les présente. Avant son expiration, il le rejoue sur le véritable point de terminaison et définit un mot de passe de son choix.

Couverture des référentiels de sécurité

OWASP Top 10

  • A02:2025 Security Misconfiguration
  • A05:2021 Security Misconfiguration

CWE

  • CWE-644 Improper Neutralization of HTTP Headers for Scripting Syntax
  • CWE-640 Weak Password Recovery Mechanism for Forgotten Password

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security