04/12/2025

CybersécuritéWeb, SEO et IA

Introduction à BurpSuite : un proxy local pour le debug et le pentest

I. Présentation

Pour le débogage, le développement web ou le pentest, rien de mieux qu'un proxy web local ! Celui-ci vous permet d'intercepter les requêtes et réponses web pour les analyser, les modifier, les rejouer, et bien plus encore. Je vous propose ici une introduction à l'un des proxys web locaux les plus connus et performant : BurpSuite Community Edition.

Nous rappellerons dans cet article ce qu'est un proxy web local et pourquoi ils sont indispensables pour le débogage dans un contexte web, le développement web, mais aussi les tests de sécurité offensifs (pentest) en environnement web. L'utilisation du proxy web local BurpSuite nous permettra, en effet, de visualiser pas à pas tous les échanges HTTP et HTTPS entre un client et un serveur. 

Nous verrons notamment dans cet article comment déployer le proxy local BurpSuite Community Edition sur un système d'exploitation Windows et un navigateur Firefox, ainsi que quelques éléments de configuration nécessaire à son utilisation.

II. C'est quoi, un proxy local ?

A. Rôle et fonctionnement de BurpSuite

Commençons par mieux comprendre ce qu’est un proxy local et son intérêt pour les cas d’usages que nous allons décrire.

Un proxy local est un logiciel installé votre système qui va permettre d’intercepter les échanges HTTP client-serveur, c’est-à-dire entre le navigateur (local) et un site web (distant). Il fonctionne comme un proxy d’entreprise classique en interceptant et journalisant les requêtes et les réponses, et même en “déchiffrant” (le terme n’est pas tout à fait exact) ces flux s’il s’agit d’HTTPS :

Schéma du positionnement d'un proxy web local.
Schéma du positionnement d'un proxy web local.

Une fois que les flux sont interceptés et journalisés, ces outils permettent également de rejouer les requêtes, de les modifier manuellement ou à la volée, voire d’effectuer toute sorte d’analyse sur les données récoltées.

Lorsque l’on se rend sur une page web, on ne se rend pas compte du volume et de la complexité des échanges qui s’opèrent en tâche de fond. Chaque image, script, ou ressource externe nécessite des requêtes supplémentaires, sans compter les appels API pour l’affichage dynamique des informations.

L’intérêt du proxy local réside aussi dans ses capacités de visualisation de l’information. L’intégralité des requêtes de notre navigateur web et des réponses qu’il reçoit sont journalisées et organisées visuellement pour optimiser le tri et la recherche d’information. Regardez plutôt :

Vue principale d'un proxy web local.
Vue principale d'un proxy web local.

Ici, nous avons un extrait des échanges qui s’opèrent lorsque l’on se rend sur la page d’accueil d’IT-Connect, ainsi que le détail d’une requête et d’une réponse.

B. Proxy local : pour le debug et le développement

L’interception et l’analyse des échanges client-serveur dans le cadre du debug et du développement web est généralement d’une grande aide. Ces éléments permettent d’aller beaucoup plus loin dans la compréhension des applications web et des éventuels problèmes (crash, lenteur, etc). Notamment, car l’interception des échanges permet d’avoir une vue exacte et complète de ce qu’il se passe derrière la simplicité du navigateur.

Également, les capacités de rejeu et modification des requêtes à la volée permettent d’effectuer une debug rapide ou un diagnostic directement au niveau de la requête web. Par exemple, modifier un User-Agent avec les paramètres natifs des navigateurs web peut s’avérer fastidieux, alors que dans un proxy local web, il s’agit simplement d’un bout de texte à consulter/modifier.

C. Proxy local : pour le pentest et le bug bounty

Les proxy locaux web tels que BurpSuite sont très utilisés dans le domaine du pentest, du bug bounty et de la cybersécurité offensive. Ceux-ci permettent, en effet, de très rapidement faire de nombreux tests et d’analyser en profondeur le comportement d’une page web, d’une application ou d’un service web.

De nombreuses fonctionnalités et plugins permettent aussi de réaliser des analyses ou des tests spécifiques, par exemple, le fuzzing (énumération des ressources d’un serveur), le crawling (suivi de tous les liens d’une page web), des attaques par brute-force ou même du scripting pour modifier dynamiquement les requêtes ou les réponses interceptées. Ces nombreuses capacités en font un outil incontournable pour les pentester, mais il ne faut pas oublier qu’elles sont aussi utiles aux différents métiers de l’informatique impliquant le protocole HTTP(S).

