Write-up · Sécurité applicative
OWASP Juice Shop — Audit de sécurité web
Contexte : TP Bachelor Cybersécurité ESAIP · Stage Mongazon · Pratique personnelle
Date :
Résumé exécutif
Ce write-up présente huit scénarios représentatifs de faiblesses web étudiés sur OWASP Juice Shop, application volontairement vulnérable. Les tests couvrent l'injection, les failles XSS, les contrôles d'accès, l'authentification et la configuration HTTP. Ils sont destinés exclusivement à une instance locale ou à un environnement explicitement autorisé ; les constats et payloads peuvent varier selon la version de l'application.
Environnement technique
| Cible | OWASP Juice Shop — instance locale de laboratoire |
|---|---|
| Système | Kali Linux |
| Proxy d'interception | Burp Suite Community Edition |
| Outils complémentaires | Navigateur web, curl, DevTools |
| Périmètre | Application web et endpoints exposés par l'instance locale |
Méthodologie
1. Définir le périmètre
Déployer OWASP Juice Shop en local et limiter les tests à cette application volontairement vulnérable.
2. Cartographier l'application
Parcourir les fonctions, relever les routes et paramètres, puis observer les requêtes avec le proxy Burp Suite.
3. Vérifier les hypothèses
Reproduire manuellement les scénarios dans le laboratoire Kali Linux et conserver les requêtes/réponses utiles comme preuves.
4. Évaluer et corriger
Qualifier l'impact, associer les constats aux catégories OWASP Top 10 et proposer des mesures vérifiables.
Vulnérabilités observées
1. Injection SQL — contournement de l'authentification
ÉlevéeA03:2021 · Injection
Vecteur et outil : Formulaire de connexion · Burp Suite Repeater
' OR 1=1--Impact : Une requête construite par concaténation peut être altérée pour contourner l'authentification et accéder à un compte sans connaître son mot de passe.
Remédiation : Utiliser des requêtes paramétrées, valider les entrées côté serveur et appliquer des tests de sécurité aux chemins d'authentification.
2. XSS réfléchie — exécution dans le navigateur
MoyenneA03:2021 · Injection
Vecteur et outil : Paramètre de recherche · navigateur et Burp Suite
<iframe src="javascript:alert('XSS')">Impact : Une valeur de recherche renvoyée sans encodage peut exécuter du JavaScript dans le contexte de l'application pour la personne qui ouvre le lien.
Remédiation : Encoder les sorties selon leur contexte, éviter les sinks DOM dangereux et déployer une Content Security Policy restrictive.
3. XSS persistante — contenu utilisateur non neutralisé
ÉlevéeA03:2021 · Injection
Vecteur et outil : Champ de retour/commentaire · Burp Suite
<iframe src="javascript:alert('XSS')">Impact : Un contenu malveillant enregistré puis affiché peut s'exécuter pour chaque utilisateur consultant la page concernée.
Remédiation : Appliquer une validation serveur, encoder les contenus au rendu et utiliser une bibliothèque de sanitation HTML avec une liste d'autorisation.
4. IDOR — accès à un panier par identifiant
ÉlevéeA01:2021 · Contrôle d'accès défaillant
Vecteur et outil : Endpoint de panier · Burp Suite Repeater
GET /rest/basket/1 HTTP/1.1
Host: 127.0.0.1:3000
Authorization: Bearer <jeton_de_session>Impact : Modifier un identifiant séquentiel peut exposer les données du panier d'un autre compte si le serveur ne vérifie pas sa propriété.
Remédiation : Vérifier côté serveur l'appartenance de chaque ressource à l'utilisateur authentifié et ne pas considérer un identifiant difficile à deviner comme une autorisation.
5. Fichier sensible accessible depuis le répertoire FTP
MoyenneA01:2021 · Contrôle d'accès défaillant
Vecteur et outil : Répertoire de fichiers publié · navigateur / curl
curl -i http://127.0.0.1:3000/ftp/acquisitions.mdImpact : Un document interne placé dans un répertoire publiquement servi peut révéler des informations confidentielles sans authentification.
Remédiation : Retirer les documents sensibles des répertoires publics, appliquer des contrôles d'accès et vérifier les fichiers embarqués lors du déploiement.
6. Accès non autorisé à la section d'administration
ÉlevéeA01:2021 · Contrôle d'accès défaillant
Vecteur et outil : Route d'administration · navigateur
http://127.0.0.1:3000/#/administrationImpact : Si l'accès est contrôlé uniquement par l'interface, une personne peut atteindre une route privilégiée et consulter des fonctions d'administration.
Remédiation : Appliquer une autorisation vérifiée côté serveur sur chaque route et opération privilégiée ; masquer un lien dans l'interface ne constitue pas un contrôle d'accès.
7. Réinitialisation de mot de passe fondée sur une réponse devinable
ÉlevéeA07:2021 · Identification et authentification
Vecteur et outil : Formulaire de mot de passe oublié · proxy Burp Suite
1. Ouvrir « Mot de passe oublié » dans l'instance locale.
2. Intercepter la requête avec Burp Suite.
3. Vérifier si la réponse secrète est publique, triviale ou devinable.Impact : Une réponse de sécurité issue d'informations publiques ou faciles à deviner peut permettre la prise de contrôle du compte.
Remédiation : Remplacer les questions secrètes par des jetons aléatoires à usage unique, expirables et transmis par un canal vérifié ; limiter les tentatives.
8. En-têtes de sécurité HTTP à renforcer
MoyenneA05:2021 · Mauvaise configuration de sécurité
Vecteur et outil : Réponse HTTP · curl et inspection Burp Suite
curl -sSI http://127.0.0.1:3000/Impact : L'absence ou la faiblesse de certains en-têtes réduit les protections du navigateur contre les contenus injectés, le framing abusif et les interprétations MIME inattendues.
Remédiation : Configurer et vérifier une CSP adaptée, X-Content-Type-Options: nosniff, une politique de framing restrictive et Strict-Transport-Security en HTTPS.
Tableau de synthèse
| # | Constat | OWASP | Sévérité |
|---|---|---|---|
| 1 | Injection SQL — authentification | A03 | Élevée |
| 2 | XSS réfléchie | A03 | Moyenne |
| 3 | XSS persistante | A03 | Élevée |
| 4 | IDOR — panier | A01 | Élevée |
| 5 | Exposition d'un document | A01 | Moyenne |
| 6 | Section d'administration | A01 | Élevée |
| 7 | Réinitialisation de mot de passe | A07 | Élevée |
| 8 | En-têtes HTTP | A05 | Moyenne |
Recommandations générales
- Utiliser des requêtes paramétrées et une validation des données côté serveur.
- Encoder les sorties, assainir les contenus HTML et adopter une CSP restrictive.
- Appliquer le contrôle d'accès à chaque requête et vérifier la propriété des objets.
- Protéger le parcours de récupération de compte avec des jetons aléatoires, expirables et à usage unique.
- Sortir les fichiers sensibles du répertoire public et limiter les informations renvoyées par les endpoints.
- Configurer les en-têtes de sécurité, journaliser les événements utiles et retester les corrections.
Note : OWASP Juice Shop est une cible d'entraînement. Ne reproduisez ces tests que sur votre instance de laboratoire ou avec une autorisation explicite.