En este artículo, comprenderemos en profundidad uno de los tipos de Cross-Site Scripting, es decir, XSS basado en DOM. Analicémoslo uno por uno de la siguiente manera.
Cross Site Scripting basado en DOM :
- DOM XSS significa Document Object Model-based Cross-site Scripting. Las vulnerabilidades basadas en DOM ocurren en la etapa de procesamiento de contenido realizada en el cliente, generalmente en JavaScript del lado del cliente.
- El XSS basado en DOM funciona de manera similar al XSS reflejado: el atacante manipula el entorno del navegador del cliente (Modelo de objeto del documento) y coloca la carga útil en el contenido de la página. La principal diferencia es que, dado que la carga útil maliciosa se almacena en el entorno del navegador, es posible que no se envíe del lado del servidor. De esta forma fallarán todos los mecanismos de protección relacionados con el análisis del tráfico.
- En los ataques de secuencias de comandos de sitios cruzados reflexivos y almacenados, puede ver la secuencia de comandos maliciosa de vulnerabilidad en la página de respuesta, pero en las secuencias de comandos de sitios cruzados basadas en DOM, el código fuente HTML y la respuesta del ataque serán los mismos, es decir, la secuencia de comandos maliciosa no puede se encuentra en la respuesta del servidor web.
- En un ataque XSS basado en DOM, el navegador de la víctima no analiza la string maliciosa hasta que se ejecuta el JavaScript legítimo del sitio web. Para realizar un ataque XSS basado en DOM, debe colocar datos en una fuente para que se propague a un sumidero y provoque la ejecución de código JavaScript arbitrario.
Desglose de un ataque XSS basado en DOM:
el siguiente es un desglose de un ataque XSS basado en DOM de la siguiente manera.
- El atacante descubre la vulnerabilidad XSS basada en DOM
- El pirata informático o atacante crea un script malicioso y envía la URL al objetivo (correo electrónico, redes sociales, etc.)
- La víctima hace clic en la URL
- El navegador de las víctimas envía una solicitud al sitio vulnerable (nota: la solicitud no contiene el script malicioso XSS)
- El servidor web responde con la página web (nota: esta respuesta no contiene el script malicioso XSS)
- El navegador web de las víctimas representa la página, con el script malicioso XSS de los piratas informáticos o atacantes
Impacto :
- Robar las cookies o sesiones de otro cliente.
- Modificar las cookies o sesiones de otro cliente.
- Robar la información del formulario enviado por otro cliente o algunas credenciales confidenciales.
- Modifique los datos o la información del formulario enviado por otro cliente interceptando la solicitud (antes de que llegue al servidor).
Nota:
envíe un formulario a su aplicación en nombre del usuario que modifique las contraseñas o los datos confidenciales en el servidor u otros datos de la aplicación.
Encontrar secuencias de comandos entre sitios basadas en DOM:
- La mayoría de las vulnerabilidades DOM XSS se pueden encontrar de manera rápida y eficiente utilizando el escáner de herramientas de Burp Suite o algunos otros scripts que están disponibles en GitHub.
- Para probar manualmente las secuencias de comandos entre sitios basadas en DOM, generalmente necesita usar un navegador web con herramientas de desarrollador, como Chrome o Firefox.
- Debe trabajar a través de cada fuente disponible o campo de entrada a su vez y probar cada uno individualmente.
Comprender el ataque basado en DOM a través del diagrama:
Descripción del diagrama:
de la figura anterior, «Considere los números de flecha del diagrama (Paso 1 a Paso 6) como pasos» de la siguiente manera.
- Paso 1: un atacante crea la URL y la envía a la víctima.
- Paso 2: la víctima hace clic en él y la solicitud va al servidor.
- Paso 3: la respuesta del servidor contiene el JavaScript codificado.
- Paso 4: la URL del atacante es procesada por JavaScript codificado, lo que activa su carga útil.
- Paso 5: El navegador de la víctima envía las cookies al atacante.
- Paso 6: El atacante secuestra la sesión del usuario.
Ejemplo:
ejemplo de un ataque XSS basado en DOM de la siguiente manera.
<HTML> <TITLE>Hello!</TITLE> <SCRIPT> var pos=document.URL.indexOf("name=")+5; document.write(document.URL.substring(pos,document.URL.length)); </SCRIPT> <BR> Welcome To Our Website … </HTML>
Explicación:
normalmente, esta página HTML se usaría para dar la bienvenida al usuario, por ejemplo:
http://www.victim.site/hello.html?name=Gaurav
Sin embargo, una solicitud como la siguiente daría como resultado una condición XSS de la siguiente manera.
http://www.victim.site/hello.html?name=alert(document.domain)
Remediación de XSS basado en DOM:
- Detectar DOM XSS es difícil usando la detección puramente del lado del servidor (es decir, requests HTTP), razón por la cual proveedores como Acunetix aprovechan DeepScan para hacerlo.
- Estos scripts maliciosos o payloads nunca se envían al servidor web debido a que están detrás de un fragmento HTML (todo detrás del símbolo #).
- Como resultado, la raíz del problema está en el código (es decir, JavaScript) que está en la página de origen. Esto significa que siempre debe desinfectar o filtrar la entrada del usuario, independientemente de si es del lado del cliente
- Para remediar XSS basado en DOM, los datos no deben escribirse dinámicamente desde ninguna fuente que no sea de confianza en el documento HTML. Los controles de seguridad deben estar en su lugar si la funcionalidad lo requiere.
- Puede implicar una combinación de escape de JavaScript, codificación HTML y codificación URL.
- Los marcos como AngularJS y React usan plantillas que hacen que la construcción de HTML ad-hoc sea una acción explícita (y rara). Esto impulsará a su equipo de desarrollo hacia las mejores prácticas y hará que las operaciones inseguras sean más fáciles de detectar.
Nota:
se deben evitar los siguientes atributos de origen, como URL, URI de documento, ubicación, href, búsqueda, hash.
Publicación traducida automáticamente
Artículo escrito por gauravgandal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA