Aller au contenu principal

Burp Suite

L'outil de référence des pentesters pour disséquer le web

Notions théoriques

Vous savez maintenant utiliser OWASP ZAP pour scanner une application web. Mais dans le monde professionnel du test d'intrusion, un autre outil règne en maître : Burp Suite.

Si ZAP est le couteau suisse open source de l'audit web, Burp Suite est le scalpel du pentester. Plus précis, plus configurable, plus puissant dans l'interception et la manipulation manuelle des requêtes. C'est l'outil utilisé quotidiennement par la majorité des auditeurs en sécurité applicative.

Qu'est-ce que Burp Suite ?

Burp Suite est une plateforme de test de sécurité des applications web développée par PortSwigger. Comme ZAP, il fonctionne comme un proxy intercepteur, mais il va beaucoup plus loin dans les possibilités de manipulation manuelle des requêtes HTTP.

Burp Suite existe en trois versions :

VersionPrixUsage
Community EditionGratuiteApprentissage, interception manuelle, fonctionnalités de base
Professional~449 $/anPentest professionnel, scanner automatique complet
EnterpriseSur devisIntégration CI/CD, scans automatisés à grande échelle

Dans ce cours, nous utiliserons la Community Edition, qui est gratuite et suffisante pour apprendre.

Burp Suite vs OWASP ZAP : quelles différences ?

CritèreOWASP ZAPBurp Suite Community
LicenceOpen source (Apache 2.0)Gratuite mais propriétaire
Scanner automatiqueComplet et gratuitLimité en version gratuite
Interception manuelleCorrecteExcellente (Repeater, Intruder)
ExtensibilitéAdd-ons ZAPBApps (extensions Java/Python)
Facilité de prise en mainPlus simplePlus complexe mais plus puissant
Usage professionnelCourant en DevSecOpsStandard en pentest

En résumé : ZAP excelle dans le scan automatique gratuit, tandis que Burp Suite excelle dans l'interception et la manipulation manuelle. Les deux outils sont complémentaires.

Comment fonctionne Burp Suite ?

Comme ZAP, Burp Suite se place entre votre navigateur et le serveur cible en tant que proxy :

[Navigateur] --> [Burp Suite (proxy)] --> [Serveur web]
[Navigateur] <-- [Burp Suite (proxy)] <-- [Serveur web]

Burp écoute par défaut sur 127.0.0.1:8080. Toutes les requêtes HTTP/HTTPS passant par le proxy sont capturées, analysées et peuvent être modifiées à la volée.

Les outils principaux de Burp Suite

Burp Suite est organisé en onglets, chacun correspondant à un outil spécialisé :

1. Proxy — L'intercepteur

C'est le cœur de Burp. L'onglet Proxy permet de :

  • Voir toutes les requêtes HTTP qui transitent (HTTP history)
  • Intercepter une requête avant qu'elle n'atteigne le serveur (mode Intercept is on)
  • Modifier la requête en temps réel, puis la relâcher vers le serveur

C'est comme mettre le trafic réseau en pause pour l'examiner et le modifier.

2. Repeater — Le laboratoire de requêtes

Le Repeater permet de rejouer une requête HTTP autant de fois que nécessaire, en la modifiant à chaque fois. C'est l'outil idéal pour :

  • Tester manuellement une injection SQL en ajustant le payload
  • Observer précisément comment le serveur réagit à chaque variation
  • Comprendre le comportement d'un endpoint sans naviguer dans le navigateur

On envoie une requête depuis le Proxy vers le Repeater d'un clic droit > "Send to Repeater".

3. Intruder — L'outil de fuzzing

L'Intruder permet d'automatiser l'envoi de requêtes en faisant varier un ou plusieurs paramètres. Il est utilisé pour :

  • Tester des listes de payloads (dictionnaires de mots de passe, payloads XSS, injections SQL...)
  • Faire du brute force sur un formulaire de connexion
  • Identifier des réponses anormales qui trahissent une vulnérabilité
attention

En version Community, l'Intruder est volontairement ralenti (throttled). Les attaques par force brute sont donc très lentes. La version Professional lève cette limitation.

4. Decoder — Le convertisseur

