8.4 KiB
Invasor del DOM
Aprende a hackear AWS de cero a héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Invasor del DOM
DOM Invader es una herramienta del navegador instalada en el navegador integrado de Burp. Ayuda en detectar vulnerabilidades de XSS en el DOM utilizando diversas 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:
- Identificación de sumideros controlables en una página web para pruebas de XSS en el DOM, proporcionando contexto y detalles de sanitización.
- 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. - Detección de fuentes de contaminación de prototipos del lado del cliente y escaneo de gadgets controlables enviados a sumideros riesgosos.
- Identificación de vulnerabilidades de clobbering del DOM.
Habilitarlo
En el navegador integrado de Burp, ve a la extensión de Burp y habilítalo:
Ahora actualiza la página y en las Dev Tools encontrarás la pestaña DOM Invader:
Inyectar un Canario
En la imagen anterior puedes ver un grupo aleatorio de caracteres, que es el Canario. Ahora debes comenzar a inyectarlo en diferentes partes de la web (parámetros, formularios, URL...) y cada vez hacer clic en buscar. DOM Invader verificará si el canario terminó en algún sumidero interesante que podría 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 deseas encontrar sumideros potenciales que la página pueda tener, incluso si no son explotables, puedes buscar un canario vacío.
Mensajes Post
DOM Invader permite probar XSS en el DOM utilizando mensajes web con funciones como:
- Registro de mensajes web enviados a través de
postMessage()
, similar al registro de historial de solicitudes/respuestas HTTP de Burp Proxy. - Modificación y reenvío de mensajes web para probar manualmente XSS en el DOM, similar a la función de Burp Repeater.
- Alteración automática y envío de mensajes web para sondear XSS en el DOM.
Detalles del mensaje
Se puede ver información detallada sobre cada mensaje haciendo clic en él, lo que incluye si el JavaScript del lado del cliente accede a las propiedades origin
, data
o source
del mensaje.
origin
: Si la información de origen del mensaje no se verifica, es posible enviar mensajes entre dominios al manejador de eventos desde un dominio externo arbitrario. Pero si se verifica, 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, está validada en lugar del origen. Incluso si esto se verifica, no asegura que la validación no pueda ser eludida.
Responder a un mensaje
- Desde la vista de Mensajes, haz clic en cualquier mensaje para abrir el cuadro de diálogo de detalles del mensaje.
- Edita el campo Data según sea necesario.
- Haz clic en Enviar.
Contaminación de Prototipos
DOM Invader también puede buscar vulnerabilidades de contaminación de prototipos. Primero, necesitas habilitarlo:
Luego, buscará fuentes que te permitan agregar propiedades arbitrarias al Object.prototype
.
Si se encuentra algo, aparecerá un botón de Prueba para probar la fuente encontrada. Haz clic en él, aparecerá una nueva pestaña, crea un objeto en la consola y verifica si la testproperty
existe:
let b = {}
b.testproperty
Una vez que encuentres una fuente, puedes escanear un gadget:
- DOM Invader abre una nueva pestaña cuando se hace clic en el botón Escanear gadgets, que se encuentra junto a cualquier fuente de contaminación de prototipos identificada en la vista DOM. Luego comienza el escaneo en busca de gadgets adecuados.
- Mientras tanto, en la misma pestaña, la pestaña DOM Invader debe abrirse en el panel DevTools. Después de que el escaneo se complete, cualquier sink accesible a través de los gadgets identificados se muestra en la vista DOM. Por ejemplo, se muestra en el ejemplo una propiedad de gadget llamada
html
que se pasa al sinkinnerHTML
.
DOM clobbering
En la imagen anterior es posible ver que se puede activar el escaneo de DOM clobbering. Una vez hecho, DOM Invader comenzará a buscar vulnerabilidades de DOM clobbering.
Referencias
- 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/dom-xss
- 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/dom-clobbering
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la merchandising oficial de PEASS & HackTricks
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud github.