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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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:
- Kontrollierbare Senken in Echtzeit zu identifizieren, einschließlich Kontext (Attribut, HTML, URL, JS) und angewandter Sanitization.
postMessage()
-Web-Nachrichten zu protokollieren, zu bearbeiten und erneut zu senden, oder die Erweiterung sie automatisch mutieren zu lassen.- Clientseitige Prototype-Pollution-Quellen zu erkennen und nach Gadget→Sink-Ketten zu scannen, die PoCs in Echtzeit generieren.
- DOM Clobbering-Vektoren zu finden (z. B.
id
/name
Kollisionen, die globale Variablen überschreiben). - Verhalten fein abzustimmen über eine umfangreiche Einstellungen-Benutzeroberfläche (benutzerdefinierter Canary, automatische Injektion, Umleitungsblockierung, Quellen/Senken-Listen usw.).
1. Aktivieren
.png)
- Öffnen Sie Proxy ➜ Intercept ➜ Open Browser (Burps eingebetteter Browser).
- Klicken Sie auf das Burp Suite-Logo (oben rechts). Wenn es verborgen ist, klicken Sie zuerst auf das Puzzlestück.
- Aktivieren Sie im DOM Invader-Tab Enable DOM Invader und drücken Sie Reload.
- Ö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:
- Durchsuchen – DOM Invader kennzeichnet Pollution Quellen (
__proto__
,constructor
,prototype
), die in URL/Abfrage/Hash oder JSON-Web-Nachrichten gefunden werden. - Testen – Klicken Sie auf Test, um einen PoC-Tab zu öffnen, in dem
Object.prototype.testproperty
existieren sollte:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
- Nach Gadgets scannen – DOM Invader bruteforced Eigenschaftsnamen und verfolgt, ob sie in gefährliche Senken (z. B.
innerHTML
) gelangen. - 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__
vsconstructor
-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.
- Haupt
- Enable DOM Invader – globaler Schalter.
- Postmessage interception – Protokollierung von Nachrichten ein-/ausschalten; Unter-Schalter für automatische Mutation.
- Benutzerdefinierte Quellen/Senken – Zahnrad-Symbol ➜ spezifische Senken aktivieren/deaktivieren (z. B.
eval
,setAttribute
), die die App brechen könnten.
- Angriffstypen
- Prototype Pollution (mit spezifischen Einstellungen pro Technik).
- DOM Clobbering.
- 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.
- 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
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.