¿Cómo hacer un XSS basado en DOM?

Autor: | Última modificación: 18 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Quiere saber cómo hacer un XSS basado en DOM y para qué sirve aprender esta técnica de hacking web en ciberseguridad? ¡Sigue leyendo!

Ten en cuenta que el siguiente tutorial sobre cómo hacer un XSS basado en DOM está hecho con fines académicos. El uso de esta técnica en entornos web, sin tener propiedad o autorización, normalmente está en contra de la ley. Por eso, se recomienda practicarla en entornos seguros y siempre con finalidades éticas.

¿Qué es XSS?

El cross-site scripting (XSS) es uno de los ciberataques web más utilizados, según la lista de OWASP Top 10 sobre los ataques más comunes de internet. Este hackeo consiste en inyectar código JavaScript malicioso en el navegador de una víctima por medio una página web vulnerable. Por medio de un ataque XSS, un ciberdelincuente puede robar credenciales privadas, datos financieros y más.

Existen tres tipos de cross-site scripting que permiten inyectar payloads de diferentes formas en el navegador de una víctima. En este post, hablaremos específicamente sobre uno de estos tipos de XSS. A continuación, te explicaremos cómo hacer un XSS basado en DOM, por medio de un laboratorio de hacking ético seguro para practicar.

¿Cómo hacer un XSS basado en DOM?

Antes de ver cómo hacer un XSS basado en DOM, es necesario entender a qué nos referimos con el término DOM.

Document Object Model (DOM) es una interfaz de programación de aplicaciones que permite leer, acceder y modificar el frontend del código fuente de una página web. El DOM sirve para representar documentos XML y HTML en una estructura de árbol, orientada en definir la jerarquía de los objetos que componen a un sitio web.

Las vulnerabilidades XSS se basan en una falta de validación de los inputs del usuario. En el caso del XSS basado en DOM, la ausencia de validación ocurre en esta API. Es decir, la vulnerabilidad se puede explotar a partir de inputs hechos por el usuario desde el frontend de la aplicación.

Laboratorio de pentesting web

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

Para enseñarte cómo hacer un XSS basado en DOM, resolveremos uno de los laboratorios de pentesting web, desarrollado por PortSwigger.

Al abrir el laboratorio, ingresarás a una página web vulnerable, que contiene un blog y una entrada de datos para el cliente busque contenido dentro de la aplicación. Sin embargo, pronto podremos descubrir si dicha entrada posee alguna vulnerabilidad XSS.

Para ello, enviaremos la palabra «test» como entrada, para ver qué sucede en la aplicación. Como vemos que la URL del sitio cambia, podemos deducir que también se ha modificado su frontend. Así que abriremos la ventana de desarrollador, haciendo clic derecho e inspeccionar dentro de la página. Luego intentaremos encontrar nuestra búsqueda «test» dentro del DOM. Una vez la encontremos, estaremos cerca de hallar la vulnerabilidad en la API.

Una vez encuentres la entrada «test» en el frontend, descubrirás que dicha entrada está ejecutando un script en el navegador; dicho script, que es vulnerable, está escrito del siguiente modo:

<img src="/resources/images/tracker.gif?searchTerms='+query+'">

Este código se ejecuta cada vez que se haga una entrada en el buscador del blog, por lo que puede usarse desde el DOM para inyectar código vulnerable. Un ejemplo del payload que podría inyectar un atacante en este caso sería:

<img src="/resources/images/tracker.gif?searchTerms=test"><script>alert(123)</script>>

Así, se ejecutará una alerta en el navegador cuando se ingrese el payload en el buscador. Ahora, para inyectar este código desde el frontend de la página, ejecuta el siguiente comando en el DOM de la aplicación:

location.search = '"<script>alert(123)</script>'

Y así, el laboratorio ya estará resuelto. Ten en cuenta que en un ciberataque real el payload suele ser perjudicial para los usuarios que acceden a la página web vulnerada. Así, los atacantes podrían robar información financiera, tokens de sesión, credenciales privadas o podrían redirigir a los clientes de una aplicación hacia sitios webs maliciosos. Por eso, el cross-site scripting permite desplegar ataques peligrosos y es importante aprender cómo evitar este tipo de vulnerabilidades en una aplicación.

¿Cómo aprender más?

Ya hemos visto qué es y cómo hacer un ataque XSS basado en DOM. Si quieres tener clases en vivo con expertos en hacking web y aprender estas técnicas con ellos, en KeepCoding tenemos un curso justo para ti. Entra a nuestro Ciberseguridad Full Stack Bootcamp y descubre cómo convertirte en un especialista en solo 7 meses. Aprende sobre temas como recopilación de información, análisis de malware, criptografía, red team/blue team y mucho más. ¡No sigas esperando e impulsa tu carrera ahora!

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado