DOM Invader

Reading time: 7 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

DOM Invader

DOM Invader ist ein Browser-Tool, das im eingebauten Chromium-Browser von Burp Suite installiert ist. Es hilft bei der Erkennung von DOM XSS und anderen clientseitigen Schwachstellen (Prototype Pollution, DOM Clobbering usw.), indem es automatisch JavaScript-Quellen und -Senken instrumentiert. Die Erweiterung wird mit Burp geliefert und muss nur aktiviert werden.

DOM Invader fügt dem DevTools-Panel des Browsers einen Tab hinzu, der es Ihnen ermöglicht:

  1. Kontrollierbare Senken in Echtzeit zu identifizieren, einschließlich Kontext (Attribut, HTML, URL, JS) und angewandter Sanitization.
  2. postMessage()-Web-Nachrichten zu protokollieren, zu bearbeiten und erneut zu senden, oder die Erweiterung sie automatisch mutieren zu lassen.
  3. Clientseitige Prototype-Pollution-Quellen zu erkennen und nach Gadget→Sink-Ketten zu scannen, die PoCs in Echtzeit generieren.
  4. DOM Clobbering-Vektoren zu finden (z. B. id / name Kollisionen, die globale Variablen überschreiben).
  5. Verhalten fein abzustimmen über eine umfangreiche Einstellungen-Benutzeroberfläche (benutzerdefinierter Canary, automatische Injektion, Umleitungsblockierung, Quellen/Senken-Listen usw.).

1. Aktivieren

  1. Öffnen Sie Proxy ➜ Intercept ➜ Open Browser (Burps eingebetteter Browser).
  2. Klicken Sie auf das Burp Suite-Logo (oben rechts). Wenn es verborgen ist, klicken Sie zuerst auf das Puzzlestück.
  3. Aktivieren Sie im DOM Invader-Tab Enable DOM Invader und drücken Sie Reload.
  4. Öffnen Sie DevTools ( F12 / Rechtsklick ➜ Untersuchen ) und docken Sie es an. Ein neues DOM Invader-Panel erscheint.

Burp merkt sich den Zustand pro Profil. Deaktivieren Sie es unter Einstellungen ➜ Tools ➜ Burps Browser ➜ Einstellungen speichern..., falls erforderlich.

2. Injektion eines Canaries

Ein Canary ist eine zufällige Markierungszeichenfolge (z. B. xh9XKYlV), die DOM Invader verfolgt. Sie können:

  • Es kopieren und manuell in Parameter, Formulare, Web-Socket-Rahmen, Web-Nachrichten usw. injizieren.
  • Die Schaltflächen Inject URL params / Inject forms verwenden, um einen neuen Tab zu öffnen, in dem der Canary automatisch an jeden Abfrage-Schlüssel/Wert oder jedes Formularfeld angehängt wird.
  • Nach einem leeren Canary suchen, um alle Senken unabhängig von der Ausnutzbarkeit offenzulegen (großartig für die Aufklärung).

Benutzerdefinierter Canary (2025+)

Burp 2024.12 führte Canary-Einstellungen ein (Burp-Logo ➜ DOM Invader ➜ Canary). Sie können:

  • Zufällig oder eine benutzerdefinierte Zeichenfolge festlegen (hilfreich für Tests mit mehreren Tabs oder wenn der Standardwert natürlich auf der Seite erscheint).
  • Den Wert in die Zwischenablage kopieren.
  • Änderungen erfordern Reload.

3. Web-Nachrichten (postMessage)

Der Messages-Untertab protokolliert jeden window.postMessage()-Aufruf und zeigt die Verwendung von origin, source und data an.

Ändern & erneut senden: Doppelklicken Sie auf eine Nachricht, bearbeiten Sie data und drücken Sie Send (ähnlich wie Burp Repeater).

Auto-fuzz: Aktivieren Sie Postmessage interception ➜ Auto-mutate in den Einstellungen, um DOM Invader zu ermöglichen, Canary-basierte Payloads zu generieren und sie an den Handler zurückzuspielen.