III. Installation de BurpSuite Community Edition

A. Déployer un proxy web local sous Windows

Nous allons à présent voir comment déployer rapidement et facilement le proxy local web BurpSuite Community Edition sous Windows. Cela passera par son déploiement, le paramétrage du navigateur Firefox et la résolution d’un problème commun lors de l’utilisation d’un proxy local. Pour commencer, il nous faut télécharger la dernière version de BurpSuite Community Edition sur le site web officiel de la solution :

Accès au téléchargement de BurpSuite Community Edition sur le site officiel.
Accès au téléchargement de BurpSuite Community Edition sur le site officiel.

Il vous faut cliquer sur le lien Go straight to downloads pour qu’il vous mène à la dernière version de BurpSuite CE (qui sera surement plus récente que celle que j’utilise au moment de rédiger ces lignes). Ensuite, sélectionnez BurpSuite Community Edition et Windows (x64).

Une fois l’exécutable sur votre système, il suffit de doubler-cliquer dessus, l’installation de BurpSuite CE est tout à fait classique : répertoire d’installation, extraction des fichiers, terminé. Nous pourrons ensuite lancer BurpSuite CE ainsi que Firefox. 

Au lancement de BurpSuite, deux fenêtres consécutives vont d’afficher, la première permet de paramétrer un fichier de stockage de la session Burp pour pouvoir fermer le logiciel sans perdre les informations récoltées. Cette fonctionnalité de sauvegarde n’est disponible que pour les versions Pro, donc nous restons ici sur un stockage temporaire :

Selection d'un fichier de stockag (version pro).
Selection d'un fichier de stockag (version pro).

La seconde permet de sélectionner un fichier de paramétrage/préférence que nous aurions préalablement créé, pour notre première utilisation, nous utiliserons les paramètres par défaut de toute façon : 

Sélection du fichier de préférence (pas utile pour un premier usage).
Sélection du fichier de préférence (pas utile pour un premier usage).

Pour intercepter les flux web, le proxy local a besoin de se mettre en écoute sur un port TCP sur lequel notre navigateur va envoyer ses requêtes. Par défaut, BurpSuite Community est en écoute sur le port TCP/8080 en localhost. Nous pouvons constater et configurer cette information en nous rendant dans le menu Burp puis Settings. Cela nous mènera dans le paramétrage du Proxy (Tools > Proxy) et vous pourrez constater le port d’écoute du Proxy ainsi que son état. N’hésitez pas à modifier cette configuration si elle ne correspond pas à votre environnement (port TCP/8080 déjà occupé par exemple) : 

Configuration et état du port d'écoute du proxy BurpSuite CE.
Configuration et état du port d'écoute du proxy BurpSuite CE.

À présent, nous pouvons démarrer Firefox et nous rendre dans l’icône des Paramètres puis dans Paramètres, chercher "proxy" dans la barre de recherche et cliquer sur Paramètres dans la section Paramètres réseau :

Paramétrage du proxy local dans le navigateur web Firefox.
Paramétrage du proxy local dans le navigateur web Firefox.

Ici, nous allons sélectionner Configuration manuelle du proxy et saisir l’adresse et le port d’écoute de notre proxy web local, c’est-à-dire 127.0.0.1 et 8080. N’oubliez pas de cocher la caser Utiliser également ce proxy pour HTTPS puis sur OK pour valider.

Bien ! Notre paramétrage est terminé, il ne nous reste plus qu’à résoudre un petit souci classique relatif à l’utilisation d’un proxy web local avec des sites en HTTPS correctement configurés.

B. Le problème de l'autorité de certification

Il est à présent temps de nous rendre sur une page web et de voir si nos flux sont interceptés. Commençons par une qui est forcément dans vos favoris : https://www.it-connect.fr

Aïe ! Visiblement notre navigateur n’est pas content de cette interception, il inscrit un message : Connexion bloquée : Problème de sécurité potentiel.

Avertissement de sécurité relatif à HSTS.
Avertissement de sécurité relatif à HSTS.

Cela vient du fait d’une protection nommée HSTS (HTTP Strict Transport Security), qui est imposée à tout navigateur souhaitant afficher une page de notre site : si le certificat SSL utilisé pour l’échange HTTP n’est pas valide, alors on interdit tout simplement la connexion

Cela permet d’éviter que l’utilisateur ne force la connexion dans un contexte dont la sécurité n’est pas garantie. Pour en savoir plus sur ce qu’est l’HSTS, consultez notre article dédié :

