DOM Invader
Reading time: 6 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
DOM Invader
DOM Invader is 'n blaaiertool wat geïnstalleer is in Burp Suite se ingeboude Chromium-blaaier. Dit help met die opsporing van DOM XSS en ander kliënt-kant kwesbaarhede (prototipe besoedeling, DOM klobbering, ens.) deur outomaties JavaScript bronne en sinke te instrumenteer. Die uitbreiding word saam met Burp gestuur en moet net geaktiveer word.
DOM Invader voeg 'n oortjie by die blaaiers se DevTools-paneel wat jou toelaat om:
- Beheersbare sinke in werklike tyd te identifiseer, insluitend konteks (attribuut, HTML, URL, JS) en toegepaste sanitasie.
- Log, redigeer en stuur weer
postMessage()
web-boodskappe, of laat die uitbreiding hulle outomaties verander. - Kliënt-kant prototipe-besoedeling bronne opspoor en skandeer vir gadget→sink kettings, wat PoCs on-the-fly genereer.
- Vind DOM klobbering vektore (bv.
id
/name
botsings wat globale veranderlikes oorskryf). - Fynstel gedrag via 'n ryk Instellings UI (aangepaste kanarie, outo-inspuiting, herleiding blokkering, bron/sink lyste, ens.).
1. Aktiveer dit
.png)
- Maak Proxy ➜ Intercept ➜ Open Browser (Burp se ingebedde blaaiert).
- Klik op die Burp Suite logo (bo-regs). As dit versteek is, klik eers op die legkaartstuk.
- In die DOM Invader oortjie, skakel Enable DOM Invader AAN en druk Reload.
- Maak DevTools oop (
F12
/ Regsklik ➜ Inspekteer ) en dock dit. 'n Nuwe DOM Invader paneel verskyn.
Burp onthou die toestand per profiel. Deaktiveer dit onder Instellings ➜ Gereedskap ➜ Burp se blaaiert ➜ Stoor instellings... indien nodig.
2. Inspuit 'n Kanarie
'n kanarie is 'n ewekansige merkstring (bv. xh9XKYlV
) wat DOM Invader volg. Jy kan:
- Kopieer dit en handmatig inspuit in parameters, vorms, Web-Socket rame, web-boodskappe, ens.
- Gebruik Inject URL params / Inject forms knoppies om 'n nuwe oortjie te open waar die kanarie outomaties by elke navraag sleutel/waarde of vorm veld gevoeg word.
- Soek vir 'n leë kanarie om alle sinke te onthul ongeag van eksploitabiliteit (groot vir verkenning).
Aangepaste kanarie (2025+)
Burp 2024.12 het Kanarie instellings bekendgestel (Burp-logo ➜ DOM Invader ➜ Kanarie). Jy kan:
- Ewekansig maak of 'n aangepaste string stel (nuttig vir multi-oortjie toetsing of wanneer die standaardwaarde natuurlik op die bladsy verskyn).
- Kopieer die waarde na die klembord.
- Veranderinge vereis Reload.
3. Web-boodskappe (postMessage
)
Die Boodskappe sub-oortjie registreer elke window.postMessage()
oproep, wat origin
, source
, en data
gebruik toon.
• Wysig & stuur weer: dubbelklik op 'n boodskap, redigeer data
, en druk Stuur (soos Burp Repeater).
• Auto-fuzz: aktiveer Postmessage interception ➜ Auto-mutate in instellings om DOM Invader toe te laat om kanarie-gebaseerde payloads te genereer en hulle aan die handler te herhaal.
Veld betekenis opsomming:
- origin – of die handler
event.origin
valideer. - data – payload ligging. As ongebruik, is die sink irrelevant.
- source – iframe / venster verwysing validasie; dikwels swakker as streng oorsprong kontrole.
4. Prototipe Besoedeling
Aktiveer onder Instellings ➜ Aanval tipes ➜ Prototipe besoedeling.
Werkvloei:
- Blaai – DOM Invader merk besoedeling bronne (
__proto__
,constructor
,prototype
) wat in URL/navraag/hash of JSON web-boodskappe gevind word. - Toets – klik Toets om 'n PoC oortjie te open waar
Object.prototype.testproperty
moet bestaan:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
- Skandeer vir gadgets – DOM Invader brute-force eienskap name en volg of enige in gevaarlike sinke eindig (bv.
innerHTML
). - Eksploiteer – wanneer 'n gadget-sink ketting gevind word, verskyn 'n Eksploiteer knoppie wat bron + gadget + sink ketting om 'n waarskuwing te aktiveer.
Geavanceerde instellings (rat ikon):
- Verwyder CSP / X-Frame-Options om iframes werkbaar te hou tydens gadget skandering.
- Skandeer tegnieke in aparte rame om
__proto__
teenconstructor
interferensie te vermy. - Deaktiveer tegnieke individueel vir brose toepassings.
5. DOM Klobbering
Skakel Aanval tipes ➜ DOM klobbering aan. DOM Invader monitor dinamies geskepte elemente wie se id
/name
attribuut met globale veranderlikes of vormobjekte bots (bv. <input name="location">
→ klobber window.location
). 'n Inskrywing word geproduseer wanneer gebruikersbeheerde markup tot veranderlike vervanging lei.
6. Instellings Oorsig (2025)
DOM Invader is nou verdeel in Hoof / Aanval Tipes / Divers / Kanarie kategorieë.
- Hoof
- Enable DOM Invader – globale skakel.
- Postmessage interception – skakel boodskaplogging aan/af; sub-skakelaars vir outo-mutasie.
- Aangepaste Bronne/Sinke – rat ikon ➜ aktiveer/deaktiveer spesifieke sinke (bv.
eval
,setAttribute
) wat die toepassing kan breek.
- Aanval Tipes
- Prototipe besoedeling (met per-tegniek instellings).
- DOM klobbering.
- Divers
- Herleiding voorkoming – blokkeer kliënt-kant herleidings sodat die sink lys nie verlore gaan nie.
- Breakpoint voor herleiding – pauzeer JS net voor herleiding vir oproep-stapel inspeksie.
- Inspuit kanarie in alle bronne – auto-inspuit kanarie oral; konfigureerbare bron/parameter toelaat lys.
- Kanarie
- Beskou / ewekansig maak / stel aangepaste kanarie; kopieer na klembord. Veranderinge vereis blaaiert herlaai.
7. Wenke & Goeie Praktyke
- Gebruik 'n duidelike kanarie – vermy algemene stringe soos
test
, anders gebeur vals positiewe. - Deaktiveer swaar sinke (
eval
,innerHTML
) tydelik as hulle bladsy funksionaliteit breek tydens navigasie. - Kombineer met Burp Repeater & Proxy – repliseer die blaaiervraag/antwoord wat 'n kwesbare toestand geproduseer het en skep finale eksploit URL's.
- Onthou raam omvang – bronne/sinke word per blaai kontekst vertoon; kwesbaarhede binne iframes mag handmatige fokus benodig.
- Eksporteer bewyse – regsklik die DOM Invader paneel ➜ Stoor skermskoot om in verslae in te sluit.
Verwysings
- 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
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.