
Une plateforme de formation XSS interactive et auto-hébergée avec 33 défis de plus en plus difficiles
💸 Si ce projet vous aide, pensez à le soutenir avec un don de 10 $ pour qu'il continue de grandir. Lien : https://rzp.io/rzp/zgkC6h5B
Une plateforme interactive et auto-hébergée d’entraînement aux XSS avec 33 défis de difficulté croissante — conçue pour les hackers, pentesters et développeurs qui souhaitent maîtriser le cross‑site scripting, des fondamentaux jusqu’à l’exploitation réelle.
⚡ Conçu pour les attaquants
⚡ Pensé pour l’apprentissage
⚡ Optimisé pour la simplicité
33 défis XSS progressifs, du reflet basique à l’exploitation avancée dans le monde réel.
| # | Nom | Description |
|---|
| 1 | Bonjour, XSS réfléchie | Aucun filtre, aucun encodage. Votre entrée est reflétée directement dans la page. |
| 2 | Livre d’or XSS stockée | Votre entrée est stockée et affichée pour tous les visiteurs. XSS persistante classique. |
| # | Nom | Description |
|---|---|---|
| 3 | Balise script bloquée | Le serveur supprime les balises <script>. Trouvez un autre moyen d’exécuter du JavaScript. |
| 4 | Injection d’attribut | Votre entrée atterrit dans un attribut HTML. Échappez‑vous et exécutez du code. |
| 5 | Contexte JavaScript | Votre entrée est placée dans une variable chaîne JavaScript. Échappez et injectez. |
| 28 | Injection Markdown | Un renderer Markdown naïf convertit votre post en HTML. Faites‑lui exécuter du JavaScript. |
| 32 | Injection de nom de fichier | Téléchargez un fichier. Son nom est reflété dans l’interface sans assainissement. |
| # | Nom | Description |
|---|---|---|
| 6 | Liste noire de gestionnaires d’événements | Les gestionnaires d’événements courants sont bloqués. Trouvez-en un obscur que le filtre a oublié. |
| 7 | Filtre de casse et de mots‑clés | Filtre agressif à passage unique. Utilisez des mots‑clés imbriqués pour les reconstruire après suppression. |
| 8 | XSS basée sur le DOM | La vulnérabilité réside entièrement dans le JavaScript côté client lisant l’URL. |
| 25 | Redirection ouverte → XSS | Enchaînez une redirection ouverte avec une balise meta‑refresh pour réaliser une XSS. |
| 27 | XSS DOM via localStorage | Les données stockées dans localStorage sont affichées au rechargement sans assainissement. |
| # | Nom | Description |
|---|---|---|
| 9 | Injection href avec filtres | L’entrée va dans un href d’ancre avec plusieurs filtres appliqués. |
| 10 | Contournement CSP via JSONP | Contournez la Content Security Policy en utilisant un point de terminaison JSONP de même origine. |
| 11 | Contournement par double encodage | Exploitez le comportement de double décodage entre le WAF et l’application. |
| 12 | Injection de template côté client | Le moteur de template évalue {{expressions}} via eval. |
| 13 | XSS via postMessage | Exploitez une messagerie inter‑fenêtres non sécurisée sans validation d’origine. |
| 14 | XSS par téléchargement SVG | Téléchargez des fichiers SVG et exécutez des payloads en utilisant des fonctionnalités propres au SVG. |
| 15 | XSS par mutation | Contournez l’assainissement en exploitant le comportement de mutation du DOM du navigateur. |
| 16 | Filtre récursif de mots‑clés | Le filtre boucle de manière récursive — utilisez des contextes d’exécution alternatifs. |
| 17 | Le polyglotte | Le payload doit s’exécuter dans les contextes HTML, attribut et JS. |
| 18 | DOM Clobbering | Écrasez des variables globales avec des éléments HTML fabriqués. |
| 19 | Pollution de prototype → XSS | Polluez la chaîne de prototypes pour réaliser une XSS sans injection HTML directe. |
| 20 | Injection de balise base | Injectez <base> pour manipuler le chargement des ressources et contourner la CSP. |
| 21 | Injection de balise pendante | Exfiltrez des données sensibles en utilisant uniquement une injection HTML (sans JS). |
| 22 | Injection JSON dans un bloc script | Échappez‑vous du contexte JSON à l’intérieur d’un bloc script noncé. |
| 23 | Contournement de schéma d’URL | Contournez les filtres bloquant javascript: en utilisant des astuces d’encodage. |
| 24 | Exfiltration par injection CSS | Utilisez le CSS pour extraire des données sensibles sans JavaScript. |
| 26 | CRLF → Fractionnement de réponse |
git clone https://github.com/The-Cyber-Ledger/TCL-xss-labs.git
cd TCL-xss-labs
npm install
npm start
Ouvrir : http://localhost:3000
Lancez les 33 laboratoires instantanément avec une seule commande :
docker pull shadowpacket/tcl-xss-labs
docker run -p 3000:3000 shadowpacket/tcl-xss-labs
Ouvrir : http://localhost:3000
Trigger alert() Ou réaliser une exploitation réaliste (exfiltration de données, prise de contrôle admin, etc.)Ce projet est un environnement d’entraînement intentionnellement vulnérable. Utilisez‑le uniquement dans des environnements locaux ou contrôlés. Ne ciblez pas de systèmes sans autorisation. À usage éducatif uniquement.
La plupart des gens apprennent les XSS en résolvant des laboratoires. Ce projet vous aide à comprendre l’exploitation comme un véritable attaquant.
| Injectez des en‑têtes pour fractionner la réponse HTTP et injecter du HTML. |
| 29 | Échappement de bac à sable iframe | Échappez‑vous de configurations non sécurisées du bac à sable d’une iframe. |
| 30 | Échappement du bac à sable AngularJS | Exploitez les techniques de contournement du bac à sable d’expressions AngularJS. |
| 31 | Injection de slot dans un composant web | Injectez dans le Shadow DOM via un rendu basé sur des slots. |
| 33 | XSS aveugle (hors bande) | Déclenchez l’exécution d’un payload dans un panneau d’administration invisible. |