Ataques Cross-Site Scripting

TIPOS DE ATAQUES cross-site scripting

Un usuario desprevenido por ejemplo hará una visita a un sitio web comprometido,momento en el cual el srcipt malicioso del atacante es cargado y ejecutado por el navegador del usuario.Esto puede conducir al robo de datos confidenciales,secuestro de sesión y mucho mas.Debido a su amplio soporte en muchos navegadores web y plataformas,javasrcipt ha sido una opción popular para los autores de ataques XSS pero un ataque se puede diseñar con cualquier lenguaje que sea compatible con los navegadores.Si bien los ataques XSS han existido durante mas de 15 años,han demostrado ser muy efectivos y todavía se observan con frecuencia como un vector de ataque común y viable en los días actuales.

 ATAQUES cross-site scripting

Los ataques de secuencias de comandos entres sitios generalmente se clasifican como uno de los siguientes tipos:

XSS REFLECTED

Este tipo de ataque involucra un sitio web vulnerable que acepta datos un Script malicioso enviado por el propio navegador web del objetivo para atacarlo.Debido a que el propio cliente envía el script malicioso y no almacena en el servidor vulnerable este tipo de ataque también se denomina no persistente.

Un ejemplo de este tipo de ataque podría involucrar a un atacante que crea una URL que pasa un pequeño srcipt malicioso como parámetro de consulta a un sitio web que tiene una pagina de búsqueda vulnerable a XSS:

http://vulnerable-website.com/search?search_term=<script>(bad things happen here)</script

El atacante necesita que los objetivos visiten esta URL desde sus navegadores web.Esto podría lograrse enviando un correo electrónico que contenga la URL o publicando la URL en un sitio web publico no vulnerable para que los objetivos hagan clic.

Cuando la victima hace clic en el enlace, el sitio vulnerable acepta el parámetro de consulta "Search_term" esperando que el valor sea algo que el objetivo este interesado en buscar el el sitio vulnerable,cuando en realidad el valor es el script malicioso.La pagina de búsqueda como la mayoría de las paginas de búsqueda del sitio web lo harán cuando un usuario este buscando algo,pero debido a que el sitio vulnerable no desinfecta el valor de search_term, se inyecta el srcipt malicioso en la pagina web que el navegador del objetivo esta cargando y luego es ejecutado por el navegador del objetivo.

Ataques reflected Cross Site Scripting

XSS PERSISTENTE

Como su propio nombre indica este tipo de ataque persiste en el propio servidor vulnerable.A diferencia de un ataque reflejado donde el script malicioso es enviado por el objetivo,los usuarios de un sitio web o aplicación web vulnerables pueden ser atacados durante sus interacciones habituales con el sitio o la aplicación vulnerable.

Un ejemplo simple de un ataque XSS persistente podría involucrar a un atacante que publica un mensaje un un foro alojado en un sitio web vulnerable.En lugar de una publicación de foro inofensiva, el contenido de esta publicación contiene el script malicioso del atacante.Cuando un usuario visita esta publicación del foro su navegador web carga y ejecuta el script malicioso.

Como se puede ver un diferenciador clave entre los ataques XSS reflejados y persistentes es que estos ataques consideran a todos los usuarios de un sitio como objetivos para el ataque..

persistent-xss-ATAQUE

XSS  BASADO EN DOM

Este tipo de ataque se da donde existe la vulnerabilidad en los scripts del lado del cliente que el sitio web o aplicación siempre proporciona a los visitantes.Este ataque difiere de los ataques XSS persistentes en que el sitio web no entrega directamente el script malicioso al navegador del objetivo.En un ataque XSS basado en DOM el sitio web tiene scripts vulnerables en el lado del cliente que entregan el script malicioso al navegador de la victima.

Los ataques XSS basados en DOM resaltan el hecho de que las vulnerabilidades XSS no se limitan al software del lado del servidor.

COMO PREVENIR ESTOS ATAQUES

Desinfectar la entrada del usuario

-Validar para capturar entradas potencialmente maliciosas proporcionadas por el usuario.

-Codificar la salida para evitar que los datos proporcionados por el usuario potencialmente maliciosos activen un comportamiento automático de carga y ejecución por parte de un navegador.

Limitar el uso de datos proporcionados por el usuario

-Solo usarlos donde sea necesario

Usar regularmente una herramienta de escaneo de vulnerabilidades web para identificar vulnerabilidades XSS en los software.

Ataques cross-site-scripting