hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md
2024-02-10 13:11:20 +00:00

113 lines
8 KiB
Markdown

# DOM Invader
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
## DOM Invader
DOM Invader je alat za pregledač koji je instaliran u ugrađenom pregledaču Burp-a. Pomaže u **otkrivanju DOM XSS ranjivosti** koristeći različite izvore i ciljeve, uključujući web poruke i onečišćenje prototipa. Alat je unapred instaliran kao ekstenzija.
DOM Invader integriše karticu unutar DevTools panela pregledača koja omogućava sledeće:
1. **Identifikacija kontrolabilnih ciljeva** na veb stranici za testiranje DOM XSS-a, pružajući kontekst i detalje o sanitizaciji.
2. **Logovanje, uređivanje i ponovno slanje web poruka** poslatih putem metode `postMessage()` za testiranje DOM XSS-a. DOM Invader takođe može automatski otkriti ranjivosti koristeći posebno kreirane web poruke.
3. Otkrivanje izvora **onečišćenja prototipa na klijentskoj strani** i skeniranje kontrolabilnih uređaja poslatih na rizične ciljeve.
4. Identifikacija ranjivosti **DOM clobbering-a**.
### Omogući ga
U ugrađenom pregledaču Burp-a idite na **Burp ekstenziju** i omogućite je:
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
Sada osvežite stranicu i u **Dev Tools**-u ćete pronaći **karticu DOM Invader:**
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Ubaci kanarinca
Na prethodnoj slici možete videti **nasumičnu grupu znakova, to je kanarinac**. Sada treba da ga počnete **ubacivati** na različite delove veba (parametre, forme, URL...) i svaki put kliknite na pretragu. DOM Invader će proveriti da li se **kanarinac završio na nekom interesantnom cilju** koji bi mogao biti iskorišćen.
Osim toga, opcije **Ubaci URL parametre** i **Ubaci forme** će automatski otvoriti **novu karticu** i **ubaciti kanarinca** u svaki **URL** parametar i **formu** koju pronađe.
### Ubaci praznog kanarinca
Ako želite samo da pronađete potencijalne ciljeve koje stranica može imati, čak i ako nisu iskorišćivi, možete **tražiti praznog kanarinca**.
### Web poruke
DOM Invader omogućava testiranje DOM XSS-a korišćenjem web poruka sa funkcijama kao što su:
1. **Logovanje web poruka** poslatih putem `postMessage()`, slično logovanju istorije HTTP zahteva/odgovora u Burp Proxy-u.
2. **Izmena** i **ponovno slanje** web poruka radi ručnog testiranja DOM XSS-a, slično funkciji Burp Repeater-a.
3. **Automatska izmena** i slanje web poruka radi ispitivanja DOM XSS-a.
#### Detalji poruke
Detaljne informacije o svakoj poruci mogu se videti klikom na nju, što uključuje da li klijentski JavaScript pristupa svojstvima `origin`, `data` ili `source` poruke.
* **`origin`**: Ako **informacije o poreklu poruke nisu proverene**, možda ćete moći da šaljete poruke preko granica porekla ka rukovaocu događaja **sa proizvoljnog spoljnog domena**. Ali ako je provereno, i dalje može biti nesigurno.
* **`data`**: Ovde se šalje payload. Ako se ovi podaci ne koriste, cilj je beskoristan.
* **`source`**: Proverava da li je provereno svojstvo izvora, obično referencirajući iframe, umesto porekla. Čak i ako je ovo provereno, to ne garantuje da validacija ne može biti zaobiđena.
#### Odgovor na poruku
1. Iz **Prikaza poruka**, kliknite na bilo koju poruku da biste otvorili dijalog sa detaljima poruke.
2. Uredite polje **Podaci** po potrebi.
3. Kliknite na **Pošalji**.
### Onečišćenje prototipa
DOM Invader takođe može tražiti **ranjivosti onečišćenja prototipa**. Prvo, trebate ga omogućiti:
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
Zatim, on će **tražiti izvore** koji vam omogućavaju da dodate proizvoljna svojstva na **`Object.prototype`**.
Ako se pronađe nešto, pojaviće se dugme **Test** za **testiranje pronađenog izvora**. Kliknite na njega, pojaviće se nova kartica, kreirajte objekat u konzoli i proverite da li postoji `testproperty`:
```javascript
let b = {}
b.testproperty
```
Jednom kada pronađete izvor, možete **skenirati za uređaj**:
1. Kada se klikne dugme **Skeniraj za uređaje**, koje se može pronaći pored bilo kojeg identifikovanog izvora zagađenja prototipa u **DOM** prikazu, DOM Invader otvara novu karticu. Zatim počinje skeniranje za odgovarajuće uređaje.
2. U međuvremenu, u istoj kartici, treba otvoriti karticu **DOM Invader** u panelu DevTools-a. Nakon završetka skeniranja, svi izvori zagađenja koji su dostupni putem identifikovanih uređaja prikazuju se u **DOM** prikazu. Na primer, u donjem primeru se prikazuje svojstvo uređaja nazvano `html` koje se prosleđuje izvoru `innerHTML`.
## 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 tražiti ranjivosti DOM zagađenja**.
## 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)
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu**, proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>