Vous vous souvenez quand j’ai dit que le proxy local web était capable de “déchiffrer les flux interceptés” ? Ce n’est pas tout à fait vrai. En réalité, BurpSuite agit comme un "homme du milieu" (man-in-the-middle) pour intercepter et inspecter le trafic, mais il ne "déchiffre" pas au sens cryptographique du terme. Ainsi, le navigateur et le proxy vont utiliser une session TLS distincte de celle entre le proxy et le serveur. D’ailleurs, regardons le certificat du site web que l’on est en train de visiter : 

Visualisation du certificat du site www.it-connect.fr lors de l'utilisation d'un proxy local.
Visualisation du certificat du site www.it-connect.fr lors de l'utilisation d'un proxy local.

Il ne s’agit pas du tout de celui d’IT-Connect.fr, mais celui de notre proxy web local BurpSuite, situé entre notre navigateur et le serveur web. De l’autre côté, notre proxy web local va communiquer normalement avec le serveur, agissant comme un client/navigateur classique, il sera alors capable de déchiffrer les réponses.

On comprend ici mieux le principe d’interception. Voici un diagramme détaillé qui aide à comprendre ce positionnement central : 

Schéma des communications TLS/HTTPS entre un navigateur, un proxy local et un service web.
Schéma des communications TLS/HTTPS entre un navigateur, un proxy local et un service web.

Le problème qui se pose ici est que le certificat envoyé par BurpSuite à notre navigateur n’est pas tout à fait conforme, car il n’est pas signé par une autorité de certification reconnue par notre navigateur (comme Let’s encrypt, DigitalSign ou Global Sign). C’est justement l’un des critères que le navigateur va utiliser pour indiquer si oui ou non, le certificat serveur est conforme vis-à-vis de l’HSTS.

Comprendre ce problème et la sécurité apportée par HSTS aide à mieux appréhender le positionnement et le fonctionnement du proxy web local.

Pas de panique, il existe une petite manipulation très simple prévue pour résoudre ce problème. Nous allons récupérer le certificat du CA (Certification Authority) de notre proxy web local et l’ajouter à la liste des autorités reconnues par notre navigateur. En l’ayant dans sa liste d’autorité de certification au moment de l’analyse du certificat, notre navigateur se dira simplement “OK, c’est une autorité de certification que je connais et qui est de confiance” et voila !

Deux manipulations différentes permettent de récupérer ce certificat. L’une via notre navigateur lorsque le proxy BurpSuite y est déjà paramétré. Il faut se rendre sur l’URL http://burp puis cliquer sur CA Certificate

Récupération du certificat de la CA BurpSuite depuis Firefox.
Récupération du certificat de la CA BurpSuite depuis Firefox.

On peut aussi le faire via BurpSuite, en nous rendant dans burp > Settings > Tools > Proxy > Import/Export CA certificate. Il suffira ensuite de choisir le chemin et le nom du fichier (extension à utiliser : .der)

Récupération du certificat de la CA BurpSuite depuis BurpSuite.
Récupération du certificat de la CA BurpSuite depuis BurpSuite.

Dans les deux cas, nous nous retrouvons avec un fichier cacert.der, que nous allons à présent importer dans Firefox. Il faut pour cela se rendre dans les Paramètres, puis chercher Certificat et accéder à Afficher les certificats

Accès à la gestion des autorités de certification dans Firefox.
Accès à la gestion des autorités de certification dans Firefox.

Nous pourrons ensuite, dans l’onglet Autorités cliquer sur Importer et aller chercher le certifcat .der de notre autorité de certification. Enfin, il faut cocher la caser Confirmer cette AC pour identifier les sites web (AC voulant dire Autorité de Certification), puis sur OK > OK et quitter les paramètres.

Ajout d'une nouvelle autorité de certification dans Firefox.
Ajout d'une nouvelle autorité de certification dans Firefox.

Ce que nous venons de faire ici est d’informer Firefox que l’autorité de certification PortSwigger est connue et de confiance. Les certificats SSL qu’elle signera seront donc conformes à la sécurité HSTS

Cette opération impacte la sécurité du navigateur (imaginez qu’un attaquant puisse ajouter ses propres autorités de certification à n’importe quel poste). Par conséquent, elle est parfois bloquée par des configurations sécurisées en environnement d’entreprise.

Bien ! Maintenant, nous pouvons recharger notre page https://www.it-connect.fr et l’erreur a disparu. L’intérêt de cette manipulation est justement qu’elle permettra d’aller ensuite sur tous les sites ayant l’HSTS d’activité (la majorité à présent).

