Un
estudio realizado por Soroush Dalili demuestra que existe una
vulnerabilidad en IIS que permite utilizar el carácter de tilde '~' para
conocer los nombres cortos de archivos y carpetas. Esto puede ser un
problema mayor especialmente para los sitios web .Net que son
vulnerables al acceso directo a URLs ya que un atacante podría encontrar
los archivos y carpetas importantes que normalmente no son visibles.
Por otra parte, este error (o tal vez una característica no documentada
desde el punto de vista de Microsoft) es muy útil para pruebas de
intrusión cuando no tienen acceso al sistema (caja negra) y se puede
agregar a los escáneres web de seguridad de aplicaciones con el fin de
encontrar más archivos y carpetas. También se ha comprobado que las
carpetas protegidas con contraseña (con autenticación básica o de
Windows) se siguen pudiendo encontrar con la infame búsqueda
"::$Index_Allocation", y otros vectores ADS también pueden ser útiles
para depurar los resultados.
Adicionalmente, se ha desarrollado una prueba de concepto para demostrar la posibilidad de explotar este tema. Además, se han introducido varios métodos que pueden ser implementados en una etapa posterior con el fin de encontrar nombres largos en base a nombres cortos.
En esta investigación también se ha identificado un problema de denegación de servicio y, aunque Microsoft fue informado en agosto de 2010, todavía no hay una corrección o solución.
Por último, los investigadores piensan que estas cuestiones plantean un riesgo significativo para ciertos sitios web y deberían haber sido abordados por el vendedor y también por las empresas de firewalls/WAF.
Adicionalmente, se ha desarrollado una prueba de concepto para demostrar la posibilidad de explotar este tema. Además, se han introducido varios métodos que pueden ser implementados en una etapa posterior con el fin de encontrar nombres largos en base a nombres cortos.
En esta investigación también se ha identificado un problema de denegación de servicio y, aunque Microsoft fue informado en agosto de 2010, todavía no hay una corrección o solución.
Por último, los investigadores piensan que estas cuestiones plantean un riesgo significativo para ciertos sitios web y deberían haber sido abordados por el vendedor y también por las empresas de firewalls/WAF.
IIS Shortname Scanner PoC – Source Code: http://code.google.com/p/iis-shortname-scanner-poc/
PoC Video:
La herencia de los 8:3 caracteres en el nombre de los ficheros en un sistema Microsoft Windows,
hace que sea posible aún poder acceder a un fichero utilizando ambos
métodos, es decir, el del nombre acortado y el del nombre extendido.
Aunque esta característica está disponible en Windows, en IIS no es posible, así, tanto si el fichero se encuentra como si no, se generará un error.
El servidor IIS, cuando se solicita un nombre acortado, va a intentar acceder al mismo, y si lo encuentra, dará un error 404, algo que no debería ser normal. El caso es que cuando el fichero sí está, se continua ejecutando el procesamiento de la URL y si se construye una URL con ingenio, se puede conseguir un error de Bad Request.
Jugando con los errores 404 y los errores Bad Request, es posible hacer un ataque Blind para descubrir el nombre de los ficheros. Esto se puede hacer solo en algunas versiones de IIS y .NET en las que no se ha filtrado el caracter *. Tienes el paper que lo explica aquí, donde además explican cómo acceder a carpetas protegidas o saltar algunas protecciones.
Así, si se llega un servidor IIS 7 con ASPX se debe probar primero que los errores 400 de Bad Request y 404 de Not Found son distintos. Para ello, basta con hacer las dos siguientes pruebas para saber si es vulnerable a este ataque.
Figura 1: Prueba de 404 |
Figura 2: Prueba de Bad Request |
Estas pruebas del ejemplo, darán distintos resultados según se vaya realizando sobre un servidor IIS 5, IIS 6 o IIS 7.
La siguiente tabla recoge las pruebas a realizar, y los resultados que
se obtienen cuando el nombre del fichero existe (valid) o no existe
(invalid):
Figura 3: Tabla de pruebas |
Si el sitio no es vulnerable se obtendrá siempre el mismo resultado, o
cuando se intente hacer uso de los comodines obtendremos un mensaje como
éste:
Si el sitio es vulnerable, se puede proceder a realizar la booleanización haciendo uso del símbolo de acortamiento en el nombre ~1, el caracter comodín *, y tomando el error 404 como un True y el Bad Request como un False.
Figura 5: False. No hay ningún fichero que comience por ab |
Figura 6: True. Al menos hay un fichero que comienza por ac |
Solo se pueden descubrir los 6 primeros caracteres del nombre, ya que los últimos 2 serán ~1 o ~2, y luego la extensión será de 3 letras.
Llegados a este punto hay que "adivinar" los últimos caracteres del nombre y la extensión.
Para automatizar este escaneo hay una herramienta como POC llamada IIS Short Name Scanner desarrollada en Java y publicada en Google Code, pero dad por seguro que esto acabará en la FOCA.
Como gracia final, hay que decir que, en .NET las extensiones son de ASPX - 4 caracteres - mientras que el sistema 8:3 almacena los ficheros con extensión ASP, lo que hace que el error 404 sea el de IIS y no el del framework .NET. Para solucionarlo, basta con que hagas que todos los menajes de eror de .NET y de IIS estén controlados y sean iguales.
Saludos Malignos!
Fuentes:
http://www.hackplayers.com/2012/07/descubrimiento-de-nombres-cortos-en.html
http://www.elladodelmal.com/2012/07/listado-de-ficheros-en-iis-7-utilizando.html
No hay comentarios:
Publicar un comentario