Ataques XSS en Gruyere

2011 XSS PERSISTENTE Y DOM Javier García Cambronel SEGUNDO DE ASIR 22/11/2011 [XSS] 22 de noviembre de 2011 XSS EJE

Views 90 Downloads 57 File size 757KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

2011

XSS PERSISTENTE Y DOM

Javier García Cambronel SEGUNDO DE ASIR 22/11/2011

[XSS] 22 de noviembre de 2011

XSS EJEMPLO DOM EN GRUYERE

ESTRUCTURA DOM DE LA WEB GRUYERE

COMO ACTIVAR GRUYERE PARA TRABAJAR ENTRE VARIOS USUARIOS REMOTAMENTE

JAVIER ATACANTE NAVEGADOR: EXPLORER9 - EDUARDO VÍCTIMA NAVEGADOR: FIREFOX8

JAVIER VÍCTIMA NAVEGADOR: EXPLORER9-EDUARDO ATACANTE NAVEGADOR: FIREFOX8

DIFERENCIA ENTRE NAVEGADORES

TRABAJO OPCIONAL FOCA NESSUS WIKTO

SEGUNDO DE ASIR

Página 1

[XSS] 22 de noviembre de 2011

XSS XSS es un ataque de inyección de código malicioso para su posterior ejecución que puede realizarse a sitios web, aplicaciones locales e incluso al propio navegador.

Uno de los factores (hay más) que pueden anunciarnos que una página web es vulnerable de un ataque al DOM es una página en HTML que utiliza datos que provienen de: + document.location + document.URL + document.referer Cuando -javascript- es ejecutado en el navegador, éste provee al código -javascript(servidor) con varios objetos que representan el DOM. El documento además de objetos, contiene –subobjectoscomo la localización, la -url- y el -referer-. Eso significa que son entendidos por el navegador directamente, antes de llegar al aplicativo servidor. Por eso precisamente es tan complicado utilizar contramedidas. Muy pocas aplicaciones en HTML -parsean- la URL accedida desde document.URL o document.location.

SEGUNDO DE ASIR

Página 2

[XSS] 22 de noviembre de 2011 EJEMPLO DOM EN GRUYERE

Lo primero que sucede es que el navegador de la víctima recibe ese -link-, envía una petición HTTP al sitio web al que hemos inyectado código a través de XSS y recibe el código web estático que genera el HTML. El navegador de la víctima comienza entonces el -parseo- del HTML dentro del DOM. El esquema DOM contiene un objeto llamado “documento”, que contiene a su vez, una propiedad llamada “URL”. A partir de dicha propiedad contiene los datos de la URL, como parte del DOM. Cuando el -parseador- llega al código -javascript-, éste lo ejecuta y modifica la -raw- de la página HTML. Si se trata de una -url- hace la referencia a “document.url” y parte del -string- que lo compone es -embebido- durante el -parseo- del código HTML, que es inmediatamente -parseado- a su vez y ejecutado en el contexto de la misma página (“al vuelo”). Por tanto, cualquiera de los vectores XSS descritos en la presentación podrían servir a un atacante.

De todas maneras no siempre es tan sencillo. Suceden dos hechos importantes: + No siempre el código malicioso que se trata de -embeber- se carga en la -raw- en HTML ;) + Algunos navegadores filtran los caracteres del -string- de la URL. -Mozilla- por ejemplo, codifica los caracteres propios de los scripts (< y >) por %3C y %3E dentro del “document.url” cuando la-url- no es escrita directamente en la barra de navegación. Sin embargo es vulnerable sino se utilizan dichos parámetros (< y >), por ejemplo, a través de la-raw-) Para hacer un -bypass- de determinadas medidas de prevención “standard” podemos utilizar el siguiente código: #user= Algo aparentemente tan sencillo, cambia la interpretación del navegador respecto a lo que le sigue “a su derecha”. En el caso, el navegador entiende que lo que tiene después es un fragmento, es decir, no es parte de una llamada (una -query-). Eso significa que el código “inyectado” puede ser que no sea “visto” por el servidor (salvo configuraciones de IDS -detection- , IPS o firewalls de aplicación). Ahora vamos a ver las estructuras de alguna página para ello descargamos DOM INSPECTOR un ad don de Firefox que nos va a servir para comprobar la jerarquía de elementos de las páginas WEB. SEGUNDO DE ASIR

