Ataques XSS en Gruyere
Ataques XSS en Gruyere
Ataques XSS en Gruyere
XSS
PERSISTENTE Y DOM
XSS
EJEMPLO DOM EN GRUYERE
TRABAJO OPCIONAL
FOCA NESSUS WIKTO
SEGUNDO DE ASIR
Pgina 1
XSS
XSS es un ataque de inyeccin de cdigo malicioso para su posterior ejecucin que puede realizarse a sitios web, aplicaciones locales e incluso al propio navegador.
Uno de los factores (hay ms) que pueden anunciarnos que una pgina web es vulnerable de un ataque al DOM es una pgina en HTML que utiliza datos que provienen de: + document.location + document.URL + document.referer Cuando -javascript- es ejecutado en el navegador, ste provee al cdigo -javascript(servidor) con varios objetos que representan el DOM. El documento adems de objetos, contiene subobjectoscomo la localizacin, 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
Pgina 2
Lo primero que sucede es que el navegador de la vctima recibe ese -link-, enva una peticin HTTP al sitio web al que hemos inyectado cdigo a travs de XSS y recibe el cdigo web esttico que genera el HTML. El navegador de la vctima 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 cdigo -javascript-, ste lo ejecuta y modifica la -raw- de la pgina 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 cdigo HTML, que es inmediatamente -parseado- a su vez y ejecutado en el contexto de la misma pgina (al vuelo). Por tanto, cualquiera de los vectores XSS descritos en la presentacin podran servir a un atacante.
De todas maneras no siempre es tan sencillo. Suceden dos hechos importantes: + No siempre el cdigo 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 navegacin. Sin embargo es vulnerable sino se utilizan dichos parmetros (< y >), por ejemplo, a travs de la-raw-) Para hacer un -bypass- de determinadas medidas de prevencin standard podemos utilizar el siguiente cdigo: #user=<script>alert(document.cookie)</script> Algo aparentemente tan sencillo, cambia la interpretacin del navegador respecto a lo que le sigue a su derecha. En el caso, el navegador entiende que lo que tiene despus es un fragmento, es decir, no es parte de una llamada (una -query-). Eso significa que el cdigo inyectado puede ser que no sea visto por el servidor (salvo configuraciones de IDS -detection- , IPS o firewalls de aplicacin). Ahora vamos a ver las estructuras de alguna pgina para ello descargamos DOM INSPECTOR un ad don de Firefox que nos va a servir para comprobar la jerarqua de elementos de las pginas WEB. SEGUNDO DE ASIR Pgina 3
SEGUNDO DE ASIR
Pgina 4
Entonces se nos da un nmero 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
Pgina 5
Puede que tenga que mover el ratn 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 parmetro 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 debera ensearle que siempre lea cuidadosamente la documentacin de las bibliotecas que utiliza y para poner a prueba siempre que se haga lo que quiera.)
SEGUNDO DE ASIR
Pgina 6
Es ms 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
Pgina 7
[XSS] 22 de noviembre de 2011 PODEMOS HACER UN ATAQUE DOS, ES DECIR UNA DENEGACIN 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 desinfeccin 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 estn libres de errores. Entonces lo que hacemos es insertar el siguiente cdigo que se ejecutara siempre que cualquier usuario deslice y/o pase su ratn 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 cdigo y en la propia imagen que se nos muestra el mensaje que se muestra es pasaparabucleinfinito <a onmouseover="for(;;)alert('bucleinfinito')" href="#">pasaparabucleinfinito</a>
SEGUNDO DE ASIR
Pgina 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 ms que un ataque propiamente dicho es un mtodo. Pues con este mtodo podemos realizar muchos ataques y de diferentes tipos, como por ejemplo los que hemos citado anteriormente y algunos ms avanzados, tiene la ventaja que de este mtodo no estamos siendo limitados por un atributo html ni nada por el estilo, sino que directamente somos libres de subir al servidor el cdigo que queramos para que los clientes lo ejecuten .Por ejemplo, poniendo la direccin que nos ha dado el servidor cuando hemos subido el archivo malicioso en la direccin 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 funcin document.cookie que pertenece al modelo DOM muestra al que navega su cookie.
SEGUNDO DE ASIR
Pgina 9
SEGUNDO DE ASIR
Pgina 10
JAVIER VCTIMA 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 ratn 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 difciles de detectar por los navegadores y por antivirus y firewalls.
SEGUNDO DE ASIR
Pgina 11
EN ESTE SEGUNDO ATAQUE pasamos el ratn por donde pone Bucleinfinito ejecutando el script de denegacin 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 pgina y tampoco nos deja la ventaja de Firefox es que tenemos la opcin de marcar que no nos vuelva a salir el mensaje y as poder evitar la denegacin 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
Pgina 12
EN ESTE TERCER ATAQUE lo que se hace es una redireccin 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
Pgina 13
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 versin 3.0 no busca vulnerabilidades XSS aunque s que puede ser til. S esa aplicacin tiene vulnerabilidades XSS mediante el mtodo trace, el cul 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
Pgina 14
NESSUS
Nessus tiene muchas opciones, entre ellas se puede hacer un anlisis de una Web de forma completa y ver las vulnerabilidades que encontramos. No voy a entrar en ms detalles pues para eso teneis el siguiente enlace en espaol de un Manual de cmo 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:
Dentro de ellos podemos ver los tipos de ataque a los que esas pginas son vulnerables
SEGUNDO DE ASIR
Pgina 15
WIKTO
Wikto, (alternativa para Windows de Nikto) es una herramienta gratuita que realiza un escner en el entorno de un servidor Web Windows para encontrar vulnerabilidades. Permite realizar fingerprinting del servidor web, extraccin de directorios y links, anlisis de vulnerabilidades, ataques man-in-the-middleetc. Algunas de las opciones que nos ofrece Wikto son:
Mirror & Fingerprint: En esta pestaa, 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 operacin, realiza un anlisis de las huellas del servidor web proporcionando informacin del sitio para identificarlo. Googler: Realiza bsquedas de directorios y archivos crticos del sitio web gracias a las bsquedas especiales realizadas por google, combinando operadores como filetype, site, etc. Una vez realizada la bsqueda, los resultados de directorios se muestran extrados desde las URLS, las cuales deben de ser analizadas manualmente. WIKTO: es el motor de Nikto, herramienta para rastrear pginas web. BackEnd: Realiza bsquedas de directorios en el sitio web basndose en una lista de nombres de directorios que suelen tener informacin crtica. GoogleHacks: Realiza bsquedas en Google utilizando la base de datos GHDB (Google Hacking Database) donde se encuentran todas las cadenas de bsquedas susceptibles de devolver informacin crtica.
SEGUNDO DE ASIR
Pgina 16
Como podemos ver entre sus caractersticas no se encuentra buscar vulnerabilidades XSS especficamente, sino vulnerabilidades WEB en general, a travs del motor de bsqueda nikto en la pestaa wikto este motor de bsqueda 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. Configuracin:
Vulnerabilidades encontradas:
SEGUNDO DE ASIR
Pgina 17