À présent, le certificat qui sera présenté à notre navigateur sous interception sera celui de notre proxy web local.

IV. Introduction à l'utilisation de BurpSuite

A. Intercepter, investiguer et rejouer des requêtes web

Suite à notre premier accès réussi à une page web (même protégée par l’HSTS), nous pouvons nous rendre dans BurpSuite et plus précisément dans l’onglet Proxy et le sous-onglet HTTP Proxy, qui est la fonction principale de l’outil : 

Accès à la fonctionnalité HTTP history du Proxy BurpSuite.
Accès à la fonctionnalité HTTP history du Proxy BurpSuite.

Ici, nous aurons la liste des requêtes réalisées et interceptées par notre proxy web local. Différentes colonnes sont présentes pour afficher un tas d’informations utiles (ID, URL visée, méthode HTTP utilisée, code et temps de réponse, etc.). En cliquant sur l’une des requêtes, vous aurez alors le choix entre la sélection de la requête ou de la réponse. Je vous recommande ici de cliquer sur ce petit icône, qui permet d’afficher les deux côte à côte : 

Affichage des détails d'une requête HTTP et de sa réponse dans un le proxy web local.
Affichage des détails d'une requête HTTP et de sa réponse dans un le proxy web local.

Prenez le temps de faire des tests, en vous rendant sur différents sites et en scrutant les requêtes et les réponses. Vous verrez qu’il y a bien plus d’échanges que notre navigateur ne nous le montre (par défaut, BurpSuite n’affiche pas les images et fichiers CSS). L’idée ici est de voir en détail l’intégralité des échanges, tous les en-têtes des requêtes et des réponses, les code source de chaque élément, etc. Il s’agit d’une mine d’or pour le débogage, le développement et les tests d’intrusion !

B. Appliquer des filtres sur le proxy

Toujours dans l’onglet HTTP History, vous vous rendrez rapidement compte qu’il y a parfois trop d’informations pour faire une analyse rapide et efficace. Heureusement, une fonctionnalité de filtrage rapide est présente et permet de préciser nos recherches, même sur l’affichage en live des échanges. 

Nous devons pour l’utiliser nous rendre dans Filter Settings, juste au-dessus de la liste des échanges interceptés : 

Accès au filtre des échanges de l'HTTP history.
Accès au filtre des échanges de l'HTTP history.

Ici, nous pouvons : 

  • Appliquer un filtre ou filtre inverse sur une chaine de caractère que l’on cherche dans une requête ou une réponse;
  • Utiliser des filtres rapides pour inclure/exclure des types d’objet selon leur type MIME;
  • Exclure/Inclure de l’affichage des extensions spécifiques;
  • Exclure/Inclure de l’affichage des codes réponse HTTP (par exemple, ne pas afficher les échanges qui résultent en une erreur 500).

La fonction de filtrage n’empêche par l’interception et la journalisation des éléments exclus, mais juste leur affichage. Vous pourrez donc les réafficher après-coup en modifiant le filtrage appliqué.

Voici un exemple de filtrage appliqué pour n’afficher que les requêtes POST et leurs réponses

Application d'un filtre sur les requêtes POST.
Application d'un filtre sur les requêtes POST.

Un autre pour filtrer uniquement les code erreur (400 et 500) et en excluant certaines extensions

Application d'un filtre sur les code erreur HTTP et les extensions.
Application d'un filtre sur les code erreur HTTP et les extensions.

Bref, en connaissant un peu le protocole HTTP, on se rend compte que la majorité des éléments d’une requête ou d’une réponse peut être recherchée ou exclue de l’affichage, ce qui aide beaucoup lors d’une analyse.

C. Intercepter et modifier les réponses HTTP serveur

Si vous préférez une approche pas à pas, vous pouvez même mettre en pause chaque requête (ou réponse) pour la modifier, l’accepter ou la refuser. Il faut pour cela se rendre dans l’onglet Proxy > Intercept et activer l’interception en cliquant sur Intercept is off :

Accès à la fonctionnalité d'interception de BurpSuite.
Accès à la fonctionnalité d'interception de BurpSuite.

Par défaut et sans les filtrages adéquats, vous intercepterez certainement beaucoup trop de requêtes pour qu’une analyse précise et efficace soit possible. La maîtrise de BurpSuite vous permettra par la suite d’appliquer les bons filtres pour exclure ce qui ne vous intéresse pas ou inclure les réponses serveur par exemple.

