
Eine interaktive, selbst gehostete XSS-Trainingsplattform mit 33 zunehmend schwierigeren Herausforderungen
💸 Falls dieses Projekt dir hilft, erwäge eine Spende von 10 $, um sein Wachstum zu unterstützen. Link: https://rzp.io/rzp/zgkC6h5B
Eine interaktive, selbst gehostete XSS-Trainingsplattform mit 33 zunehmend schwierigeren Herausforderungen – entwickelt für Hacker, Pentester und Entwickler, die Cross-Site-Scripting von den Grundlagen bis zur realen Ausnutzung meistern möchten.
⚡ Für Angreifer entwickelt
⚡ Fürs Lernen konzipiert
⚡ Auf Einfachheit ausgelegt
33 progressive XSS-Herausforderungen von einfacher Reflexion bis hin zu fortgeschrittener realer Ausnutzung.
| # | Name | Beschreibung |
|---|---|---|
| 1 | Hello, Reflected XSS | Keine Filter, keine Kodierung. Deine Eingabe wird direkt in die Seite reflektiert. |
| 2 | Stored XSS Guestbook | Deine Eingabe wird gespeichert und für alle Besucher angezeigt. Klassisches persistentes XSS. |
git clone https://github.com/The-Cyber-Ledger/TCL-xss-labs.git
cd TCL-xss-labs
npm install
npm start
Öffne: http://localhost:3000
Führe alle 33 Labs sofort mit einem Befehl aus:
docker pull shadowpacket/tcl-xss-labs
docker run -p 3000:3000 shadowpacket/tcl-xss-labs
Öffne: http://localhost:3000
Jedes Level simuliert eine verwundbare Webanwendung mit fehlerhaften Verteidigungen. Dein Ziel: alert() auslösen oder realistische Ausnutzung durchführen (Datenextraktion, Admin-Übernahme usw.).
Dieses Projekt ist eine absichtlich verwundbare Trainingsumgebung. Verwende es nur in lokalen oder kontrollierten Umgebungen Greife KEINE Systeme ohne Autorisierung an Nur zu Bildungszwecken
Die meisten Menschen lernen XSS durch das Lösen von Labs. Dieses Projekt hilft dir, Exploitation wie ein echter Angreifer zu verstehen.
| # | Name | Beschreibung |
|---|
| 3 | Script Tag Blocked | Der Server entfernt <script>-Tags. Finde einen anderen Weg, um JavaScript auszuführen. |
| 4 | Attribute Injection | Deine Eingabe landet innerhalb eines HTML-Attributs. Brich aus und führe Code aus. |
| 5 | JavaScript Context | Deine Eingabe wird innerhalb einer JavaScript-String-Variable platziert. Entkomme und injiziere. |
| 28 | Markdown Injection | Ein naiver Markdown-Renderer wandelt deinen Beitrag in HTML um. Bring ihn dazu, JavaScript auszuführen. |
| 32 | Filename Injection | Lade eine Datei hoch. Der Dateiname wird ohne Bereinigung in der Benutzeroberfläche angezeigt. |
| # | Name | Beschreibung |
|---|
| 6 | Event Handler Blocklist | Gängige Event-Handler werden blockiert. Finde einen obskuren, den der Filter übersehen hat. |
| 7 | Case & Keyword Filter | Aggressiver Ein-Durchlauf-Filter. Verwende verschachtelte Schlüsselwörter, um sie nach dem Entfernen wiederherzustellen. |
| 8 | DOM-Based XSS | Die Schwachstelle existiert vollständig im clientseitigen JavaScript, das aus der URL liest. |
| 25 | Open Redirect → XSS | Verkette eine offene Weiterleitung mit einem Meta-Refresh-Tag, um XSS zu erreichen. |
| 27 | localStorage DOM XSS | Daten, die in localStorage gespeichert sind, werden beim Neuladen ohne Bereinigung dargestellt. |
| # | Name | Beschreibung |
|---|
| 9 | href Injection with Filters | Eingabe gelangt in einen Anker-href mit mehreren angewendeten Filtern. |
| 10 | CSP Bypass via JSONP | Umgehe die Content Security Policy mit einem same-origin JSONP-Endpunkt. |
| 11 | Double Encoding Bypass | Nutze das doppelte Dekodierungsverhalten zwischen WAF und Anwendung aus. |
| 12 | Client-Side Template Injection | Template-Engine wertet {{expressions}} mit eval aus. |
| 13 | postMessage XSS | Nutze unsichere Cross-Window-Messaging ohne Herkunftsvalidierung aus. |
| 14 | SVG Upload XSS | Lade SVG-Dateien hoch und führe Payloads mit SVG-spezifischen Funktionen aus. |
| 15 | Mutation XSS | Umgehe die Bereinigung durch das Browser-DOM-Mutationsverhalten. |
| 16 | Recursive Keyword Filter | Filter schleift rekursiv – verwende alternative Ausführungskontexte. |
| 17 | The Polyglot | Payload muss in HTML-, Attribut- und JS-Kontexten ausgeführt werden. |
| 18 | DOM Clobbering | Überschreibe globale Variablen mit manipulierten HTML-Elementen. |
| 19 | Prototype Pollution → XSS | Verschmutze die Prototypenkette, um XSS ohne direkte HTML-Injektion zu erreichen. |
| 20 | Base Tag Injection | Injiziere <base>, um das Laden von Ressourcen zu manipulieren und CSP zu umgehen. |
| 21 | Dangling Markup Injection | Exfiltriere vertrauliche Daten nur mit HTML-Injektion (kein JS). |
| 22 | JSON Injection in Script Block | Entkomme dem JSON-Kontext innerhalb eines mit Nonce versehenen Script-Blocks. |
| 23 | URL Scheme Bypass | Umgehe Filter, die javascript: blockieren, mit Kodierungstricks. |
| 24 | CSS Injection Exfiltration | Verwende CSS, um vertrauliche Daten ohne JavaScript zu extrahieren. |
| 26 | CRLF → Response Splitting | Injiziere Header, um die HTTP-Antwort zu teilen und HTML zu injizieren. |
| 29 | iframe Sandbox Escape | Entkomme unsicheren iframe-Sandbox-Konfigurationen. |
| 30 | AngularJS Sandbox Escape | Nutze Techniken zur Umgehung der AngularJS-Ausdrucks-Sandbox aus. |
| 31 | Web Component Slot Injection | Injiziere in Shadow DOM über slot-basiertes Rendering. |
| 33 | Blind XSS (Out-of-Band) | Löse die Payload-Ausführung in einem unsichtbaren Admin-Panel aus. |