Modifier une requête HTTP à la volée dans Burp Proxy

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les bases de l'interception et de la modification du trafic web à l'aide de Burp Suite, l'un des outils les plus populaires pour les tests de sécurité des applications web. La capacité d'intercepter une requête HTTP, de modifier son contenu avant qu'elle n'atteigne le serveur, puis d'observer la réponse, est une compétence fondamentale pour découvrir un large éventail de vulnérabilités, telles que le "parameter tampering" (altération de paramètres) et les "insecure direct object references" (références directes d'objets non sécurisées).

Vous utiliserez Burp Proxy pour capturer une requête de votre navigateur, modifier un paramètre d'URL à la volée, et la transmettre à une application web simple fonctionnant localement. Cet exercice pratique démontrera comment un proxy peut être utilisé pour manipuler la communication entre un client et un serveur.

Activer le mode d'interception dans l'onglet Proxy

Dans cette étape, vous allez lancer Burp Suite et activer sa fonctionnalité principale pour l'interception du trafic. Le Burp Proxy agit comme un intermédiaire (man-in-the-middle) entre votre navigateur et le serveur web cible, vous permettant de visualiser et de modifier tout le trafic qui le traverse.

Tout d'abord, ouvrez le lanceur d'applications dans le coin supérieur gauche du bureau et démarrez Burp Suite.

  1. Cliquez sur "Temporary project" (Projet temporaire), puis sur "Next" (Suivant).
  2. Sélectionnez "Use Burp defaults" (Utiliser les paramètres par défaut de Burp) et cliquez sur "Start Burp" (Démarrer Burp).

Une fois Burp Suite ouvert, naviguez vers l'onglet Proxy. C'est ici que vous contrôlez l'interception du trafic HTTP.

Dans l'onglet Proxy, vous verrez plusieurs sous-onglets. Assurez-vous d'être sur le sous-onglet Intercept. Ici, vous trouverez un bouton qui active et désactive l'interception. Par défaut, elle peut être désactivée.

