Microsoft IIS Tilde Enumeration (Método GET)

Listado de ficheros en IIS utilizando nombres acortados.

Hace 3 dias chema en su blog acaba de publicar un artículo llamado “El bug de IIS Short Name sigue vivo explotado con el método OPTIONS y lista los ficheros de tu servidor web”.

El problema de IIS Short Name solía ser explotado mediante las peticiones por el método GET. En agosto de 2014 se descubrió que utilizando el método OPTIONS, se podía realizar una enumeración similar.Debido ha esta nueva forma de explotar esta vulnerabilidad han hecho una modificación de un plugin de su sistema de “Pentesting Persistente Faast”.

Como hacer la explotación con el método OPTIONS de HTTP y más información en:
http://www.elladodelmal.com/2015/01/el-bug-de-iis-short-name-sigue-vivo.html

Según chema comenta:
“Los servidores IIS fueron actualizados con una mitigación que ofrecía el mismo comportamiento para las respuestas TRUE y las respuestas FALSE, por lo cuál se acababa con la posibilidad de realizar un ataque de booleanización, pero esto no se mitigó en todos los métodos HTTP y con OPTIONS – un método que sirve para consultar cuáles son los métodos HTTP permitidos en una determinada ubicación del servidor web – se puede continuar detectando el bug y extrayendo el listado de archivos.”

El metodo de explotación OPTIONS de HTTP habre un nueva posibilidad de ataque para servidores actualizados para protegerse contra un ataque de booleanización.

La vulnerabilidad puede ser detectada con algun scanner de vulnerabilidades o bien con pruebas manuales jugando con errores 400 y 404 como se muestra más adelante.

Como se muestra anteriormente la vulnerabilidad tambien puede ser explotada por el método OPTIONS de HTTP ya que está habilitado.

Enseguida se propone el ataque utilizado un método GET.

Realiza un descubrimiento de ficheros en un servidor IIS por medio del sistema de nombres acortados que aún permite el sistema de ficheros en Microsoft Windows.
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 URLy 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 *.
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.

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.

Objetivo –> http://www.aduanas.gob.mx

Prueba de error Bad Request(400)
http://www.aduanas.gob.mx/*.*/.aspx

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):

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 (ejemplo: sitio web de estafeta protegido):

Protegido –> http://www.estafeta.com/*.*/

>

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 elerror 404 como un True y el Bad Request como un False.

False: No hay ningún fichero que comience por ab

Prueba de error Not found(404)

True: Al menos hay un fichero que comienza por as

Blind finalizada
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 (De ahí el nombre de la herencia de los 8:3 caracteres).

Llegados a este punto hay que “adivinar” los últimos caracteres del nombre y la extensión.

Si se encuentra el directorio pero el listado de archivos se deniega (algo muy común).

Herramientas automatizadas
Para automatizar este escaneo existen varias herramientas:

Ejemplo un plugin de la FOCA Pro:

Más info en:
http://www.elladodelmal.com/2013/01/nuevo-plugin-para-foca-pro-iis-short.html

IIS Short Name Scanner:
Existe una herramienta como POC llamada IIS Short Name Scanner desarrollada en Java y publicada en Google Code.
Más info y descarga en:
https://github.com/irsdl/IIS-ShortName-Scanner

Escaneo del sitio http://www.aduanas.gob.mx con IIS Short Name Scanner

Para descubrir el resto del nombre del directorio se requiere de un poco de lógica.

Por ejemplo “Dir: PREGUN~1”

http://aduanas.gob.mx/PREGUNTA/

Si se encuentra el directorio pero el listado de archivos se deniega (algo muy común).

Algo interesante resulta de que también se puede realizar el escaneo sobre un directorio debido a que en ocaciones como estas resulta importante conocer mas información, archivos y directorios sobre ese directorio actual, en este caso sobre el directorio que se ha encontrado anteriormente llamado “PREGUNTA”.

Anteriormente se puede observar un directorio “Dir: ADMINI~1”, que si se trabaja sobre el se descubran directorios o archivos interesantes.

Archivo encontrado llamado MUESTRAPREGUNTAS.ASP con un error 500 posiblemente provocado por algún error de programación, enseguida se observa información sobre la base de datos “Microsoft OLE DB”.Así sucesivamente se pueden encontrar con el tiempo necesario mas nombres de directorios o archivos.

Con google también se puede lograr a completar el nombre de un directorio o archivo (Directorios en caché de Google).

Demostración de vulnerabilidad IIS Short Name bug en los servidores web de Apple con la FOCA:
http://www.elladodelmal.com/2013/02/iis-short-name-bug-en-los-servidores.html

Soluciones
1. Hay una manera de desactivar la herencia de 8:3 caracteres de Windows. Se puede crear una clave de registro denominada NtfsDisable8dot3NameCreation en HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\Filesystem y ponerlo a 0 (si ya existe, solo cambiar el valor). Eso debe desactivar la creación de nombres cortos.

2. Para solucionarlo, se tiene que hacer que todos los mensajes de error de .NET y de IIS estén controlados y sean iguales.

3. El uso de un WAF configurado puede ser útil (descartando las peticiones web que incluyan el carácter ” ~ “).

4. Como punto adicional debido a la nueva forma de explotación con OPTIONS de HTTP también puede ser recomendable deshabilitar todos los métodos que no se usen, como podría ser OPTIONS.
Este artículo es propiedad de Netploy Security y Government Mex Security Labs, fué creado con el apoyo de información de el blog elladodelmal.

#zer0max

Deja un comentario