DOM Invader
Reading time: 6 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
DOM Invader
DOM Invader je alat za pretraživač instaliran u ugrađenom Chromium pretraživaču Burp Suite-a. Pomaže u otkrivanju DOM XSS i drugih ranjivosti na klijentskoj strani (zagađenje prototipa, DOM klobiranje, itd.) automatskim instrumentiranjem JavaScript izvora i odredišta. Ekstenzija dolazi sa Burp-om i samo je potrebno omogućiti je.
DOM Invader dodaje karticu u DevTools panel pretraživača koja vam omogućava da:
- Identifikujete kontrolisane odredišta u realnom vremenu, uključujući kontekst (atribut, HTML, URL, JS) i primenjenu sanitizaciju.
- Zabeležite, uredite i ponovo pošaljite
postMessage()
web-poruke, ili dozvolite ekstenziji da ih automatski mutira. - Otkrivanje izvora zagađenja prototipa na klijentskoj strani i skeniranje za gadget→sink lance, generišući PoC-ove u hodu.
- Pronađite DOM klobirajuće vektore (npr.
id
/name
kolizije koje prepisuju globalne promenljive). - Fino podesite ponašanje putem bogatog UI za podešavanja (prilagođeni kanarinac, automatska injekcija, blokiranje preusmeravanja, liste izvora/odredišta, itd.).
1. Omogućite ga
.png)
- Otvorite Proxy ➜ Intercept ➜ Open Browser (ugrađeni pretraživač Burp-a).
- Kliknite na Burp Suite logo (gore desno). Ako je skriven, prvo kliknite na deo slagalice.
- U DOM Invader kartici, prebacite Enable DOM Invader na ON i pritisnite Reload.
- Otvorite DevTools (
F12
/ Desni klik ➜ Inspect ) i pričvrstite ga. Pojaviće se novi DOM Invader panel.
Burp pamti stanje po profilu. Onemogućite ga pod Settings ➜ Tools ➜ Burp’s browser ➜ Store settings... ako je potrebno.
2. Injektujte Kanarinca
Kanarac je nasumični marker string (npr. xh9XKYlV
) koji DOM Invader prati. Možete:
- Kopirati ga i ručno injektovati u parametre, forme, Web-Socket okvire, web-poruke, itd.
- Koristiti Inject URL params / Inject forms dugmad da otvorite novu karticu gde se kanarac automatski dodaje svakom ključu/vrednosti upita ili polju forme.
- Pretražiti za praznim kanarcem da otkrijete sva odredišta bez obzira na mogućnost eksploatacije (odlično za izviđanje).
Prilagođeni kanarac (2025+)
Burp 2024.12 je uveo Canary settings (Burp-logo ➜ DOM Invader ➜ Canary). Možete:
- Nasumično ili postaviti prilagođeni string (korisno za testiranje u više kartica ili kada se podrazumevana vrednost prirodno pojavljuje na stranici).
- Kopirati vrednost u međuspremnik.
- Promene zahtevaju Reload.
3. Web-poruke (postMessage
)
Messages podkartica beleži svaki window.postMessage()
poziv, prikazujući korišćenje origin
, source
i data
.
• Izmenite i ponovo pošaljite: dvokliknite na poruku, izmenite data
, i pritisnite Send (slično Burp Repeater-u).
• Auto-fuzz: omogućite Postmessage interception ➜ Auto-mutate u podešavanjima da dozvolite DOM Invader-u da generiše kanarac-bazirane payload-ove i ponovo ih pošalje handler-u.
Pojmovi polja:
- origin – da li handler validira
event.origin
. - data – lokacija payload-a. Ako se ne koristi, odredište je irelevantno.
- source – validacija reference iframe-a / prozora; često slabija od stroge provere porekla.
4. Zagađenje prototipa
Omogućite pod Settings ➜ Attack types ➜ Prototype pollution.
Tok rada:
- Pretražujte – DOM Invader označava zagađenje izvora (
__proto__
,constructor
,prototype
) pronađenih u URL-u/upitu/hash-u ili JSON web-porukama. - Testirajte – kliknite Test da otvorite PoC karticu gde bi
Object.prototype.testproperty
trebao postojati:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
- Skenirajte za gadgete – DOM Invader bruteforcuje imena svojstava i prati da li neka završe u opasnim odredištima (npr.
innerHTML
). - Eksploatišite – kada se pronađe lanac gadget-odredište, pojavljuje se dugme Exploit koje povezuje izvor + gadget + odredište da pokrene alert.
Napredna podešavanja (ikona zupčanika):
- Uklonite CSP / X-Frame-Options da zadržite iframe-ove funkcionalnim tokom skeniranja gadgeta.
- Skenirajte tehnike u odvojenim okvirima da izbegnete ometanje
__proto__
vsconstructor
. - Onemogućite tehnike pojedinačno za krhke aplikacije.
5. DOM Klobiranje
Prebacite Attack types ➜ DOM clobbering. DOM Invader prati dinamički kreirane elemente čiji id
/name
atributi kolidiraju sa globalnim promenljivama ili objektima forme (<input name="location">
→ klobira window.location
). Unos se proizvodi svaki put kada korisnički kontrolisani markup dovede do zamene promenljive.
6. Pregled podešavanja (2025)
DOM Invader je sada podeljen u Main / Attack Types / Misc / Canary kategorije.
- Main
- Enable DOM Invader – globalni prekidač.
- Postmessage interception – uključite/isključite beleženje poruka; pod-prekidači za automatsku mutaciju.
- Custom Sources/Sinks – ikona zupčanika ➜ omogućite/onemogućite specifična odredišta (npr.
eval
,setAttribute
) koja mogu pokvariti aplikaciju.
- Attack Types
- Prototype pollution (sa podešavanjima po tehnici).
- DOM clobbering.
- Misc
- Redirect prevention – blokirajte klijentska preusmeravanja kako lista odredišta ne bi bila izgubljena.
- Breakpoint before redirect – pauzirajte JS neposredno pre preusmeravanja radi inspekcije call-stack-a.
- Inject canary into all sources – automatski injektujte kanarac svuda; konfigurisana lista dozvoljenih izvora/parametara.
- Canary
- Prikaz / nasumično / postavite prilagođeni kanarac; kopirajte u međuspremnik. Promene zahtevaju ponovo učitavanje pretraživača.
7. Saveti i Dobre Prakse
- Koristite različit kanarac – izbegavajte uobičajene stringove poput
test
, inače se javljaju lažno pozitivni rezultati. - Privremeno onemogućite teške odredišta (
eval
,innerHTML
) ako ometaju funkcionalnost stranice tokom navigacije. - Kombinujte sa Burp Repeater & Proxy – replicirajte zahtev/odgovor pretraživača koji je proizveo ranjivo stanje i kreirajte konačne exploit URL-ove.
- Zapamtite opseg okvira – izvori/odredišta se prikazuju po kontekstu pretraživanja; ranjivosti unutar iframe-ova mogu zahtevati ručnu pažnju.
- Izvezite dokaze – desni klik na DOM Invader panel ➜ Save screenshot da uključite u izveštaje.
Reference
- 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
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.