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

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:

  1. Identifikujete kontrolisane odredišta u realnom vremenu, uključujući kontekst (atribut, HTML, URL, JS) i primenjenu sanitizaciju.
  2. Zabeležite, uredite i ponovo pošaljite postMessage() web-poruke, ili dozvolite ekstenziji da ih automatski mutira.
  3. Otkrivanje izvora zagađenja prototipa na klijentskoj strani i skeniranje za gadget→sink lance, generišući PoC-ove u hodu.
  4. Pronađite DOM klobirajuće vektore (npr. id / name kolizije koje prepisuju globalne promenljive).
  5. 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

  1. Otvorite Proxy ➜ Intercept ➜ Open Browser (ugrađeni pretraživač Burp-a).
  2. Kliknite na Burp Suite logo (gore desno). Ako je skriven, prvo kliknite na deo slagalice.
  3. U DOM Invader kartici, prebacite Enable DOM Invader na ON i pritisnite Reload.
  4. 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:

  1. Pretražujte – DOM Invader označava zagađenje izvora (__proto__, constructor, prototype) pronađenih u URL-u/upitu/hash-u ili JSON web-porukama.
  2. Testirajte – kliknite Test da otvorite PoC karticu gde bi Object.prototype.testproperty trebao postojati:
javascript
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
  1. Skenirajte za gadgete – DOM Invader bruteforcuje imena svojstava i prati da li neka završe u opasnim odredištima (npr. innerHTML).
  2. 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__ vs constructor.
  • 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.

  1. Main
  • Enable DOM Invader – globalni prekidač.
  • Postmessage interception – uključite/isključite beleženje poruka; pod-prekidači za automatsku mutaciju.
  • Custom Sources/Sinksikona zupčanika ➜ omogućite/onemogućite specifična odredišta (npr. eval, setAttribute) koja mogu pokvariti aplikaciju.
  1. Attack Types
  • Prototype pollution (sa podešavanjima po tehnici).
  • DOM clobbering.
  1. 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.
  1. 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

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