hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

116 lines
7.8 KiB
Markdown
Raw Normal View History

# DOM Invader
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
2024-01-01 17:15:42 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## 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 oblikovane 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**.
### Enable It
U Burp-ovom ugrađenom pretraživaču idite na **Burp ekstenziju** i omogućite je:
<figure><img src="../../.gitbook/assets/image (1129).png" alt=""><figcaption></figcaption></figure>
Sada osvežite stranicu i u **Dev Tools** pronaći ćete **DOM Invader karticu:**
<figure><img src="../../.gitbook/assets/image (695).png" alt=""><figcaption></figcaption></figure>
### Inject a Canary
Na prethodnoj slici možete videti **nasumičnu grupu karaktera, to je Canary**. Sada biste trebali početi **ubacivati** ga na različitim delovima veba (parametri, forme, url...) i svaki put kliknite na pretragu. DOM Invader će proveriti da li je **canary završio u nekom interesantnom odredištu** koje bi moglo biti iskorišćeno.
Štaviše, opcije **Inject URL params** i Inject forms automatski će otvoriti **novu karticu** **ubacujući** **canary** u svaki **URL** parametar i **formu** koju pronađe.
### Inject an empty Canary
Ako samo želite da pronađete potencijalna odredišta koja stranica može imati, čak i ako nisu iskorišćiva, možete **pretraživati za praznim canary**.
### Post Messages
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.
#### Message details
Detaljne informacije mogu se videti o svakoj poruci 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.
#### Reply a message
1. Iz **Messages** pregleda, kliknite na bilo koju poruku da otvorite dijalog sa detaljima poruke.
2. Uredite **Data** polje po potrebi.
3. Kliknite **Send**.
### Prototype Pollution
DOM Invader takođe može pretraživati za **Prototype Pollution ranjivostima**. Prvo, morate je omogućiti:
<figure><img src="../../.gitbook/assets/image (1026).png" alt=""><figcaption></figcaption></figure>
Zatim ć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
```
Once you found a source you can **scan for a gadget**:
1. Novi tab se otvara kada se klikne na dugme **Scan for gadgets**, koje se može naći pored bilo kojeg identifikovanog izvora prototipne zagađenosti u **DOM** prikazu. Skener 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 izlazi dostupni putem identifikovanih gadgeta se prikazuju u **DOM** prikazu. Na primer, svojstvo gadgeta nazvano `html` koje se prosleđuje `innerHTML` izlazu prikazano je 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**.
## References
* [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)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
2024-01-01 17:15:42 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}