XSS

Drei Levels – Reflected, Stored und DOM-based.

Level 1 — Reflected XSS

Injiziere JavaScript über den Suchparameter in die Seite.

<script>alert('XSS')</script>

Der Inhalt des GET-Parameters q wird ungefiltert
in den HTML-Body eingebettet. Der Browser führt
das Script direkt aus.
Level 2 — Stored XSS

Hinterlasse einen Kommentar – oder speichere dauerhaft JavaScript in der Datenbank.

<script>alert('Stored XSS')</script>

Das Script wird in der Datenbank gespeichert und
bei jedem Seitenaufruf für alle Besucher ausgeführt –
gefährlicher als Reflected XSS.
Level 3 — DOM-based XSS

Der Server ist uninvolviert – JavaScript liest den URL-Fragment und schreibt ihn in den DOM.

Füge #name=DeinName an die URL an.
URL: /public/challenges/xss/#name=<img src=x onerror=alert(1)>

Das Fragment (#...) erreicht den Server nie –
der Angriff findet rein im Browser statt.
location.hash wird direkt in innerHTML geschrieben.