Seguridad Web

Clase: 2

Instituto Educación IT

Autor: Maximiliano Cañellas

Sobre el curso

Módulo 2/4: Cross Site Scripting

Temas:

· Ataques XSS · XSS reflejado y XSS persistente · XSS DoS · Contramedidas · Algunas herramientas: Xenotix, BeEF, Nessus.

Cross Siste Scripting (XSS)


XSS, del inglés Cross-site scripting es un tipo de ataque típico de las aplicaciones Web, que permite a una tercera parte inyectar en páginas código JavaScript

El Cross Site Scripting (XSS) es una de las vulnerabilidades más explotadas según OWASP (Open Web Application Security Project)

OWASP: XSS

Tipos de XSS: reflejado


Los ataques de tipo XSS reflejado son también conocidos como de tipo 1 o no persistentes, y son los ataques más frecuentes de XSS en la actualidad.

Cuando una aplicación web es vulnerable a este tipo de ataque, la misma pasará datos de entrada no validados al cliente. El modo más común de operación de este ataque incluye un paso de diseño, en el cual el atacante crea y comprueba la URI vulnerable, un paso de ingenieria social, en el cual convence a sus víctimas de cargar esta URI en sus navegadores, y la eventual ejecución del código malicioso utilizando las credenciales de la víctima.

XSS: un escenario clásico


El escenario práctico es el siguiente:


  1. El atacante crea una URL con el código malicioso inyectado y la camufla
  2. El atacante envía el enlace a la víctima
  3. La víctima visita en enlace a la web vulnerable
  4. El código malicioso es ejecutado por el navegador del usuario

Tipos de XSS: persistente


El ataque Cross-site Scripting (XSS) persistente; es un ataque más peligroso que el anterior ya que ejecuta el código inyectado por el atacante en los navegadores de todos los usuarios que visitan la aplicación web. Generalmente se produce en aquellas aplicaciones que permiten a los usuarios guardar algún tipo de dato.

XSS persistente: escenario clásico


Las fases típicas para un escenario de ataque XSS almacenado son:


  1. El atacante almacena código malicioso en la página vulnerable
  2. El usuario se autentica en la aplicación
  3. El usuario visita la página vulnerable
  4. El código malicioso se ejecuta en el navegador del usuario

XSS persistente


El XSS almacenado es particularmente peligroso en las zonas de la aplicación a las que tienen acceso los usuarios con altos privilegios. Cuando el administrador visita la página vulnerable, el ataque se ejecuta automáticamente en su navegador.

Esto podría exponer información sensible como por ejemplo tokens de autorización de sesión.

DoS mediante XSS


Es posible realizar denegaciones de servicio en el cliente/navegador de la víctima inyectando el siguiente código malicioso a través de un vector XSS:


for (;;) alert("bucle");

El navegador entrará en un -loop- infinito de apertura de Alerts() obligando a la víctima a cerrarlo, denegando el servicio de la aplicación por falta recursos o por “obligación” del usuario.

DoS mediante XSS

También es posible realizar denegaciones de servicio tanto al cliente como al servidor de una web inyectando código malicioso a través de un vector XSS, que “obligue” a las víctimas a conectarse repetidamente:


 

El código anterior ejecutará un refresco infinito del navegador de la víctima contra el servidor


Puede provocar que la base de datos de la aplicación web se inunde de determinadas peticiones y la web deje de funcionar, si se realiza de forma masiva.

Cross Agent Scripting (XAS)


En determinadas aplicaciones es posible inyectar código a través de la modificación de las cabeceras HTTP.


Un ejemplo donde probar un “XSS” es el string del parámetro “User-Agent”.


Un atacante puede modificar el “User-Agent” de su navegador para realizar una inyección de código. Por ejemplo para mostrar su propia cookie:


alert(document.cookie);

XSS locators


OWASP filter evasion cheat sheet


Contramedidas


Herramientas

  1. Xenotix
  2. BeEF
  3. Nessus
  4. Burp

¡Fin de la clase! :)

¿Dudas? ¿Preguntas?