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

9.4 KiB

DOM Invader

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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 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 herramientas de desarrollo 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 contexto y detalles de sanitización.
  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 en el lado del cliente y escaneo de dispositivos controlables enviados a sumideros riesgosos.
  4. Identificación de vulnerabilidades de sobrescritura del DOM.

Habilitarlo

En el navegador integrado de Burp, ve a la extensión de Burp y habilítala:

Ahora actualiza la página y en las Herramientas de desarrollo 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 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 quieres encontrar posibles sumideros que la página pueda tener, incluso si no son explotables, puedes buscar un canario vacío.

Mensajes web

DOM Invader permite probar XSS en el DOM utilizando mensajes web con funciones 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

Puedes hacer clic en cada mensaje para ver información más detallada al respecto, 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 verifica, es posible que puedas enviar mensajes entre dominios al controlador 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, se valida en lugar del origen. Incluso si esto se verifica, no asegura que la validación no se pueda eludir.

Responder a un mensaje

  1. Desde la vista de Mensajes, haz clic en cualquier mensaje para abrir el diálogo de detalles del mensaje.
  2. Edita el campo Data según sea necesario.
  3. Haz clic en Enviar.

Contaminación de prototipos

DOM Invader también puede buscar vulnerabilidades de contaminación de prototipos. Primero, debes 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 existe la propiedad testproperty:

let b = {}
b.testproperty

Una vez que encuentres una fuente, puedes escanear en busca de un gadget:

  1. Desde la vista del DOM, haz clic en el botón Escanear en busca de gadgets junto a cualquier fuente de contaminación de prototipos que haya encontrado DOM Invader. DOM Invader abrirá una nueva pestaña y comenzará a escanear en busca de gadgets adecuados.
  2. En la misma pestaña, abre la pestaña DOM Invader en el panel de herramientas de desarrollo. Una vez que se complete el escaneo, la vista del DOM mostrará cualquier punto de fuga al que DOM Invader haya podido acceder a través de los gadgets identificados. En el ejemplo a continuación, se pasó una propiedad de gadget llamada html al punto de fuga innerHTML.

Clobbering del DOM

En la imagen anterior se puede ver que se puede activar el escaneo de clobbering del DOM. Una vez hecho esto, DOM Invader comenzará a buscar vulnerabilidades de clobbering del DOM.

Referencias

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