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

113 lines
8.2 KiB
Markdown

# DOM Invader
<details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details>
## DOM Invader
DOM Invader è uno strumento del browser installato nel browser integrato di Burp. Aiuta a **rilevare vulnerabilità XSS nel DOM** 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 del DOM XSS, fornendo contesto e dettagli sulla sanificazione.
2. **Registrazione, modifica e reinvio di messaggi web** inviati tramite il metodo `postMessage()` per il testing del DOM XSS. DOM Invader può anche rilevare automaticamente vulnerabilità utilizzando messaggi web appositamente creati.
3. Rilevamento di **fonti di inquinamento del prototipo lato client** e scansione di gadget controllabili inviati a sink rischiosi.
4. Identificazione di **vulnerabilità di sovrascrittura del DOM**.
### Abilitarlo
Nel browser integrato di Burp vai all'estensione di **Burp** e abilitalo:
<figure><img src="../../.gitbook/assets/image (1129).png" alt=""><figcaption></figcaption></figure>
Ora aggiorna la pagina e nelle **Dev Tools** troverai la scheda **DOM Invader:**
<figure><img src="../../.gitbook/assets/image (695).png" alt=""><figcaption></figcaption></figure>
### Iniettare un Canary
Nell'immagine precedente puoi vedere un **gruppo casuale di caratteri, che è il Canary**. Dovresti ora iniziare a **iniettarlo** in diverse parti del web (parametri, moduli, URL...) e ogni volta fare clic su cerca. DOM Invader verificherà 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.
### Iniettare un Canary vuoto
Se vuoi solo trovare i sink potenziali che la pagina potrebbe avere, anche se non sono sfruttabili, puoi **cercare un canary vuoto**.
### Messaggi Post
DOM Invader consente di testare il 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. **Modifica automatica** e invio di messaggi web per esplorare il DOM XSS.
#### Dettagli del messaggio
È possibile visualizzare informazioni dettagliate su ciascun messaggio facendo clic su di esso, che include se il JavaScript lato client accede alle proprietà `origin`, `data` o `source` del messaggio.
* **`origin`** : Se le **informazioni sull'origine del messaggio non sono controllate**, potresti essere in grado di inviare messaggi cross-origin all'handler dell'evento **da un dominio esterno arbitrario**. Ma se è 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 facendo riferimento a un iframe, è convalidata invece dell'origine. Anche se questo è controllato, non assicura che la convalida non possa essere aggirata.
#### Rispondere a un messaggio
1. Dalla vista **Messaggi**, fare clic su qualsiasi messaggio per aprire il dialogo dei dettagli del messaggio.
2. Modificare il campo **Data** come richiesto.
3. Fare clic su **Invia**.
### Inquinamento del Prototipo
DOM Invader può anche cercare **vulnerabilità di inquinamento del prototipo**. Prima, è necessario abilitarlo:
<figure><img src="../../.gitbook/assets/image (1026).png" alt=""><figcaption></figcaption></figure>
Poi, **cercherà fonti** che ti consentono di aggiungere proprietà arbitrarie all'**`Object.prototype`**.
Se viene trovato qualcosa, apparirà un pulsante **Test** per **testare la fonte trovata**. Fare clic su di esso, apparirà una nuova scheda, creare un oggetto nella console e verificare se la `testproperty` esiste:
```javascript
let b = {}
b.testproperty
```
Una volta trovata una sorgente puoi **scansionare per un gadget**:
1. Viene aperta una nuova scheda da DOM Invader quando il pulsante **Scansiona per gadget**, che si trova accanto a qualsiasi sorgente di inquinamento del prototipo identificata nella vista **DOM**, viene cliccato. Inizia quindi la scansione per individuare i gadget adatti.
2. Nel frattempo, nella stessa scheda, la scheda **DOM Invader** dovrebbe essere aperta nel pannello DevTools. Dopo il completamento della scansione, eventuali sink accessibili tramite i gadget identificati vengono visualizzati nella vista **DOM**. Ad esempio, una proprietà del gadget chiamata `html` passata al sink `innerHTML` viene mostrata nell'esempio qui sotto.
## DOM clobbering
Nell'immagine precedente è possibile vedere che la scansione del 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)
<details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
</details>