# DOM Invader {{#include ../../banners/hacktricks-training.md}} ## DOM Invader DOM Invader je alat za pretraživač instaliran u Burp-ovom ugrađenom pretraživaču. Pomaže u **otkrivanju DOM XSS ranjivosti** koristeći različite izvore i odredišta, uključujući web poruke i zagađenje prototipa. Alat je unapred instaliran kao ekstenzija. DOM Invader integriše karticu unutar DevTools panela pretraživača koja omogućava sledeće: 1. **Identifikaciju kontrolisanih odredišta** na veb stranici za DOM XSS testiranje, pružajući kontekst i detalje o sanitizaciji. 2. **Zapisivanje, uređivanje i ponovno slanje web poruka** poslatih putem `postMessage()` metode za DOM XSS testiranje. DOM Invader takođe može automatski otkriti ranjivosti koristeći posebno kreirane web poruke. 3. Otkrivanje **izvora zagađenja prototipa na klijentskoj strani** i skeniranje kontrolisanih gadgeta poslatih u rizična odredišta. 4. Identifikaciju **DOM clobbering ranjivosti**. ### Omogućite ga U Burp-ovom ugrađenom pretraživaču idite na **Burp ekstenziju** i omogućite je:
Sada osvežite stranicu i u **Dev Tools** pronaći ćete **DOM Invader karticu:**
### Umetnite Kanarinca Na prethodnoj slici možete videti **slučajnu grupu karaktera, to je Kanarinca**. Sada treba da počnete da **ubacujete** to na različitim mestima na webu (parametri, forme, url...) i svaki put kliknite na pretragu. DOM Invader će proveriti da li je **kanarinca završila u nekom interesantnom odredištu** koje bi moglo biti iskorišćeno. Pored toga, opcije **Umetni URL parametre** i **Umetni forme** automatski će otvoriti **novu karticu** **ubacujući** **kanarinca** u svaki **URL** parametar i **formu** koju pronađe. ### Umetnite praznog Kanarinca Ako samo želite da pronađete potencijalna odredišta koja stranica može imati, čak i ako nisu iskorišćiva, možete **pretraživati praznog kanarinca**. ### Post Poruke DOM Invader omogućava testiranje za DOM XSS koristeći web poruke sa funkcijama kao što su: 1. **Zapisivanje web poruka** poslatih putem `postMessage()`, slično kao zapisivanje HTTP zahteva/odgovora u Burp Proxy. 2. **Izmena** i **ponovno slanje** web poruka za ručno testiranje DOM XSS, slično funkciji Burp Repeater-a. 3. **Automatska izmena** i slanje web poruka za ispitivanje DOM XSS. #### Detalji poruke Detaljne informacije o svakoj poruci mogu se videti klikom na nju, što uključuje da li klijentski JavaScript pristupa `origin`, `data` ili `source` svojstvima poruke. - **`origin`** : Ako **informacije o poreklu poruke nisu proverene**, možda ćete moći da šaljete poruke između različitih domena ka upravljaču događajima **iz proizvoljnog spoljnog domena**. Ali ako se proverava, to i dalje može biti nesigurno. - **`data`**: Ovo je mesto gde se payload šalje. Ako se ovi podaci ne koriste, odredište je beskorisno. - **`source`**: Procenjuje da li je svojstvo izvora, obično referencirajući iframe, validirano umesto porekla. Čak i ako se ovo proverava, to ne osigurava da se validacija ne može zaobići. #### Odgovorite na poruku 1. Iz **Pregleda poruka**, kliknite na bilo koju poruku da otvorite dijalog sa detaljima poruke. 2. Uredite **Data** polje po potrebi. 3. Kliknite **Send**. ### Zagađenje prototipa DOM Invader takođe može pretraživati **Ranjivosti zagađenja prototipa**. Prvo, treba da ga omogućite:
Zatim, on će **pretraživati izvore** koji vam omogućavaju da dodate proizvoljna svojstva u **`Object.prototype`**. Ako se nešto pronađe, pojaviće se dugme **Test** da **testirate pronađeni izvor**. Kliknite na njega, nova kartica će se pojaviti, kreirajte objekat u konzoli i proverite da li `testproperty` postoji: ```javascript let b = {} b.testproperty ``` Kada pronađete izvor, možete **skenirati za gadget**: 1. Novi tab se otvara od strane DOM Invader kada se klikne na dugme **Scan for gadgets**, koje se može naći pored bilo kojeg identifikovanog izvora zagađenja prototipa u **DOM** prikazu. Skeniranje za odgovarajuće gadgete tada počinje. 2. U međuvremenu, u istom tabu, **DOM Invader** tab treba da bude otvoren u DevTools panelu. Nakon što skeniranje završi, svi izvori dostupni putem identifikovanih gadgeta se prikazuju u **DOM** prikazu. Na primer, svojstvo gadgeta nazvano `html` koje se prosleđuje `innerHTML` izvoru je prikazano u sledećem primeru. ## DOM zagađenje Na prethodnoj slici je moguće videti da se skeniranje za DOM zagađenje može uključiti. Kada se to uradi, **DOM Invader će početi da traži DOM zagađivačke ranjivosti**. ## Reference - [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](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/enabling) - [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss](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/web-messages) - [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution](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/dom-clobbering) {{#include ../../banners/hacktricks-training.md}}