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

8.2 KiB

DOM Invader

{% hint style="success" %} Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks
{% endhint %}

DOM Invader

DOM Invader es una herramienta de navegador instalada en el navegador integrado de Burp. Ayuda en la detección de vulnerabilidades DOM XSS 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 DevTools del navegador que permite lo siguiente:

  1. Identificación de sumideros controlables en una página web para pruebas de DOM XSS, proporcionando detalles de contexto y sanitización.
  2. Registro, edición y reenvío de mensajes web enviados a través del método postMessage() para pruebas de DOM XSS. 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 gadgets controlables enviados a sumideros riesgosos.
  4. Identificación de vulnerabilidades de clobbering en DOM.

Habilítalo

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

Ahora actualiza la página y en las Dev Tools encontrarás la pestaña DOM Invader:

Inyectar un Canary

En la imagen anterior puedes ver un grupo aleatorio de caracteres, que es el Canary. Ahora deberías 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 canary 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 canary en cada parámetro de URL y formulario que encuentre.

Inyectar un Canary vacío

Si solo deseas encontrar sumideros potenciales que la página podría tener, incluso si no son explotables, puedes buscar un canary vacío.

Mensajes Post

DOM Invader permite probar DOM XSS 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 reemisión de mensajes web para probar manualmente DOM XSS, similar a la función de Burp Repeater.
  3. Alteración automática y envío de mensajes web para sondear DOM XSS.

Detalles del mensaje

Se puede ver información detallada sobre cada mensaje haciendo clic en él, 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, podrías enviar mensajes de origen cruzado 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 source, 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 pueda ser eludida.

Responder 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, 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 en busca de un gadget:

  1. Se abre una nueva pestaña por DOM Invader cuando se hace clic en el botón Scan for gadgets, que se puede encontrar junto a cualquier fuente de contaminación de prototipos identificada en la vista DOM. Luego comienza el escaneo en busca de gadgets adecuados.
  2. Mientras tanto, en la misma pestaña, la pestaña DOM Invader debería estar abierta en el panel de DevTools. Después de que se complete el escaneo, se muestran en la vista DOM cualquier sink accesible a través de los gadgets identificados. Por ejemplo, se muestra en el siguiente ejemplo una propiedad de gadget llamada html que se pasa al sink innerHTML.

DOM clobbering

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

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}