Cliquez sur le bouton qui indique "Intercept is off" (L'interception est désactivée) pour l'activer. Le texte du bouton changera pour "Intercept is on" (L'interception est activée), et il apparaîtra enfoncé.

Maintenant, Burp Proxy attend activement de capturer la prochaine requête HTTP effectuée par le navigateur préconfiguré dans cet environnement de laboratoire.

Dans cette étape, vous allez générer une requête HTTP à partir du navigateur web et la capturer dans Burp Suite. Comme le mode d'interception est activé, Burp retiendra la requête, l'empêchant d'atteindre le serveur jusqu'à ce que vous décidiez quoi en faire.

Ouvrez le navigateur web fourni dans l'environnement de laboratoire. Le navigateur est déjà configuré pour envoyer son trafic via le Burp Proxy fonctionnant sur 127.0.0.1:8080.

Dans la barre d'adresse du navigateur, accédez à l'application web simple qui a été démarrée par le script d'installation. Tapez l'URL suivante et appuyez sur Entrée :

http://127.0.0.1:5000/search?q=books

Vous remarquerez que l'onglet du navigateur affiche une icône de chargement et que la page ne se charge pas. C'est le comportement attendu. Cela indique que Burp Proxy a intercepté avec succès la requête et attend votre action.

Maintenant, revenez à la fenêtre Burp Suite. Dans l'onglet Proxy -> Intercept, vous verrez le contenu brut de la requête HTTP que votre navigateur vient d'envoyer.

GET /search?q=books HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
...

Vous avez maintenant capturé avec succès une requête HTTP avant qu'elle n'atteigne sa destination.

Modifier la valeur d'un paramètre dans la vue 'Raw' de la requête

Dans cette étape, vous allez modifier la requête HTTP interceptée. C'est le cœur de la manipulation de requêtes à la volée. Vous pouvez modifier n'importe quelle partie de la requête, y compris la méthode, le chemin, les en-têtes ou le corps. Pour ce laboratoire, vous allez modifier un paramètre d'URL.

Avec la requête affichée dans l'onglet Proxy -> Intercept, assurez-vous d'être dans la vue Raw. Cette vue montre le texte brut de la requête, ce qui permet de la modifier directement.

Localisez la première ligne de la requête :

GET /search?q=books HTTP/1.1

La partie q=books est un paramètre d'URL. L'application côté serveur utilise la valeur de q (qui est actuellement books) pour générer sa réponse.

Maintenant, modifiez cette valeur directement dans la zone de texte. Cliquez dans la vue Raw et remplacez books par dvds.

La première ligne modifiée devrait maintenant ressembler à ceci :

GET /search?q=dvds HTTP/1.1

Vous avez modifié avec succès les données de la requête en transit. Le navigateur n'est pas conscient de cette modification ; il pense toujours qu'il a demandé la page avec q=books. Le serveur n'a pas encore reçu de requête.

Transférer la requête modifiée

Dans cette étape, vous allez libérer la requête modifiée de Burp Proxy et lui permettre de continuer vers le serveur web.

Après avoir modifié la requête dans l'onglet Intercept, vous devez décider quoi en faire. Vous avez trois options principales via les boutons en haut de la vue :

  • Forward : Envoie la requête (dans son état actuel, potentiellement modifié) au serveur.
  • Drop : Écarte complètement la requête. Le navigateur finira par expirer.
  • Action : Fournit un menu d'autres actions, comme l'envoi de la requête à d'autres outils Burp.

Pour envoyer votre requête modifiée au serveur, cliquez sur le bouton Forward.

Après avoir transféré la requête, Burp affichera la réponse du serveur dans le même onglet. Vous pouvez renvoyer cette réponse au navigateur en cliquant à nouveau sur Forward.

Pour éviter d'intercepter les requêtes ultérieures (comme celle d'une favicon), il est conseillé de désactiver l'interception une fois que vous avez terminé avec la requête qui vous intéresse. Cliquez sur le bouton "Intercept is on" pour le basculer à nouveau sur "Intercept is off". Cela permet à tout autre trafic de circuler librement.

Observer la réponse du serveur à la requête modifiée

Dans cette étape, vous allez observer le résultat de votre action dans le navigateur et dans l'historique de Burp Suite. Cela confirme que le serveur a traité les données modifiées.

Tout d'abord, retournez à votre navigateur web. La page, qui était précédemment bloquée en cours de chargement, devrait maintenant être complètement chargée. Regardez le contenu affiché sur la page. Il devrait indiquer :

You searched for: dvds

Cela confirme que le serveur a reçu et traité la valeur du paramètre modifié (dvds), et non celle d'origine (books). Vous avez réussi à tromper le serveur pour qu'il affiche un contenu différent.

Ensuite, retournez à Burp Suite pour une vue plus détaillée. Cliquez sur l'onglet Proxy, puis sur le sous-onglet HTTP history. Cet onglet enregistre toutes les requêtes et réponses qui sont passées par le proxy. Vous devriez voir une entrée pour GET /search?q=dvds. Cliquez dessus pour voir la requête complète que vous avez envoyée et la réponse correspondante que le serveur a retournée, fournissant ainsi un enregistrement complet de l'interaction.

Cet exercice simple démontre un concept puissant : ne jamais faire confiance aux données provenant du côté client, car elles peuvent être facilement manipulées par un attaquant utilisant un outil proxy comme Burp Suite.

Résumé

Dans ce laboratoire, vous avez acquis la compétence essentielle de modifier une requête HTTP à la volée à l'aide de Burp Proxy.

Vous avez réussi à :

  • Activer le mode d'interception dans Burp Proxy.
  • Capturer une requête HTTP en direct depuis un navigateur.
  • Modifier un paramètre d'URL dans la vue de la requête brute.
  • Transférer la requête falsifiée au serveur web.
  • Observer que la réponse du serveur était basée sur vos données modifiées.

Cette technique est un élément fondamental pour les tests de sécurité des applications web, vous permettant de sonder une grande variété de vulnérabilités en manipulant les communications client-serveur.