# DOM Invader {{#include ../../banners/hacktricks-training.md}} ## DOM Invader DOM Invader è uno strumento del browser installato nel browser integrato di Burp. Aiuta a **rilevare vulnerabilità DOM XSS** utilizzando varie fonti e sink, inclusi messaggi web e inquinamento del prototipo. Lo strumento è preinstallato come estensione. DOM Invader integra una scheda all'interno del pannello DevTools del browser che consente quanto segue: 1. **Identificazione dei sink controllabili** su una pagina web per il testing DOM XSS, fornendo dettagli sul contesto e sulla sanitizzazione. 2. **Registrazione, modifica e reinvio di messaggi web** inviati tramite il metodo `postMessage()` per il testing DOM XSS. DOM Invader può anche rilevare automaticamente vulnerabilità utilizzando messaggi web appositamente creati. 3. Rilevamento delle **fonti di inquinamento del prototipo lato client** e scansione di gadget controllabili inviati a sink rischiosi. 4. Identificazione delle **vulnerabilità di clobbering DOM**. ### Abilitalo Nel browser integrato di Burp vai all'**estensione Burp** e abilitalo:
Ora aggiorna la pagina e nei **Dev Tools** troverai la **scheda DOM Invader:**
### Inietta un Canary Nell'immagine precedente puoi vedere un **gruppo casuale di caratteri, che è il Canary**. Ora dovresti iniziare a **iniettarlo** in diverse parti del web (parametri, moduli, url...) e ogni volta cliccare su cerca. DOM Invader controllerà se il **canary è finito in qualche sink interessante** che potrebbe essere sfruttato. Inoltre, le opzioni **Inietta parametri URL** e Inietta moduli apriranno automaticamente una **nuova scheda** **iniettando** il **canary** in ogni **parametro URL** e **modulo** che trova. ### Inietta un Canary vuoto Se vuoi solo trovare potenziali sink che la pagina potrebbe avere, anche se non sono sfruttabili, puoi **cercare un canary vuoto**. ### Messaggi Post DOM Invader consente di testare per DOM XSS utilizzando messaggi web con funzionalità come: 1. **Registrazione dei messaggi web** inviati tramite `postMessage()`, simile alla registrazione della cronologia delle richieste/risposte HTTP di Burp Proxy. 2. **Modifica** e **riemissione** di messaggi web per testare manualmente il DOM XSS, simile alla funzione di Burp Repeater. 3. **Alterazione automatica** e invio di messaggi web per sondare il DOM XSS. #### Dettagli del messaggio Informazioni dettagliate possono essere visualizzate su ogni messaggio cliccandoci sopra, che includono se il JavaScript lato client accede alle proprietà `origin`, `data` o `source` del messaggio. - **`origin`** : Se le **informazioni di origine del messaggio non vengono controllate**, potresti essere in grado di inviare messaggi cross-origin all'handler degli eventi **da un dominio esterno arbitrario**. Ma se viene controllato, potrebbe comunque essere insicuro. - **`data`**: Qui viene inviato il payload. Se questi dati non vengono utilizzati, il sink è inutile. - **`source`**: Valuta se la proprietà source, di solito riferita a un iframe, è convalidata invece dell'origine. Anche se questo è controllato, non assicura che la convalida non possa essere elusa. #### Rispondi a un messaggio 1. Dalla vista **Messaggi**, clicca su un messaggio qualsiasi per aprire la finestra di dialogo dei dettagli del messaggio. 2. Modifica il campo **Data** come necessario. 3. Clicca su **Invia**. ### Inquinamento del prototipo DOM Invader può anche cercare vulnerabilità di **Inquinamento del Prototipo**. Prima, devi abilitarlo:
Poi, cercherà **fonti** che ti consentono di aggiungere proprietà arbitrarie a **`Object.prototype`**. Se viene trovata qualcosa, apparirà un pulsante **Test** per **testare la fonte trovata**. Clicca su di esso, apparirà una nuova scheda, crea un oggetto nella console e controlla se `testproperty` esiste: ```javascript let b = {} b.testproperty ``` Una volta trovato una sorgente puoi **scansionare per un gadget**: 1. Una nuova scheda viene aperta da DOM Invader quando il pulsante **Scan for gadgets**, che si trova accanto a qualsiasi sorgente di inquinamento del prototipo identificata nella vista **DOM**, viene cliccato. La scansione per gadget adatti inizia quindi. 2. Nel frattempo, nella stessa scheda, la scheda **DOM Invader** dovrebbe essere aperta nel pannello DevTools. Dopo il completamento della scansione, qualsiasi sink accessibile tramite i gadget identificati viene visualizzato nella vista **DOM**. Ad esempio, una proprietà gadget chiamata `html` passata al sink `innerHTML` è mostrata nell'esempio qui sotto. ## DOM clobbering Nell'immagine precedente è possibile vedere che la scansione per DOM clobbering può essere attivata. Una volta fatto, **DOM Invader inizierà a cercare vulnerabilità di DOM clobbering**. ## Riferimenti - [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}}