DOM XSS

DOM XSS

Die Nutzlast erreicht nie den Server. Es läuft immer noch.

Was ist DOM XSS?

DOM-basiertes XSS ist das Cross-Site-Scripting, das Ihr Server nie sieht. Die Nutzlast befindet sich im URL-Fragment, document.referrer oder einem postMessage -Körper, und clientseitiges JavaScript schreibt sie in innerHTML . Serverseitige Filter und Webanwendungs-Firewalls sind für all das blind. Sie packen eine img onerror -Nutzlast in einen Freigabelink für einen Notiz-Viewer, öffnen ihn selbst, verfolgen den Fluss von der Quelle zur Senke und reparieren ihn mit textContent , sodass der Browser einen Textknoten erstellt, anstatt Markup zu analysieren.

Was Sie lernen in DOM XSS

DOM XSS — Trainingsschritte

  1. Öffnen Sie das Tool zum Teilen von Notizen

    Heute nimmt Bob Tideline Federal ins Visier. Die Mitarbeitenden teilen kurze Notizen über ein internes Tool. Sie schreiben eine Notiz, das Tool erstellt einen Link, und alle, die ihn öffnen, lesen die Notiz im Browser. Bob öffnet den Editor, um zu sehen, wie aus einer Notiz ein Link wird.

  2. Teilen Sie eine normale Notiz

    Zunächst teilt Bob eine gewöhnliche Notiz, um zu sehen, wie das Tool einen Link erstellt. Alles, was er schreibt, wird in den Link selbst gepackt.

  3. Die Notiz steckt im Link

    Hier ist der Freigabelink. Die gesamte Notiz steht darin, im Teil nach # . Wenn jemand den Link öffnet, liest der Viewer dieses Fragment und rendert es. Die Notiz erreicht den Server von Tideline nie.

  4. Test-Nutzlast erstellen

    Der Viewer fügt alles, was die Notiz enthält, als HTML in die Seite ein. Deshalb schreibt Bob eine Notiz, die keine echte Notiz ist: ein Bild-Tag mit einer nicht ladbaren Quelle und einem onerror -Handler. Wenn das Bild nicht geladen werden kann, läuft der Handler und jeder darin enthaltene Code wird im Browser aller ausgeführt, die den Link öffnen. Zunächst nutzt er den einfachsten möglichen Nachweis, ein schlichtes alert(1) , um zu bestätigen, dass sein Code überhaupt läuft.

  5. Nutzlast testen

    Bevor Bob die Nutzlast bewaffnet, öffnet er seinen eigenen Link in der Vorschau, um zu prüfen, ob sie ausgelöst wird. Die Vorschau öffnet die Notiz genau so, wie Empfänger sie sehen würden. Sobald der Viewer sie lädt, erscheint der Dialog. Sein Code läuft im Browser, genau wie geplant.

  6. Machen Sie sie zur Waffe

    Der Nachweis funktioniert, also macht Bob ihn jetzt gefährlich. Er kehrt zum Editor zurück und ersetzt den harmlosen Dialog durch eine Zeile, die das Session-Cookie des Besuchers liest – das Token, das die Anmeldung aufrechterhält. Eine echte Nutzlast würde dieses Cookie unbemerkt an seinen eigenen Server senden. Hier erscheint der gestohlene Wert als Dialog, damit Sie genau sehen, was er erfasst.

  7. Senden Sie den Link an ein Opfer

    Bob sendet den präparierten Link per E-Mail an Alice, eine Ingenieurin bei Tideline, die den ganzen Tag geteilte Notizen öffnet. Die Nachricht ist als Notiz vor ihrer morgendlichen Besprechung getarnt, daher hat sie keinen Grund zu zögern.

  8. Eine geteilte Notiz trifft ein

    Bobs E-Mail ist unterwegs. Sie verantworten den Viewer-Code des Tools zum Teilen von Notizen, und kurz vor Ihrer Besprechung um 10:00 trifft eine geteilte Notiz in Ihrem Posteingang ein. Öffnen Sie die E-Mail und anschließend die Notiz.

  9. Öffnen Sie die geteilte Notiz

    Nichts wirkt verdächtig, daher öffnen Sie die Notiz wie Dutzende andere auch.

  10. Die Notiz stiehlt Ihre Sitzung

    Sobald die Notiz geladen wurde, erschien dieses Pop-up in Ihrem Browser. Es zeigt Ihr eigenes Session-Cookie – das Token, das Ihre Anmeldung aufrechterhält. Sie haben nichts angeklickt und nichts eingegeben. Die geteilte Notiz enthielt ein Skript, das gerade Ihre Sitzung ausgelesen hat und sie direkt an einen Angreifer hätte senden können. Das ist eine vollständige Kontoübernahme durch das Öffnen eines einzigen Links.

Abdeckung der Sicherheits-Frameworks

OWASP Top 10

  • A05:2025 Injection
  • A03:2021 Injection

CWE

  • CWE-79 Improper Neutralization of Input During Web Page Generation

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security