Semaine 7 — Vulnérabilités web (OWASP Top 10)
Objectifs pédagogiques
- Comprendre la logique de chaque catégorie du Top 10, pas la mémoriser.
- Utiliser Burp Suite en interception et en repeater efficacement.
- Écrire une preuve d'exploitation propre : requête, réponse, impact.
Les catégories 2021 en une phrase chacune
| Catégorie | Idée centrale |
|---|---|
| A01 – Contrôles d'accès rompus | L'application autorise ce qu'elle devrait interdire. |
| A02 – Défaillances cryptographiques | Données sensibles mal chiffrées ou en clair. |
| A03 – Injection | Des données utilisateur exécutées comme du code (SQL, LDAP, OS). |
| A04 – Design non sécurisé | Défaut de conception, pas de code. |
| A05 – Mauvaise configuration | Valeurs par défaut, verbosité, en-têtes manquants. |
| A06 – Composants vulnérables | Dépendances non mises à jour. |
| A07 – Identification / auth | Sessions faibles, mots de passe faibles, MFA absente. |
| A08 – Intégrité logicielle | Chaîne d'approvisionnement compromise. |
| A09 – Journalisation insuffisante | On ne voit rien passer. |
| A10 – SSRF | Le serveur se laisse guider vers l'interne. |
Burp Suite en pratique
- Configurer Firefox pour utiliser Burp comme proxy (
127.0.0.1:8080), installer le certificat de Burp. - Proxy → Intercept : capturer une requête intéressante (soumission de formulaire, appel API).
- Repeater : envoyer et rejouer la requête, faire varier un paramètre à la fois.
- Intruder : payloads paramétrés. Un seul point d'insertion à la fois pour rester lisible.
Deux exemples à maîtriser
Injection SQL — Vérifier vraiment
Ne pas se contenter d'un ' OR 1=1 -- qui « affiche plus de lignes ». Confirmer par une
extraction contrôlée :
GET /produits?id=42 UNION SELECT null, current_database(), null --
La réponse doit contenir un nom de base cohérent. Sans cette preuve, ce n'est qu'une hypothèse.
XSS stockée — Impact concret
Un <script>alert(1)</script> prouve le stockage, pas l'impact. La démonstration attendue en
rapport : un vol de session vers un endpoint contrôlé, ou une action forcée via
fetch('/api/user/delete', {method:'POST', credentials:'include'}).
Début du TP2
Vous choisissez une application vulnérable du laboratoire (Juice Shop, DVWA ou équivalent). Livrable pour la semaine 9 :
- Trois vulnérabilités du Top 10 exploitées, chacune avec requête, réponse, impact.
- Une remédiation concrète par vulnérabilité.