IIS Short File/Folder Name Disclosure: A vueltas con la enumeración de ficheros

viernes, 30 de enero de 2015

Llevamos más de año y medio investigando y trabajando en Faast y, sorprendentemente,observamos que día a día surgen vulnerabilidades que parecían cosa del pasado. Analizando diferentes técnicas de pentesting, hemos encontrado, en este caso, otras formas de explotar el fallo conocido como IIS Short Name (de 2012). Este problema permite enumerar mediante fuerza bruta los archivos, en función del código de respuesta. Sucede a consecuencia de una implementación de la compatibilidad que ofrece Windows con versiones de MS-DOS. Por lo tanto, un atacante podría enumerar el contenido de directorios y ficheros que un servidor IIS tiene alojados. Microsoft lleva años oyendo hablar de este fallo que podría considerarse vulnerabilidad, pero no reconoce como tal.

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.


En la imagen se puede ver una pequeña prueba de concepto realizada durante la creación del plugin para Faast

El comportamiento es sencillo: cuando se realiza la petición mediante el método OPTIONS se debe tener en cuenta el código de respuesta que se obtiene. Por ejemplo, si realizamos una petición válida y conseguimos un código de respuesta X, cuando realizamos la petición no válida obtendremos un código de respuesta Y. Con esta pequeña pista del servidor, se puede ir comprobado si existen o no ciertos recursos.

En la siguiente imagen, obtenida de la evidencia que Faast proporciona al usuario cuando encuentra esta debilidad en los servidores corporativos que se están escaneando, se puede visualizar la respuesta positiva: es decir, que un fichero que existe y que ha podido ser obtenido por fuerza bruta.

Evidencia en Faast de que un fichero existe

Por el contrario, cuando un archivo no existe el código de respuesta que se obtiene es distinto. En la imagen se puede ver en redirect (302) que se obtiene cuando un archivo no existe utilizando el método OPTIONS.

Evidencia en Faast de que un fichero no existe

Teniendo en cuenta otro tipo de herramientas similares, hemos comprobado que Faast es la primera y única por ahora, que tiene en cuenta este "truco" para aprovechar el problema durante la fase de pentesting.

Cómo corregirlo

Microsoft no solucionará el problema, tan solo recomienda deshabilitar la compatibilidad hacia atrás y evitar el "soporte" para nombres cortos de ocho caracteres. Esto se consigue en el servidor, modificando el valor de la rama del registro

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation

Y estableciéndolo a 0. También puede ser recomendable deshabilitar todos los métodos que no se usen, como podría ser OPTIONS.