Banner 1

Descubrimiento de nombres cortos en Microsoft IIS con el carácter “~” y otros vectores

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.
IIS Shortname Scanner PoC – Source Codehttp://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:
Figura 4: Servidor IIS NO vulnerable a esta técnica
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.
Figura 7: Nombre de fichero acortado descubierto
Llegados a este punto hay que "adivinar" los últimos caracteres del nombre y la extensión.
Figura 8: Nombre de fichero extendido
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:

Powered by Bad Robot
Helped by Blackubay