# DOM Invader
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## DOM Invader DOM Invader es una herramienta de navegador instalada en el navegador integrado de Burp. Ayuda a **detectar vulnerabilidades de XSS en el DOM** utilizando varias fuentes y sumideros, incluyendo mensajes web y contaminación de prototipos. La herramienta está preinstalada como una extensión. DOM Invader integra una pestaña dentro del panel de DevTools del navegador que permite lo siguiente: 1. **Identificación de sumideros controlables** en una página web para pruebas de XSS en el DOM, proporcionando detalles de contexto y de saneamiento. 2. **Registro, edición y reenvío de mensajes web** enviados a través del método `postMessage()` para pruebas de XSS en el DOM. DOM Invader también puede detectar automáticamente vulnerabilidades utilizando mensajes web especialmente diseñados. 3. Detección de **fuentes de contaminación de prototipos del lado del cliente** y escaneo de dispositivos controlables enviados a sumideros riesgosos. 4. Identificación de **vulnerabilidades de clobbering del DOM**. ### Habilitar En el navegador integrado de Burp, vaya a la **extensión de Burp** y habilítela:
Ahora actualice la página y en las **Dev Tools** encontrará la pestaña **DOM Invader:**
### Inyectar un canario En la imagen anterior se puede ver un **grupo aleatorio de caracteres, que es el canario**. Ahora debe comenzar a **inyectarlo** en diferentes partes de la web (parámetros, formularios, URL...) y cada vez hacer clic en buscar. DOM Invader comprobará si el **canario terminó en algún sumidero interesante** que pueda ser explotado. Además, las opciones **Inyectar parámetros de URL** e Inyectar formularios abrirán automáticamente una **nueva pestaña** **inyectando** el **canario** en cada **parámetro de URL** y **formulario** que encuentre. ### Inyectar un canario vacío Si solo desea encontrar sumideros potenciales que la página pueda tener, incluso si no son explotables, puede **buscar un canario vacío**. ### Mensajes web DOM Invader permite probar XSS en el DOM utilizando mensajes web con características como: 1. **Registro de mensajes web** enviados a través de `postMessage()`, similar al registro de historial de solicitudes/respuestas HTTP de Burp Proxy. 2. **Modificación** y **reenvío** de mensajes web para probar manualmente XSS en el DOM, similar a la función de Burp Repeater. 3. **Alteración automática** y envío de mensajes web para sondear XSS en el DOM. #### Detalles del mensaje Puede hacer clic en cada mensaje para ver información más detallada sobre él, incluyendo si las propiedades `origin`, `data` o `source` del mensaje son accedidas por el JavaScript del lado del cliente. * **`origin`**: Si la **información de origen del mensaje no se comprueba**, es posible que pueda enviar mensajes entre dominios al controlador de eventos **desde un dominio externo arbitrario**. Pero si se comprueba, aún podría ser inseguro. * **`data`**: Aquí es donde se envía la carga útil. Si estos datos no se utilizan, el sumidero es inútil. * **`source`**: Evalúa si la propiedad de origen, que generalmente hace referencia a un iframe, se valida en lugar del origen. Incluso si esto se comprueba, no asegura que la validación no pueda ser eludida. #### Responder a un mensaje 1. Desde la vista de **Mensajes**, haga clic en cualquier mensaje para abrir el cuadro de diálogo de detalles del mensaje. 2. Edite el campo **Datos** según sea necesario. 3. Haga clic en **Enviar**. ### Contaminación de prototipos DOM Invader también puede buscar **vulnerabilidades de contaminación de prototipos**. Primero, debe habilitarlo:
Luego, buscará **fuentes** que le permitan agregar propiedades arbitrarias al **`Object.prototype`**. Si se encuentra algo, aparecerá un botón de **Prueba** para **probar la fuente encontrada**. Haga clic en él, aparecerá una nueva pestaña, cree un objeto en la consola y compruebe si existe la propiedad `testproperty`: ```javascript let b = {} b.testproperty ``` Una vez que encuentres una fuente, puedes **escanear para encontrar un gadget**: 1. Desde la vista del **DOM**, haz clic en el botón **Escanear para encontrar gadgets** junto a cualquier fuente de contaminación de prototipos que haya encontrado DOM Invader. DOM Invader abre una nueva pestaña y comienza a escanear en busca de gadgets adecuados. 2. En la misma pestaña, abre la pestaña **DOM Invader** en el panel de DevTools. Una vez que se completa el escaneo, la vista del **DOM** muestra cualquier sumidero al que DOM Invader pudo acceder a través de los gadgets identificados. En el ejemplo a continuación, se pasó una propiedad de gadget llamada `html` al sumidero `innerHTML`. ## Contaminación del DOM En la imagen anterior se puede ver que se puede activar el escaneo de contaminación del DOM. Una vez hecho esto, **DOM Invader comenzará a buscar vulnerabilidades de contaminación del DOM**. ## Referencias * [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)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).