CSRF — Validation du header Referer (si présent)

CSRF where Referer validation depends on header being present

La fonctionnalité de changement d'email de ce laboratoire est vulnérable à une attaque CSRF. Le serveur tente de bloquer les requêtes cross-domain en vérifiant l’en-tête Referer, mais il existe une gestion de repli (fallback) insecure qui accepte la requête si l’en-tête Referer est absent.

  • Compte recommandée : wiener:peter (utiliser ce compte pour reproduire le scénario depuis la victime).

Le serveur vérifie le champ Referer pour savoir d’où provient la requête et rejette les requêtes dont le Referer n’est pas celui du site.

  • En envoyant un formulaire POST depuis le serveur d’exploit, la réponse renvoie : "Invalid referer header" — la vérification fonctionne lorsque le header est présent et incorrect.

"Invalid referer header"

Toutefois, si la requête arrive sans en-tête Referer, le serveur accepte la requête (comportement de repli dangereux).

Méthode d’exploitation (principe)

  1. Héberger une page sur le serveur d’exploit qui soumet un formulaire POST vers /my-account/change-email avec l’email attaquant.

  2. Forcer la page exploit à supprimer l’en-tête Referer du navigateur afin que la validation échoue en tant que blocage (puisque le serveur accepte l’absence de Referer).

  3. Une manière simple pour demander au navigateur de ne pas envoyer de Referer est d’ajouter une balise <meta name="referrer" content="no-referrer"> dans la page d’exploit avant de soumettre le formulaire.

Mis à jour

Ce contenu vous a-t-il été utile ?