Le Decoder encode et décode des données dans différents formats : Base64, URL encoding, HTML entities, hexadécimal, etc. Utile pour :

  • Décoder un token JWT
  • Encoder un payload XSS pour contourner un filtre
  • Comprendre un paramètre encodé dans une URL

5. Comparer — Le comparateur

Le Comparer permet de comparer visuellement deux requêtes ou deux réponses HTTP pour repérer les différences. Utile pour identifier ce qui change entre une requête légitime et une requête d'attaque.

6. Target — La cartographie

L'onglet Target affiche l'arborescence de tous les hôtes et URLs découverts pendant la navigation. Il permet de définir le scope (périmètre) du test pour ne pas déborder sur des domaines non autorisés.

Le navigateur intégré de Burp

Depuis les versions récentes, Burp Suite inclut un navigateur Chromium intégré précconfiguré pour utiliser le proxy Burp. Il n'est donc plus nécessaire de configurer manuellement le proxy dans Firefox.

Pour le lancer : Proxy > Intercept > Open browser.

Ce navigateur gère automatiquement les certificats HTTPS de Burp, ce qui évite les erreurs de certificat lors de l'interception de trafic HTTPS.

Pourquoi apprendre Burp Suite ?

  • C'est l'outil le plus demandé dans les offres d'emploi en pentest et sécurité applicative
  • Les certifications de sécurité (BSCP de PortSwigger, OSCP, eWPT) l'utilisent comme outil principal
  • Il permet de comprendre en profondeur le fonctionnement du protocole HTTP
  • La Web Security Academy de PortSwigger (gratuite) propose plus de 250 labs pratiques avec Burp

Exemple pratique

Contexte

Pour pratiquer légalement, nous allons utiliser DVWA (Damn Vulnerable Web Application), une application volontairement vulnérable conçue pour l'apprentissage.

L'application Web DVWA peut être facilement installée en local via Docker :

docker run --rm -it -p 80:80 vulnerables/web-dvwa

Accédez ensuite à http://localhost dans votre navigateur (identifiants par défaut : admin / password).

Étape 1 — Installer et lancer Burp Suite

  1. Téléchargez Burp Suite Community depuis portswigger.net et installez-le.
  2. Au lancement, cliquez sur "Temporary project" puis "Next" > "Start Burp".
  3. Burp écoute par défaut sur 127.0.0.1:8080.

Utilisez le navigateur intégré de Burp (Proxy > Intercept > Open browser) pour éviter de configurer manuellement le proxy dans votre navigateur.

Étape 2 — Naviguer sur DVWA pour capturer le trafic

  1. Dans le navigateur intégré de Burp, accédez à http://localhost.
  2. Connectez-vous avec admin / password.
  3. Naviguez sur quelques pages (SQL Injection, XSS Reflected, etc.).
  4. Dans Burp, allez dans l'onglet Proxy > HTTP history : vous voyez toutes les requêtes capturées.

Étape 3 — Intercepter et modifier une requête

  1. Dans Burp, activez l'interception : Proxy > Intercept > "Intercept is on".
  2. Dans le navigateur, allez sur la page SQL Injection de DVWA et soumettez la valeur 1 dans le champ User ID.
  3. La requête est mise en pause dans l'onglet Intercept de Burp. Vous voyez quelque chose comme :
    GET /vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
  4. Modifiez le paramètre id=1 en id=1' OR '1'='1 directement dans Burp.
  5. Cliquez sur "Forward" pour envoyer la requête modifiée au serveur.
  6. Observez dans le navigateur : tous les utilisateurs de la base sont affichés. Vous venez d'exploiter une injection SQL en temps réel.

Étape 4 — Utiliser le Repeater pour affiner l'attaque

  1. Dans Proxy > HTTP history, trouvez la requête vers /vulnerabilities/sqli/.
  2. Faites un clic droit > "Send to Repeater".
  3. Dans l'onglet Repeater, modifiez le paramètre id avec différents payloads :
    • 1' OR '1'='1 → affiche tous les utilisateurs
    • 1' UNION SELECT user, password FROM users# → extrait les mots de passe
  4. Cliquez sur "Send" à chaque fois et observez la réponse dans le panneau de droite.

Le Repeater est l'outil parfait pour itérer rapidement sur une injection sans devoir naviguer dans le navigateur à chaque essai.