Página 3

[XSS] 22 de noviembre de 2011 ESTRUCTURA DOM DE LA WEB GRUYERE

ESTRUCUTRA DOM DE LA WEB DEL COLEGIO MARISTAS

SEGUNDO DE ASIR

Página 4

[XSS] 22 de noviembre de 2011 COMO ACTIVAR GRUYERE PARA TRABAJAR ENTRE VARIOS USUARIOS REMOTAMENTE Nos metemos en la siguiente página y nos informamos sobre este programa antes de empezar a utilizarlo http://google-gruyere.appspot.com/

Entonces se nos da un número ID como vemos en la imagen pulsamos en agree & start

Y nos saldrá ya gruyere donde crearemos nuestros usuarios, de normal tenemos dos predefinidos y que siempre va a estar. Ahora lo que tenemos que hacer es pasar este enlace entero a la persona o personas con las que vamos a trabajar conjuntamente incluida la ID y a partir de ahí cada uno creará su usuario.

SEGUNDO DE ASIR

Página 5

[XSS] 22 de noviembre de 2011

JAVIER ATACANTE NAVEGADOR: EXPLORER9 EDUARDO VÍCTIMA NAVEGADOR: FIREFOX8 ATAQUE SIMPLE Lo primero que hago que ejecute la víctima es una ataque simple, un mensaje de alerta, que demuestra la vulnerabilidad de la página, siendo un ataque persistente es decir, que se ha alojado en el servidor, este ataque se ha podido aprovechar debido a una vulnerabilidad red' onload='alert(“página cargada”)' onmouseover='alert(“ataque”)

Puede que tenga que mover el ratón sobre el fragmento para desencadenar el ataque. Este ataque funciona porque la primera cita termina el style y la segunda cita se inicia el atributo onload. Pero este ataque no funcionaba en absoluto. Echa un vistazo a home.gtl donde metemos el color. Se dice style='{{color:text}}', y como hemos visto anteriormente,:text dice parte para escapar del texto. ¿Entonces? En gtl.py , llama cgi.escape(str(value)) que tiene un segundo parámetro opcional que indica que el valor se está utilizando un atributo HTML. Para que pueda reemplazar esto con cgi.escape(str(value),True) . El problema es que cgi.escape asume los atributos HTML se escriben entre comillas dobles y este archivo es usando comillas simples. (Esto debería enseñarle que siempre lea cuidadosamente la documentación de las bibliotecas que utiliza y para poner a prueba siempre que se haga lo que quiera.)

SEGUNDO DE ASIR

Página 6