Quand une requête est en cours d’interception, vous pourrez constater que plus rien n’avance côté navigateur ! En effet, le proxy local bloque la requête (qui n’est donc pas encore réceptionnée côté serveur) et nous permet notamment de la modifier, par exemple, pour changer un paramètre (dans un état qui serait refusé côté navigateur par du JS par exemple) ou en supprimer/rajouter un. Bref, tout ce qui est généralement fait en test d’intrusion pour tester les limites et étudier le comportement d’une application web face à une situation inattendue.

Une fois modifiée, nous pouvons Forward (faire suivre) la requête modifiée pour qu’elle atteigne finalement le serveur. Avec un petit paramétrage supplémentaire, nous pourrons même intercepter les réponses serveur pour les modifier ou les supprimer également.

La manipulation des réponses serveur est notamment utile pour debuger ou analyser le comportement du code JavaScript côté navigateur. On peut alors parfois faire apparaitre un bouton/formulaire en supprimant les balises “disabled” ou tenter de changer de permissions en modifiant un “admin:false” dans une réponse JSON.

Dernière fonctionnalité utile pour une prise en main efficace de BurpSuite Community Edition : le Repeater ! Prenez ici une requête qui vous intéresse et faites un clic droit Send to Repeater, puis rendez-vous dans l’onglet Repeater de BurpSuite CE : 

Accès à la fonction Repeater de BurpSuite.
Accès à la fonction Repeater de BurpSuite.

Votre requête est normalement arrivée dans un petit onglet portant l’identifiant 2 :

Vous pouvez librement modifier et soumettre la même requête plusieurs fois en observant à chaque essai les éventuelles différences de réponse du serveur. Là aussi, pour un debug précis et facile ou pour des tests d’intrusion, cette fonctionnalité est d’une grande utilité, puisque l’on se passe alors complètement des limitations techniques du navigateur.

Cette fonction permet, par exemple, de rejouer rapidement des requêtes en vue de contrôler une fonction de filtrage ou pour tester différents cas de figure. On fera un essai avec le paramètre ?recherche= à <script> et on observera la réponse serveur, une autre avec <sCript> une autre avec injection’, etc. Et cela en quelques secondes et sans passer par le navigateur.

Pour automatiser ce type de test (nommé fuzzing ou brute force en fonction du contexte), la fonction “Intruder” existe dans BurpSuite, mais est réservée à l’offre Pro.

D. Pour aller plus loin : BurpSuite Pro

Pour une première utilisation ou dans des contextes de debug ou le développement, l’offre BurpSuite Community gratuite est largement suffisante, il y a encore de nombreuses fonctionnalités, plugins et paramètres disponibles que nous n’avons pas évoqués. 

Cependant, pour aller plus loin et notamment pour des tests d’intrusion ou du bug bounty, l’offre Pro est quasiment indispensable. Elle permet notamment de débloquer des fonctionnalités d’analyse et d’automatisation qui sont selon moins parmi les meilleurs en termes d’outillage disponible.  Je pense bien sûr à l’Intruder (disponible en version “démo” sur la version Community Edition), mais aussi au Collaborator (service en ligne pour tester des appels sur différents services) et à de nombreux plugins très utiles.

V. Conclusion

Nous avons vu dans cet article ce qu'est un proxy web local, ils sont très utiles pour avoir une vue précise des échanges client-serveur dans un contexte web. Pour le débogage dans des situations complexes, pour mieux comprendre les échanges web réalisés dans le contexte du développement et pour la réalisation de tests d'intrusion, les proxy locaux sont des outils très utiles.

Nous avons également appris à déployer le proxy local BurpSuite, à paramétrer notre navigateur pour l'utiliser en situation opérationnelle et vu les bases de son utilisation et pour intercepter, analyser, modifier et rejouer des requêtes.

Il y a encore beaucoup à dire sur l'utilisation de BurpSuite et d'autres proxys locaux. Ces outils, utilisés au quotidien par certains métiers comme les auditeurs cybersécurité ou les développeurs, regorgent de fonctionnalités, d'astuce d'utilisation et de plugins.

Indiquez-nous dans les commentaires si vous souhaitez voir plus de contenu à propos de leur sujet sur notre site.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “Introduction à BurpSuite : un proxy local pour le debug et le pentest

  • Outil très intéressant, j’aimerais avoir davantage exemple d’utilisation et un apprentissage un peu plus poussé, un grand Merci.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.