Étape 5 — Tester un XSS avec le Repeater

  1. Dans HTTP history, trouvez une requête vers /vulnerabilities/xss_r/ (XSS Reflected).
  2. Envoyez-la au Repeater.
  3. Modifiez le paramètre name avec le payload :
    <script>alert('XSS')</script>
  4. Cliquez sur "Send" et cherchez dans la réponse HTML si le script apparaît sans échappement.
  5. Si vous voyez <script>alert('XSS')</script> dans le HTML de la réponse, la faille XSS est confirmée.

Étape 6 — Découvrir la cible avec l'onglet Target

Allez dans l'onglet Target > Site map. Vous voyez l'arborescence complète de DVWA telle que Burp l'a découverte à travers votre navigation. Chaque endpoint est listé avec ses paramètres.

astuce

Le Site map est très utile pour avoir une vision globale de la surface d'attaque avant de commencer un audit méthodique.


Test de mémorisation/compréhension


Quelle entreprise développe Burp Suite ?


Sur quel port Burp Suite écoute-t-il par défaut en tant que proxy ?


Quel outil de Burp permet de rejouer et modifier une requête HTTP manuellement ?


Quelle est la principale limitation de Burp Suite Community Edition ?


À quoi sert l'onglet 'Intercept' dans le Proxy de Burp ?


Quel outil de Burp est utilisé pour automatiser l'envoi de requêtes avec des payloads variables ?


Comment envoyer une requête du Proxy vers le Repeater dans Burp ?


Quel avantage principal Burp Suite a-t-il sur OWASP ZAP ?


Qu'est-ce que le 'scope' dans l'onglet Target de Burp ?


Quel navigateur Burp Suite intègre-t-il pour faciliter la configuration du proxy ?



TP 1 — Audit de sécurité de OWASP Juice Shop avec Burp Suite

OWASP Juice Shop est une application Web e-commerce volontairement truffée de vulnérabilités. Elle ressemble à une vraie application moderne : interface Angular, API REST, base de données SQLite, authentification JWT.

astuce

Dans ce TP, vous allez utiliser Burp Suite pour intercepter, analyser et exploiter manuellement les failles de Juice Shop. L'accent est mis sur la manipulation manuelle des requêtes, là où Burp excelle.


Partie 1 — Mise en place de l'environnement

Étape 1.1 — Lancer Juice Shop via Docker

Ouvrez un terminal et exécutez la commande suivante :

docker pull bkimminich/juice-shop
docker run --rm -p 3000:3000 bkimminich/juice-shop

Attendez que le terminal affiche une ligne indiquant que le serveur écoute sur le port 3000. Ouvrez ensuite votre navigateur et accédez à :

http://localhost:3000

Vous devez voir apparaître la boutique en ligne Juice Shop avec ses produits.

Si Docker n'est pas installé sur votre machine, téléchargez-le depuis https://www.docker.com/products/docker-desktop

Une solution

Étape 1.2 — Configurer Burp Suite

Lancez Burp Suite Community Edition. Au démarrage :

  1. Sélectionnez "Temporary project" puis cliquez sur "Next"
  2. Gardez les paramètres par défaut et cliquez sur "Start Burp"
  3. Vérifiez que le proxy écoute sur 127.0.0.1:8080 dans Proxy > Proxy settings > Proxy listeners

Pour naviguer sur Juice Shop via Burp :

  • Option recommandée : cliquez sur Proxy > Intercept > Open browser pour utiliser le navigateur Chromium intégré de Burp (aucune configuration nécessaire)
  • Option alternative : configurez manuellement Firefox pour utiliser le proxy 127.0.0.1:8080

Accédez à http://localhost:3000 depuis le navigateur. L'URL doit apparaître dans Proxy > HTTP history.

Une solution

Partie 2 — Exploration et interception

Étape 2.1 — Naviguer sur Juice Shop et observer le trafic

Désactivez d'abord l'interception (Proxy > Intercept > "Intercept is off") pour naviguer librement sans que chaque requête soit mise en pause.