[XSS] 22 de noviembre de 2011 PARCHEAR EL ATAQUE Para solucionarlo, tenemos que usar un escapar con un texto, que escape las comillas simples y dobles también: def _EscapeTextToHtml(var): """Escape HTML metacharacters. Esta función escapa a carácteres que son peligrosos para insertar en HTML. Se evita XSS a través de citas o script inyectado en valores de atributos.

Es más seguro que cgi.escape, que escapa solo , y por defecto. cgi.escape se puede contar para escapar de las comillas dobles, pero nunca de las comillas simples. """ meta_chars = { '"': '"', '\'': ''', # Not ' '&': '&', '': '>', } escaped_var = "" for i in var: if i in meta_chars: escaped_var = escaped_var + meta_chars[i] else: escaped_var = escaped_var + i return escaped_var

SEGUNDO DE ASIR

Página 7

[XSS] 22 de noviembre de 2011 PODEMOS HACER UN ATAQUE DOS, ES DECIR UNA DENEGACIÓN DE SERVICIO para hacer esto hemos utilizado el campo de donde creamos un nuevo Snippet. Hay que tener en cuenta que hay varios errores en la desinfección del HTML. Fragmento de un trabajo debido a onmouseover se omitió inadvertidamente de la lista de atributos permitidos en sanitize.py. Los navegadores tienden a ser indulgentes con la sintaxis HTML y el manejo de ambas etiquetas de inicio y fin si están libres de errores. Entonces lo que hacemos es insertar el siguiente código que se ejecutara siempre que cualquier usuario deslice y/o pase su ratón sobre el Snnipet del atacante, que por otra parte está debidamente camuflado con el mensaje que le queramos poner, en este caso como podemos ver en el código y en la propia imagen que se nos muestra el mensaje que se muestra es “pasaparabucleinfinito” pasaparabucleinfinito

PARCHEAR EL ATAQUE: Utilizar un desinfectante HTML de calidad.

SEGUNDO DE ASIR

Página 8

[XSS] 22 de noviembre de 2011 MOSTRAR COOKIE DEL USUARIO QUE NAVEGA Y REDIRECCIONAMIENTO Otro de los ataques que podemos hacer es subiendo archivos, bueno mejor más que un ataque propiamente dicho es un método. Pues con este método podemos realizar muchos ataques y de diferentes tipos, como por ejemplo los que hemos citado anteriormente y algunos más avanzados, tiene la ventaja que de este método no estamos siendo limitados por un atributo html ni nada por el estilo, sino que directamente somos libres de subir al servidor el código que queramos para que los clientes lo ejecuten .Por ejemplo, poniendo la dirección que nos ha dado el servidor cuando hemos subido el archivo malicioso en la dirección HOMEPAGE de nuestro perfil, o de otro que creemos para este uso en particular.

MOSTRAR LA COOKIE con un archivo que contiene un script de java con la función document.cookie que pertenece al modelo DOM muestra al que navega su cookie.

SEGUNDO DE ASIR

Página 9

[XSS] 22 de noviembre de 2011 Poniendo una dirección en Homepage, que previamente hemos creado y subido a un servidor, como puede ser también el propio de gruyere, y configurar esa página de tal forma que envíe los datos introducidos a un correo electrónico.Esto lo hacemos con tynurl para ocultar la dirección maliciosa

SEGUNDO DE ASIR

Página 10

[XSS] 22 de noviembre de 2011

JAVIER VÍCTIMA NAVEGADOR: EXPLORER9 EDUARDO ATACANTE NAVEGADOR: FIREFOX8 DIFERENCIA ENTRE NAVEGADORES IE9VSFIREFOX8 Los Ataques son los mismos que se han utilizado en el ejemplo anterior, lo único diferente es en el navegador donde lo ejecutamos. Y así poder ver la diferencia si es que la hay. PRIMERO ejecutamos el Alert simplemente con deslizar el ratón sobre el nombre de EDU y se nos muestra ese mensaje dando muestra de la vulnerabilidad. Vemos simplemente una diferencia en el aspecto visual que muestra la ventana, pero el XSS el navegador no ha logrado evitarlo. Esto es porque los XSS persistentes que se han alojado en el servidor son muy difíciles de detectar por los navegadores y por antivirus y firewalls.

SEGUNDO DE ASIR

Página 11

[XSS] 22 de noviembre de 2011

EN ESTE SEGUNDO ATAQUE pasamos el ratón por donde pone Bucleinfinito ejecutando el script de denegación de servicio.

Como vemos nos sale la siguiente ventana, si pulsamos en aceptar nos volverá a salir la ventana indefinidamente hagamos lo que hagamos, intentamos cerrar la página y tampoco nos deja la ventaja de Firefox es que tenemos la opción de marcar que no nos vuelva a salir el mensaje y así poder evitar la denegación del servicio.

Tenemos que recurrir al Administrador de tareas de Windows, para que podamos finalizar la tarea, ya que el explorador ha dejado de responder cosa que no ocurre con Firefox 8.0

SEGUNDO DE ASIR

Página 12

[XSS] 22 de noviembre de 2011

EN ESTE TERCER ATAQUE lo que se hace es una redirección y como vemos, se ejecuta de la misma forma que se lo ha ejecutado Firefox, hay que tener en cuenta que este aspecto no depende del navegador sino mas bien del Antivirus y/o Firewall que tengamos instalado.

SEGUNDO DE ASIR

Página 13

[XSS] 22 de noviembre de 2011

TRABAJO OPCIONAL Buscando vulnerabilidades XSS con FOCA, NESSUS y WIKTO en los institutos de mi zona

FOCA

FOCA es un programa que por ahora en su versión 3.0 no busca vulnerabilidades XSS aunque sí que puede ser útil. Sí esa aplicación tiene vulnerabilidades XSS mediante el método trace, el cuál si busca FOCA puede ser explotada para robar la cookie, aunque para eso la WEB tiene que estar configurada de una determinada forma que ahora veremos: Si queremos ver como se realiza este ataque sacada del siguiente enlace: http://www.elladodelmal.com/2011/11/hijacking-de-cookies-http-only-con-xss.html

SEGUNDO DE ASIR

Página 14

[XSS] 22 de noviembre de 2011

NESSUS

Nessus tiene muchas opciones, entre ellas se puede hacer un análisis de una Web de forma completa y ver las vulnerabilidades que encontramos. No voy a entrar en más detalles pues para eso teneis el siguiente enlace en español de un Manual de cómo utilizar nessus y sus opciones realmente bueno. http://static.tenable.com/documentation/nessus_4.4_installation_guide_ESN.pdf Estas son las vulnerabilidades que he encontrado en todos los institutos de mi zona:

Hacemos una búsqueda de vulnerabilidades específica xss:

Y vemos los resultados que nos muestra:

Dentro de ellos podemos ver los tipos de ataque a los que esas páginas son vulnerables

SEGUNDO DE ASIR

Página 15

[XSS] 22 de noviembre de 2011

WIKTO

Wikto, (alternativa para Windows de Nikto) es una herramienta gratuita que realiza un escáner en el entorno de un servidor Web Windows para encontrar vulnerabilidades. Permite realizar fingerprinting del servidor web, extracción de directorios y links, análisis de vulnerabilidades, ataques man-in-the-middle…etc. Algunas de las opciones que nos ofrece Wikto son: 

Mirror & Fingerprint: En esta pestaña, podemos realizar 2 operaciones, la primera de ellas, es analizar todos los enlaces que tiene el sitio web para descubrir todos los directorios, la segunda operación, realiza un análisis de las huellas del servidor web proporcionando información del sitio para identificarlo.



Googler: Realiza búsquedas de directorios y archivos críticos del sitio web gracias a las búsquedas especiales realizadas por google, combinando operadores como filetype, site, etc. Una vez realizada la búsqueda, los resultados de directorios se muestran extraídos desde las URLS, las cuales deben de ser analizadas manualmente.



WIKTO: es el motor de Nikto, herramienta para rastrear páginas web.



BackEnd: Realiza búsquedas de directorios en el sitio web basándose en una lista de nombres de directorios que suelen tener información crítica.



GoogleHacks: Realiza búsquedas en Google utilizando la base de datos GHDB (Google Hacking Database) donde se encuentran todas las cadenas de búsquedas susceptibles de devolver información crítica.

SEGUNDO DE ASIR

Página 16

[XSS] 22 de noviembre de 2011

Como podemos ver entre sus características no se encuentra buscar vulnerabilidades XSS específicamente, sino vulnerabilidades WEB en general, a través del motor de búsqueda nikto en la pestaña wikto este motor de búsqueda que realmente es muy potente

Estas son las vulnerabilidades que hemos encontrado las cuales, hay algunas como la de TRACE Y DEFACED que si se pueden explotar mediante XSS Como en el ejemplo antes citado de FOCA. Configuración:

Vulnerabilidades encontradas:

SEGUNDO DE ASIR

Página 17