Red Team — Tester la résilience des WAF face aux XSS
Les WAF modernes filtrent efficacement les payloads classiques.
👉 Mais ils ne sont pas infaillibles.
En audit, il est essentiel de vérifier leur résistance face à des vecteurs XSS avancés.
Une vulnérabilité XSS exploitée peut permettre :
→ exécution de code côté client
→ vol de sessions
→ compromission de comptes utilisateurs
⚠️ Le WAF ne doit jamais être considéré comme une protection suffisante à lui seul.
🔤1. Variantes d'encodage
👉 Unicode, encodage partiel, normalisation.
- Test des encodages Unicode et HTML entities
- Encodage partiel pour contourner le filtrage
- Normalisation côté navigateur vs côté WAF
🏷️2. Manipulation de balises HTML
👉 Structures alternatives non filtrées.
- Balises HTML5 moins connues (details, svg, math)
- Attributs event handlers alternatifs
- Fragmentation de payloads pour contourner la détection
⚡3. JavaScript dynamique
👉 Contournement via évaluation dynamique.
- Construction dynamique de chaînes JavaScript
- Utilisation de fonctions d'évaluation alternatives
- Prototype pollution et gadgets JavaScript
🌐4. Scénarios DOM-based
👉 Non visibles côté serveur — souvent ignorés par les WAF.
- Injection via fragment d'URL (#)
- Sources DOM : location.hash, document.referrer
- Sinks DOM : innerHTML, eval, document.write
💡 Bon réflexe en pentest
Le contexte d'injection est souvent plus important que le payload
Toujours analyser le contexte d'injection avant de tester des payloads :
« La compréhension du contexte est souvent plus déterminante que le payload lui-même. »
- →Contexte HTML → injection directe dans le DOM
- →Contexte attribut → encodage et délimitation à analyser
- →Contexte JavaScript → logique de parsing JS à explorer
📚 Cas réel — Programme Bug Bounty
XSS DOM-based non détectée par le WAF
Protection en place
WAF + filtrage serveur actif
Vulnérabilité trouvée
XSS DOM-based côté client
Détection WAF
Non détectée (invisible serveur)
Impact
Accès sessions utilisateurs
🧠 Ce que ça démontre
Un WAF est une couche de défense, pas une solution complète
La validation côté serveur ET côté client sont toutes deux nécessaires
Les bonnes pratiques de développement restent la vraie protection
🧠 À retenir
Un WAF est une couche de défense, pas une solution complète.
La sécurité repose sur :
✔ Validation côté serveur
✔ Sécurisation côté client (CSP, encodage output)
✔ Bonnes pratiques de développement
Ressources : PortSwigger Web Security Academy · OWASP XSS Prevention Cheat Sheet
Lors de vos audits, quelles techniques vous permettent le plus souvent d'identifier des XSS malgré un WAF ?
Besoin d'un accompagnement personnalisé ?
NagaShield Security vous aide à mettre en place ces mesures de manière concrète, adaptée à votre structure et votre budget.
Demander un diagnostic gratuit