Zusammenfassung der Feldbedeutungen:

  • origin – ob der Handler event.origin validiert.
  • data – Payload-Standort. Wenn nicht verwendet, ist die Senke irrelevant.
  • source – Validierung der iframe / Fensterreferenz; oft schwächer als strikte Origin-Prüfung.

4. Prototype Pollution

Aktivieren Sie unter Einstellungen ➜ Angriffstypen ➜ Prototype Pollution.

Workflow:

  1. Durchsuchen – DOM Invader kennzeichnet Pollution Quellen (__proto__, constructor, prototype), die in URL/Abfrage/Hash oder JSON-Web-Nachrichten gefunden werden.
  2. Testen – Klicken Sie auf Test, um einen PoC-Tab zu öffnen, in dem Object.prototype.testproperty existieren sollte:
javascript
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
  1. Nach Gadgets scannen – DOM Invader bruteforced Eigenschaftsnamen und verfolgt, ob sie in gefährliche Senken (z. B. innerHTML) gelangen.
  2. Ausnutzen – Wenn eine Gadget-Sink-Kette gefunden wird, erscheint eine Exploit-Schaltfläche, die Quelle + Gadget + Senke verknüpft, um einen Alert auszulösen.

Erweiterte Einstellungen (Zahnrad-Symbol):

  • CSP / X-Frame-Options entfernen, um iframes während des Gadget-Scannens funktionsfähig zu halten.
  • Scantechniken in separaten Frames um __proto__ vs constructor-Interferenzen zu vermeiden.
  • Techniken einzeln für fragile Apps deaktivieren.

5. DOM Clobbering

Aktivieren Sie Angriffstypen ➜ DOM Clobbering. DOM Invader überwacht dynamisch erstellte Elemente, deren id/name-Attribute mit globalen Variablen oder Formularobjekten kollidieren (<input name="location"> → überschreibt window.location). Ein Eintrag wird erzeugt, wann immer benutzerkontrolliertes Markup zu einer Variablenersetzung führt.


6. Einstellungen Übersicht (2025)

DOM Invader ist jetzt in die Kategorien Haupt / Angriffstypen / Sonstiges / Canary unterteilt.

  1. Haupt
  • Enable DOM Invader – globaler Schalter.
  • Postmessage interception – Protokollierung von Nachrichten ein-/ausschalten; Unter-Schalter für automatische Mutation.
  • Benutzerdefinierte Quellen/SenkenZahnrad-Symbol ➜ spezifische Senken aktivieren/deaktivieren (z. B. eval, setAttribute), die die App brechen könnten.
  1. Angriffstypen
  • Prototype Pollution (mit spezifischen Einstellungen pro Technik).
  • DOM Clobbering.
  1. Sonstiges
  • Umleitungsprävention – blockiert clientseitige Umleitungen, damit die Senkenliste nicht verloren geht.
  • Breakpoint vor Umleitung – pausiert JS kurz vor der Umleitung zur Inspektion des Call-Stacks.
  • Canary in alle Quellen injizieren – injiziert Canary automatisch überall; konfigurierbare Quellen/Parameter-Whitelist.
  1. Canary
  • Anzeigen / randomisieren / benutzerdefinierten Canary festlegen; in die Zwischenablage kopieren. Änderungen erfordern ein Neuladen des Browsers.

7. Tipps & Gute Praktiken

  • Verwenden Sie einen eindeutigen Canary – vermeiden Sie gängige Zeichenfolgen wie test, da sonst falsch-positive Ergebnisse auftreten.
  • Deaktivieren Sie schwere Senken (eval, innerHTML) vorübergehend, wenn sie die Seitenfunktionalität während der Navigation beeinträchtigen.
  • Kombinieren Sie mit Burp Repeater & Proxy – replizieren Sie die Browser-Anfrage/Antwort, die einen verwundbaren Zustand erzeugte, und erstellen Sie endgültige Exploit-URLs.
  • Denken Sie an den Rahmenkontext – Quellen/Senken werden pro Browsing-Kontext angezeigt; Schwachstellen innerhalb von iframes benötigen möglicherweise manuelle Fokussierung.
  • Beweise exportieren – Rechtsklick auf das DOM Invader-Panel ➜ Screenshot speichern, um ihn in Berichte aufzunehmen.

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks