Utiliser Grep-Extract pour extraire des données des réponses Intruder

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à utiliser l'une des fonctionnalités puissantes de Burp Intruder : 'Grep - Extract'. Cette fonctionnalité vous permet de définir des règles pour extraire des morceaux de texte spécifiques des réponses reçues lors d'une attaque Intruder. Elle est incroyablement utile pour collecter des informations précieuses qui peuvent changer à chaque requête, telles que les jetons CSRF, les identifiants de session ou d'autres données générées dynamiquement.

À la fin de ce laboratoire, vous serez en mesure de configurer Burp Intruder pour trouver et afficher automatiquement des données personnalisées à partir des réponses, rendant ainsi votre flux de travail de test de sécurité plus efficace. Nous simulerons un scénario où nous devons extraire un jeton caché de la réponse d'une page web.

Dans Intruder > Options, faites défiler jusqu'à la section 'Grep - Extract'

Dans cette étape, nous commencerons par lancer Burp Suite et envoyer une requête d'exemple à l'outil Intruder. Cela préparera le terrain pour la configuration de nos règles d'extraction.

Tout d'abord, vous devez lancer Burp Suite. Vous le trouverez généralement dans le menu des applications de votre environnement de bureau.

  1. Ouvrez le Terminal depuis votre bureau.
  2. Lancez Burp Suite en exécutant la commande burpsuite. Sélectionnez un projet temporaire et cliquez sur "Next", puis sur "Start Burp".
  3. Allez dans l'onglet Proxy > Intercept et assurez-vous que "Intercept is on".
  4. Ouvrez le navigateur Chromium intégré en allant dans Proxy > Intercept et en cliquant sur "Open Browser".
  5. Dans le navigateur, naviguez vers un site web simple, par exemple, http://portswigger.net.
  6. La requête sera interceptée dans Burp Suite. Faites un clic droit n'importe où dans la zone de texte de la requête et sélectionnez Send to Intruder.
  7. Maintenant, naviguez vers l'onglet Intruder. Vous verrez la requête que vous venez d'envoyer.
  8. Dans l'onglet Intruder, cliquez sur le sous-onglet Options.
  9. Faites défiler la page jusqu'à trouver la section intitulée Grep - Extract. C'est ici que nous allons configurer nos règles d'extraction de données.

Vous avez maintenant localisé avec succès la section 'Grep - Extract' et êtes prêt à ajouter une règle.

Ajouter une nouvelle règle d'extraction

Dans cette étape, vous allez ajouter une nouvelle règle vide à la section 'Grep - Extract'. Cette règle sera configurée ultérieurement pour définir quelles données spécifiques nous voulons extraire des réponses du serveur.

La fonctionnalité 'Grep - Extract' fonctionne en créant une liste de règles. Chaque règle définit un modèle à rechercher dans la réponse. Lorsqu'une réponse correspond à une règle, la partie spécifiée de la réponse est extraite et affichée dans une nouvelle colonne dans le tableau des résultats d'Intruder.

Pour ajouter une nouvelle règle, suivez simplement cette instruction :

  1. Dans la section Grep - Extract que vous avez localisée à l'étape précédente, cliquez sur le bouton Add.

Après avoir cliqué sur Add, une nouvelle entrée apparaîtra dans le tableau des règles. Cette nouvelle entrée aura des paramètres par défaut, que nous configurerons à l'étape suivante. La boîte de dialogue pour définir l'extraction apparaîtra également, prête à recevoir votre saisie.

Définir les délimiteurs de début et de fin pour extraire les données (par exemple, un jeton caché)

Dans cette étape, vous allez configurer la règle que vous venez d'ajouter. Nous allons indiquer à Burp ce qu'il faut extraire en définissant le texte qui précède et suit immédiatement nos données cibles. Ceci est fait en utilisant des délimiteurs de début et de fin.

Pour ce laboratoire, imaginons que nous essayons d'extraire un jeton CSRF d'une réponse contenant l'extrait HTML suivant :

<input type="hidden" name="csrf_token" value="a1b2c3d4e5f6g7h8i9j0" />

Notre objectif est d'extraire la valeur a1b2c3d4e5f6g7h8i9j0.

  1. Après avoir cliqué sur "Add" à l'étape précédente, une boîte de dialogue "Define extract grep" apparaît. Si elle n'est pas ouverte, cliquez sur la nouvelle règle que vous avez ajoutée pour l'ouvrir.
  2. L'outil récupère automatiquement la réponse de la requête originale que vous avez envoyée à Intruder. Vous pouvez la voir dans la vue de la réponse en bas.
  3. Pour définir l'extraction, nous allons spécifier un délimiteur de début et de fin. La méthode la plus fiable est d'utiliser l'option "Define start and end".
  4. Trouvez un morceau de texte unique dans la réponse que vous souhaitez extraire. Pour notre exemple, faisons comme si la réponse contenait l'extrait HTML ci-dessus.
  5. Dans la vue de la réponse, sélectionnez la valeur que vous souhaitez extraire (par exemple, a1b2c3d4e5f6g7h8i9j0).
  6. Les champs "Start" et "End" seront automatiquement remplis.
    • Le champ Start after expression doit contenir le texte qui précède immédiatement vos données cibles. Pour notre exemple, ce serait name="csrf_token" value=".
    • Le champ End at delimiter doit contenir le texte qui suit immédiatement vos données cibles. Pour notre exemple, ce serait ".
  7. Cliquez sur OK pour enregistrer la règle.

Vous avez maintenant configuré une règle qui recherchera dans chaque réponse le texte situé entre name="csrf_token" value=" et ", et l'extraira.

Lancer une attaque Intruder

Dans cette étape, vous allez configurer un payload de base et lancer l'attaque Intruder. Pendant que l'attaque s'exécute, Burp appliquera la règle Grep-Extract à chaque réponse qu'il reçoit.

Tout d'abord, nous devons définir une position pour le payload.

  1. Naviguez vers l'onglet Intruder > Positions.
  2. Le modèle de requête est affiché ici. Par défaut, Burp peut avoir automatiquement ajouté des marqueurs de payload (§...§) autour des valeurs des paramètres. Pour cet exercice, peu importe où se trouve le payload, car nous nous concentrons sur la réponse. Vous pouvez laisser les marqueurs par défaut ou les supprimer et en ajouter un n'importe où. Par exemple, vous pourriez l'ajouter à la valeur d'un cookie ou à un paramètre.
  3. Assurez-vous que le type d'attaque est défini sur Sniper.

Ensuite, nous configurons un payload simple.

  1. Naviguez vers l'onglet Intruder > Payloads.
  2. Sous Payload Sets, conservez l'ensemble de payloads sur 1.
  3. Sous Payload Options, sélectionnez Numbers dans la liste déroulante.
  4. Configurez-le pour qu'il s'exécute de 1 à 5 avec un pas de 1. Cela enverra 5 requêtes.

Enfin, lancez l'attaque.

  1. Cliquez sur le bouton Start attack dans le coin supérieur droit de l'onglet Intruder.
  2. Une nouvelle fenêtre "Intruder attack" s'ouvrira, affichant les résultats de l'attaque en temps réel.

L'attaque est maintenant en cours, et Burp est occupé à extraire des données en fonction de la règle que vous avez créée.

Visualiser les données extraites dans les nouvelles colonnes du tableau des résultats

Dans cette dernière étape, vous allez observer les résultats de votre configuration Grep-Extract. Les données que vous avez demandé à Burp de trouver sont maintenant soigneusement organisées dans la fenêtre des résultats de l'attaque.

  1. Regardez la fenêtre Intruder attack qui s'est ouverte à l'étape précédente.
  2. Vous verrez un tableau avec des colonnes telles que "Request", "Position", "Payload", "Status", "Length", etc.
  3. Faites défiler le tableau vers la droite. Vous devriez voir une nouvelle colonne. Par défaut, elle sera nommée Extract 1. Si vous aviez ajouté plus de règles, elles seraient nommées Extract 2, et ainsi de suite.
  4. Cette nouvelle colonne contient les données qui ont été extraites de chaque réponse en utilisant la règle que vous avez définie.

Si le site web que vous avez ciblé ne contient pas réellement la chaîne csrf_token que nous avons utilisée comme exemple, cette colonne pourrait être vide. Cependant, la présence de la colonne confirme que votre règle était active. Si vous aviez ciblé un jeton réel et dynamique sur une page de connexion, cette colonne serait maintenant remplie des jetons uniques de chaque réponse, prête à être analysée ou utilisée dans des attaques ultérieures.

Vous pouvez faire un clic droit sur l'en-tête du tableau pour ajouter ou supprimer des colonnes, ou cliquer sur un en-tête de colonne pour trier les résultats en fonction de ces données.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser la fonctionnalité 'Grep - Extract' dans Burp Intruder. Vous avez parcouru l'intégralité du processus, de l'envoi d'une requête à Intruder, à l'ajout et à la configuration d'une règle d'extraction avec des délimiteurs spécifiques, en passant par le lancement d'une attaque, et enfin, la visualisation des données extraites dans la fenêtre des résultats.

Cette compétence est essentielle pour automatiser le processus de collecte de données dynamiques à partir d'applications web, ce qui est une tâche courante dans les tests d'intrusion et l'analyse de sécurité. Vous pouvez désormais appliquer ces connaissances pour extraire des jetons CSRF, des identifiants de session, des clés API, ou toute autre information spécifique des réponses HTTP lors de vos évaluations de sécurité.