Burp Suite — Proxy d'Interception Web
Guide complet de Burp Suite : Proxy, Repeater, Intruder, Decoder et techniques d'analyse d'applications web.
Introduction
Burp Suite est la plateforme de référence pour le test de sécurité des applications web. Son proxy d'interception permet de capturer, modifier et rejouer les requêtes HTTP/HTTPS entre le navigateur et le serveur cible. Cet outil est indispensable pour identifier les vulnérabilités web.
Architecture de Burp Suite
| Module | Description |
|---|---|
| Proxy | Interception et modification des requêtes HTTP/S |
| Repeater | Rejeu et modification manuelle de requêtes |
| Intruder | Attaques automatisées (bruteforce, fuzzing) |
| Decoder | Encodage / décodage de données |
| Comparer | Comparaison de réponses |
| Scanner | Scan automatique de vulnérabilités (Pro) |
| Logger | Journal de toutes les requêtes |
Configuration du Proxy
Mise en Place
Pour intercepter le trafic, Burp Suite agit comme un proxy entre le navigateur et le serveur cible. Le navigateur doit être configuré pour envoyer ses requêtes via Burp.
# Configuration par défaut du proxy Burp
Adresse : 127.0.0.1
Port : 8080
# Configuration navigateur (Firefox recommandé)
Paramètres → Réseau → Proxy manuel :
HTTP Proxy : 127.0.0.1 Port : 8080
HTTPS Proxy : 127.0.0.1 Port : 8080
# Installation du certificat CA Burp
1. Naviguer vers http://burpsuite
2. Télécharger le certificat CA
3. Importer dans : Paramètres → Certificats → Autorités
Interception des Requêtes
Lorsque l'interception est activée, chaque requête HTTP est capturée et peut être modifiée avant d'être transmise au serveur.
# Actions disponibles sur une requête interceptée
Forward → Transmettre la requête au serveur
Drop → Bloquer la requête
Send to → Envoyer vers Repeater / Intruder / Decoder
Action → Options avancées (match/replace, etc.)
# Filtres d'interception utiles
- Filtrer par domaine cible uniquement
- Exclure les fichiers statiques (images, CSS, JS)
- Intercepter uniquement les requêtes avec paramètres
Repeater — Rejeu Manuel
Le Repeater est l'outil le plus utilisé pour tester manuellement des vulnérabilités. Il permet de modifier et renvoyer une requête autant de fois que nécessaire, tout en observant la réponse du serveur en temps réel.
Workflow Type
# 1. Intercepter une requête intéressante dans le Proxy
# 2. Clic droit → "Send to Repeater" (Ctrl+R)
# 3. Modifier les paramètres dans l'onglet Repeater
# Exemples de tests manuels dans Repeater :
# Test d'injection SQL
POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=admin' OR 1=1--&password=test
# Test de XSS réfléchi
GET /search?q=<script>alert(1)</script> HTTP/1.1
Host: target.com
# Test de manipulation de headers
GET /admin HTTP/1.1
Host: target.com
X-Forwarded-For: 127.0.0.1
X-Original-URL: /admin
Intruder — Attaques Automatisées
Le module Intruder permet d'automatiser l'envoi de requêtes avec des payloads variables. Il est particulièrement utile pour le bruteforce, le fuzzing de paramètres et l'énumération.
Types d'Attaques
| Type | Positions | Comportement |
|---|---|---|
| Sniper | 1+ positions | Un seul payload injecté dans chaque position, une à la fois |
| Battering Ram | 1+ positions | Le même payload injecté simultanément dans toutes les positions |
| Pitchfork | 2+ positions | Payloads synchronisés en parallèle (liste 1 → pos 1, liste 2 → pos 2) |
| Cluster Bomb | 2+ positions | Toutes les combinaisons possibles entre les listes de payloads |
Configuration d'une Attaque
# 1. Envoyer une requête au Intruder (Ctrl+I)
# 2. Onglet "Positions" : définir les points d'injection avec §
POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=§admin§&password=§password§
# 3. Onglet "Payloads" : configurer les listes
# Payload Set 1 (usernames) :
admin
administrator
root
user
test
# Payload Set 2 (passwords) :
password
123456
admin
root
letmein
Exemple : Bruteforce d'Authentification
# Type d'attaque : Cluster Bomb
# Position 1 : username (wordlist: usernames.txt)
# Position 2 : password (wordlist: rockyou.txt)
# Filtres de résultats utiles :
- Trier par Status Code (200 vs 302)
- Trier par taille de réponse (Length)
- Grep Match : chercher "Welcome" ou "Dashboard"
- Grep Extract : extraire le message d'erreur
# Intruder → Options → Grep Match
Ajouter : "Login successful"
Ajouter : "Welcome"
Ajouter : "Invalid credentials"
Exemple : Énumération d'Utilisateurs
# Type d'attaque : Sniper
# Position : username uniquement
POST /login HTTP/1.1
Host: target.com
username=§test§&password=invalidpassword
# Analyser les différences de réponse :
# - "User not found" → utilisateur inexistant
# - "Invalid password" → utilisateur EXISTE
# - Différence de temps de réponse
# - Différence de taille de réponse
Decoder — Encodage et Décodage
Le Decoder permet de transformer des données entre différents formats d'encodage. C'est un outil essentiel pour comprendre et manipuler les données échangées.
Formats Supportés
| Format | Exemple |
|---|---|
| Base64 | YWRtaW4= → admin |
| URL Encoding | %3Cscript%3E → <script> |
| HTML Encoding | <script> → <script> |
| Hex | 61646d696e → admin |
| ASCII Hex | Conversion ASCII ↔ Hexadécimal |
| Hash | MD5, SHA-1, SHA-256, SHA-512 |
# Décoder une valeur Base64
Input: YWRtaW46cGFzc3dvcmQ=
Decode as: Base64
Output: admin:password
# Décoder un URL encoding
Input: %27+OR+1%3D1+--
Decode as: URL
Output: ' OR 1=1 --
# Encodage en chaîne
Input: <script>alert(1)</script>
1. Encode as URL → %3Cscript%3Ealert(1)%3C/script%3E
2. Encode as Base64 → JTNDc2NyaXB0JTNFYWxlcnQoMSklM0Mvc2NyaXB0JTNF
# Hashing
Input: password123
Hash: MD5 → 482c811da5d5b4bc6d497ffa98491e38
Hash: SHA256 → ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
Techniques Avancées
Match and Replace
Automatiser la modification de requêtes/réponses sans interception manuelle :
# Proxy → Options → Match and Replace
# Supprimer les headers de sécurité (pour tester)
Type: Response header
Match: X-Frame-Options:.\*
Replace: (vide)
# Modifier le User-Agent
Type: Request header
Match: User-Agent:.\*
Replace: User-Agent: Mozilla/5.0 (Custom Pentest Agent)
# Ajouter un header personnalisé
Type: Request header
Match: ^Host:
Replace: Host:
- X-Custom-Header: bypass
Comparer — Différenciation de Réponses
Le module Comparer permet de mettre côte à côte deux requêtes ou réponses pour identifier des différences subtiles. C'est particulièrement utile pour :
- Détecter des réponses différentes selon les rôles utilisateurs
- Identifier les changements après modification d'un paramètre
- Comparer les comportements entre utilisateurs authentifié et anonyme
[Browser] [Burp Proxy :8080] [Target Server]
│ │ │
│ ── HTTP Request ────────> │ │
│ │ (Intercept / Modify) │
│ │ ── Forward Request ─────────> │
│ │ │
│ │ <── HTTP Response ─────────── │
│ │ (Log / Modify) │
│ <── HTTP Response ─────── │ │
│ │ │
│ [Repeater] [Intruder] [Decoder] │
Résumé
Burp Suite est l'outil central de tout pentest web. La maîtrise du Repeater pour les tests manuels et de l'Intruder pour les attaques automatisées est indispensable. Le workflow type consiste à intercepter, analyser, modifier et rejouer les requêtes jusqu'à identifier une vulnérabilité exploitable. À utiliser uniquement dans un cadre légal et autorisé.