Générer un PoC CSRF dans Burp Suite

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez une technique fondamentale en matière de tests de sécurité des applications web : la génération d'une preuve de concept (PoC) de Cross-Site Request Forgery (CSRF) à l'aide de Burp Suite. Le CSRF est un type d'attaque qui incite une victime à soumettre une requête malveillante. Burp Suite offre une fonctionnalité puissante pour créer automatiquement une PoC, qui peut être utilisée pour démontrer l'impact de la vulnérabilité.

Vous utiliserez le proxy de Burp Suite pour intercepter une requête qui modifie l'état de l'application (comme la mise à jour d'une adresse e-mail), puis vous utiliserez ses "Outils d'engagement" (Engagement tools) pour générer un formulaire HTML qui reproduit cette requête. Cet exercice pratique renforcera votre compréhension de la manière dont les attaques CSRF sont élaborées et testées.

Trouver une requête modifiant l'état (par exemple, mise à jour de l'e-mail) dans l'historique du proxy

Dans cette étape, vous allez lancer Burp Suite, utiliser son navigateur intégré pour effectuer une action sur un site web cible, puis localiser la requête correspondante dans l'historique du proxy. Une "requête modifiant l'état" est toute requête qui modifie des données sur le serveur, comme la modification d'un mot de passe, la soumission d'un commentaire ou la mise à jour des informations de profil.

Tout d'abord, lançons Burp Suite.

  1. Cliquez sur le menu Applications dans le coin supérieur gauche de l'écran.
  2. Allez dans Web et sélectionnez Burp Suite Community Edition.
  3. Une boîte de dialogue apparaîtra. Conservez les paramètres par défaut (Temporary project) et cliquez sur Next.
  4. Sur l'écran suivant, sélectionnez Use Burp defaults et cliquez sur Start Burp.

Une fois Burp Suite lancé, ouvrez son navigateur intégré.

  1. Allez dans l'onglet Proxy, puis dans le sous-onglet Intercept.
  2. Cliquez sur le bouton Open Browser. Une nouvelle fenêtre de navigateur Chromium s'ouvrira, pré-configurée pour proxyfier le trafic via Burp Suite.

Maintenant, effectuons une action à capturer. Pour ce laboratoire, nous utiliserons un site web de test de PortSwigger.

  1. Dans le navigateur Burp, naviguez vers l'URL suivante :
    https://portswigger.net/web-security/csrf/lab-no-defenses
    
  2. Cliquez sur Access the lab. Vous serez redirigé vers un site web de blog.
  3. Connectez-vous à l'application en utilisant les identifiants wiener:peter. Vous pouvez trouver ces identifiants dans la description du laboratoire sur la page.
  4. Après vous être connecté, vous verrez un formulaire "Update email". Entrez une nouvelle adresse e-mail, par exemple, test@example.com, et cliquez sur Update email.

Enfin, trouvons la requête dans Burp Suite.

  1. Retournez à la fenêtre Burp Suite.
  2. Naviguez vers l'onglet Proxy puis le sous-onglet HTTP history.
  3. Parcourez la liste des requêtes. Vous devriez voir une requête POST /my-account/change-email. C'est la requête modifiant l'état que nous voulons cibler. Cliquez dessus pour afficher ses détails dans le panneau ci-dessous.
POST /my-account/change-email HTTP/2
Host: your-lab-id.web-security-academy.net
...

email=test%40example.com

Vous avez maintenant intercepté et identifié avec succès une requête modifiant l'état.

Clic droit sur la requête

Dans cette étape, vous utiliserez le menu contextuel de Burp Suite pour accéder à ses fonctionnalités avancées. Le menu contextuel est un élément central du flux de travail de Burp Suite, offrant un accès rapide à divers outils qui peuvent être appliqués à une requête sélectionnée.

La requête POST /my-account/change-email étant toujours sélectionnée dans l'onglet Proxy > HTTP history, effectuez l'action suivante :

  1. Placez le curseur de votre souris sur la ligne de la requête sélectionnée.
  2. Cliquez avec le bouton droit sur la requête.

Cela ouvrira un grand menu contextuel avec de nombreuses options. Ce menu est sensible au contexte, ce qui signifie que les options disponibles peuvent changer en fonction de l'endroit où vous cliquez. En cliquant avec le bouton droit sur une requête, vous obtenez une liste d'actions que vous pouvez effectuer sur cette requête spécifique, comme l'envoyer à d'autres outils Burp tels que Repeater, Intruder, ou, dans notre cas, le générateur de PoC CSRF.

Prenez un moment pour examiner les options disponibles afin de vous familiariser avec les possibilités.

Aller dans Engagement tools > Generate CSRF PoC