Naviguez sur Juice Shop pendant environ 5 minutes :

  1. Parcourez la liste des produits (page d'accueil)
  2. Cliquez sur plusieurs produits pour voir leur fiche détaillée
  3. Créez un compte via le formulaire d'inscription (#/register)
  4. Connectez-vous avec votre nouveau compte
  5. Ajoutez un produit au panier
  6. Consultez la page "About Us" et la page de contact

Allez ensuite dans Proxy > HTTP history et examinez les requêtes capturées. Identifiez les endpoints API REST utilisés par l'application.

Une solution

Étape 2.2 — Intercepter le formulaire de connexion

Maintenant, activez l'interception : Proxy > Intercept > "Intercept is on".

  1. Dans le navigateur, déconnectez-vous puis accédez au formulaire de connexion (#/login)
  2. Entrez votre email et mot de passe, puis cliquez sur "Log in"
  3. La requête est mise en pause dans Burp. Vous devriez voir :
POST /rest/user/login HTTP/1.1
Host: localhost:3000
Content-Type: application/json

{"email":"test@test.com","password":"Test1234!"}
  1. Ne modifiez rien pour l'instant. Cliquez sur "Forward" pour la transmettre au serveur.
  2. Observez la réponse dans HTTP history : le serveur renvoie un token JWT d'authentification.
Une solution

Partie 3 — Exploitation des vulnérabilités avec le Repeater

Étape 3.1 — Injection SQL sur l'endpoint de recherche

  1. Dans HTTP history, trouvez une requête vers /rest/products/search?q=
  2. Faites un clic droit > "Send to Repeater"
  3. Dans l'onglet Repeater, modifiez le paramètre q avec les payloads suivants, en cliquant sur "Send" à chaque fois :

Test 1 — Détection de la faille :

q='

Test 2 — Extraction de tous les produits :

q='))--

Test 3 — Extraction des données utilisateurs (UNION SELECT) :

q=')) UNION SELECT id, email, password, '4', '5', '6', '7', '8', '9' FROM Users--

Pour chaque test, observez la réponse dans le panneau de droite du Repeater.

Une solution

Étape 3.2 — Contournement d'authentification par injection SQL

  1. Dans HTTP history, trouvez la requête POST vers /rest/user/login
  2. Envoyez-la au Repeater (clic droit > "Send to Repeater")
  3. Dans le corps JSON de la requête, modifiez le champ email :
{"email":"' OR 1=1--","password":"anything"}
  1. Cliquez sur "Send" et observez la réponse.
Une solution

Étape 3.3 — Tester un XSS via le Repeater

  1. Dans HTTP history, trouvez une requête vers la page de recherche ou vers /rest/products/search?q=test
  2. Envoyez-la au Repeater
  3. Modifiez le paramètre de recherche avec :
<iframe src="javascript:alert(`xss`)">
  1. Observez si le payload apparaît sans échappement dans la réponse HTML.

Ensuite, testez directement dans le navigateur intégré de Burp :

http://localhost:3000/#/search?q=<iframe src="javascript:alert(`xss`)">
Une solution

Partie 4 — Utilisation de l'Intruder pour le fuzzing

Étape 4.1 — Préparer une attaque par dictionnaire sur le login

  1. Dans HTTP history, trouvez la requête POST vers /rest/user/login
  2. Faites un clic droit > "Send to Intruder"
  3. Dans l'onglet Intruder > Positions, Burp surligne automatiquement les paramètres. Cliquez sur "Clear §" pour tout désélectionner, puis sélectionnez uniquement la valeur du champ password et cliquez sur "Add §" :
{"email":"admin@juice-sh.op","password":"§anything§"}
  1. Allez dans l'onglet Payloads :
    • Type : "Simple list"
    • Ajoutez manuellement quelques mots de passe courants :
      admin
      password
      123456
      admin123
      test
      letmein
  2. Cliquez sur "Start attack"
Une solution

Étape 4.2 — Analyser les résultats de l'Intruder

Dans la fenêtre de résultats de l'Intruder, triez par code de statut ou par longueur de réponse. Les réponses qui diffèrent des autres (par le code HTTP ou la taille) indiquent généralement un succès.

Cliquez sur la ligne avec le code 200 et examinez la réponse complète dans le panneau inférieur. Vous y retrouverez le token JWT d'authentification de l'administrateur.

Une solution

Partie 5 — Analyse et rapport

Étape 5.1 — Documenter les vulnérabilités trouvées

Créez un fichier texte rapport-burp-juiceshop.md et documentez chaque vulnérabilité exploitée durant ce TP :

Pour chaque faille, notez :

  • Le nom de la vulnérabilité
  • L'endpoint concerné et le paramètre vulnérable
  • La requête exacte (copiée depuis le Repeater de Burp)
  • La réponse du serveur qui confirme la vulnérabilité
  • La correction recommandée
Une solution

Étape 5.2 — Rédiger le plan de remédiation

Sur la base de vos découvertes, rédigez un court plan de remédiation (15 à 20 lignes) destiné à l'équipe de développement. Ce document doit :

  1. Lister les 3 vulnérabilités les plus critiques trouvées, par ordre de priorité
  2. Pour chacune, expliquer le risque en termes métier (pas uniquement technique)
  3. Proposer une correction précise avec un exemple de code si possible
  4. Évaluer grossièrement la difficulté de correction (facile / modérée / complexe)
Une solution

Récapitulatif de ce que vous avez accompli

Au terme de ce TP, vous avez configuré Burp Suite comme proxy d'interception, capturé et analysé le trafic HTTP d'une application moderne, exploité manuellement une injection SQL via le Repeater pour extraire des données sensibles, contourné l'authentification par injection SQL, utilisé l'Intruder pour une attaque par dictionnaire sur un formulaire de connexion, et produit un rapport d'audit structuré avec plan de remédiation.

Contrairement à l'approche automatisée de ZAP, vous avez ici construit chaque attaque manuellement, ce qui donne une compréhension bien plus profonde des vulnérabilités et de leur mécanisme.


TP 2 — Audit de sécurité de DVWA avec Burp Suite

Contexte du TP

Vous êtes auditeur en sécurité applicative, et un client vous confie l'audit de son application Web interne. Pour simuler cette situation, vous utilisez DVWA en local et Burp Suite Community.

Travail demandé

Partie 1 — Mise en place

  1. Lancez DVWA via Docker :
    docker run --rm -it -p 80:80 vulnerables/web-dvwa
  2. Connectez-vous à http://localhost avec admin / password.
  3. Cliquez sur le bouton "Create database" (si cela n'a pas déjà été fait).
  4. Reconnectez-vous à http://localhost avec admin / password.
  5. Dans DVWA, allez dans "DVWA Security" et vérifiez que le niveau de sécurité est bien "Low".
  6. Lancez Burp Suite Community et ouvrez le navigateur intégré (Proxy > Intercept > Open browser).
  7. Naviguez sur http://localhost via le navigateur intégré et vérifiez que les requêtes apparaissent dans Proxy > HTTP history.

Partie 2 — Interception et Repeater

  1. Naviguez sur la page "SQL Injection" de DVWA et soumettez la valeur 1 dans le champ User ID.
  2. Dans HTTP history, trouvez cette requête et envoyez-la au Repeater.
  3. Dans le Repeater, testez les payloads suivants sur le paramètre id :
    • 1' OR '1'='1
    • 1' UNION SELECT user, password FROM users#
  4. Documentez les résultats : quelles données avez-vous pu extraire ?
  5. Naviguez sur la page "XSS (Reflected)" et soumettez votre prénom.
  6. Envoyez la requête au Repeater et remplacez le paramètre name par :
    • <script>alert('XSS')</script>
  7. Le payload apparaît-il sans échappement dans la réponse HTML ?

Partie 3 — Intruder

  1. Envoyez la requête de login POST (trouvée lors de la connexion initiale) à l'Intruder.
  2. Configurez l'Intruder pour tester le paramètre password avec la liste suivante :
    admin
    password
    123456
    test
    letmein
    root
  3. Lancez l'attaque et identifiez le mot de passe valide en observant les codes de réponse.

Partie 4 — Rapport

  1. Rédigez un court rapport (10 à 15 lignes) documentant :
    • Les vulnérabilités trouvées (injection SQL, XSS)
    • Les requêtes exactes utilisées pour les exploiter
    • Les corrections recommandées
    • La faille à corriger en priorité et la justification

Question de réflexion

Comparez votre expérience avec Burp Suite et celle avec OWASP ZAP (si vous avez fait le TP ZAP) : quels sont les avantages et inconvénients de chaque approche (automatique vs manuelle) ?

Une solution