Dans cette étape, vous allez naviguer dans le menu contextuel pour trouver et lancer le générateur de PoC CSRF. Cet outil est classé sous "Engagement tools" (Outils d'engagement), qui sont des fonctionnalités conçues pour aider à démontrer et à signaler les vulnérabilités.

Après avoir cliqué avec le bouton droit sur la requête à l'étape précédente, le menu contextuel est maintenant visible. Suivez ces étapes pour générer le PoC :

  1. Dans le menu contextuel, localisez l'option Engagement tools et placez votre souris dessus. Cela révélera un sous-menu.
  2. Dans le sous-menu qui apparaît, cliquez sur Generate CSRF PoC.

Une nouvelle fenêtre intitulée "Generate CSRF PoC" s'ouvrira. Burp Suite a automatiquement analysé la requête POST que vous avez sélectionnée et a généré une page HTML simple qui, une fois soumise, rejouera cette même requête. C'est le cœur d'une attaque CSRF : tromper le navigateur d'un utilisateur pour qu'il soumette une requête à un site web où il est déjà authentifié.

Examiner le formulaire HTML généré

Dans cette étape, vous allez examiner le code HTML généré par Burp Suite. Comprendre ce code est essentiel pour saisir le fonctionnement de l'attaque CSRF.

Dans la fenêtre "Generate CSRF PoC", vous verrez un bloc de code HTML. Il devrait ressembler à ceci :

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <script>
      history.pushState("", "", "/");
    </script>
    <form
      action="https://your-lab-id.web-security-academy.net/my-account/change-email"
      method="POST"
    >
      <input type="hidden" name="email" value="test&#64;example&#46;com" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

Analysons les composants clés de ce HTML :

  • <form action="..." method="POST">: Ceci définit un formulaire HTML. L'attribut action spécifie l'URL vers laquelle les données du formulaire seront envoyées — dans ce cas, le même point de terminaison utilisé pour changer l'adresse e-mail. La méthode method="POST" correspond à la méthode de la requête d'origine.
  • <input type="hidden" name="email" value="...">: Il s'agit d'un champ de formulaire caché. Il contient le paramètre requis par le serveur pour effectuer l'action. Ici, il s'agit du paramètre email avec la valeur test@example.com. Comme il est caché, une victime visitant cette page ne le verrait pas.
  • <input type="submit" value="Submit request" />: Ceci crée le bouton sur lequel une victime devrait cliquer pour déclencher l'attaque. Dans des attaques plus avancées, cette soumission peut être déclenchée automatiquement à l'aide de JavaScript.

Cette page HTML simple constitue une preuve de concept fonctionnelle de la vulnérabilité CSRF.

Utiliser la fonctionnalité 'Test in browser' pour vérifier le PoC

Dans cette étape, vous utiliserez le PoC généré pour confirmer la vulnérabilité CSRF. Burp Suite facilite cela avec une fonctionnalité de test intégrée.

Dans la fenêtre "Generate CSRF PoC", vous trouverez un bouton intitulé Test in browser. Cette fonctionnalité vous permet de tester le PoC directement dans la même session de navigateur où vous êtes authentifié auprès de l'application cible.

  1. Cliquez sur le bouton Test in browser.
  2. Burp Suite vous fournira une URL unique. Cliquez sur le bouton Copy pour copier cette URL dans votre presse-papiers.
  3. Retournez au navigateur intégré de Burp (la fenêtre Chromium).
  4. Collez l'URL copiée dans la barre d'adresse et appuyez sur Entrée.

Une nouvelle page se chargera, affichant uniquement un bouton "Submit request". C'est votre PoC en action.

  1. Cliquez sur le bouton Submit request.

Le navigateur enverra la requête POST à l'application web. Comme vous êtes déjà connecté (votre navigateur possède le cookie de session), l'application traitera la requête comme si vous l'aviez faite légitimement.

Pour confirmer que l'attaque a réussi :

  1. Retournez à l'onglet de l'application de blog.
  2. Actualisez la page ou cliquez sur le lien "My account".
  3. Vous devriez constater que l'e-mail a été mis à jour à test@example.com (ou toute autre valeur présente dans votre PoC). Le laboratoire devrait également afficher un message "Congratulations, you solved the lab !".

Cela confirme que le PoC CSRF fonctionne et que l'application est vulnérable.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser Burp Suite pour générer et tester une preuve de concept (Proof of Concept - PoC) de Cross-Site Request Forgery (CSRF).

Vous avez pratiqué le flux de travail complet pour cette tâche :

  1. Intercepter une requête modifiant l'état à l'aide du proxy de Burp.
  2. Utiliser le menu contextuel pour accéder aux Engagement tools.
  3. Générer le PoC CSRF en un seul clic.
  4. Analyser le HTML résultant pour comprendre le mécanisme de l'attaque.
  5. Tester le PoC dans le navigateur pour confirmer la vulnérabilité.

Cette compétence est essentielle pour tout professionnel de la sécurité des applications web, car elle offre un moyen clair et efficace de démontrer l'impact réel d'une faille CSRF aux développeurs et aux parties prenantes.