IIS Tilde - Enumeración
IIS tilde directory enumeration
es una técnica que se utiliza para descubrir archivos, directorios y nombres de archivo cortos (también conocidos como 8.3 format
) ocultos en algunas versiones de servidores web de Microsoft Internet Information Services (IIS). Este método aprovecha una vulnerabilidad específica de IIS, que resulta de la forma en que administra los nombres de archivo cortos dentro de sus directorios.
Cuando se crea un archivo o una carpeta en un servidor IIS, Windows genera un nombre de archivo corto en formato .txt 8.3 format
, que consta de ocho caracteres para el nombre del archivo, un punto y tres caracteres para la extensión. Curiosamente, estos nombres de archivo cortos pueden otorgar acceso a sus archivos y carpetas correspondientes, incluso si estaban destinados a permanecer ocultos o inaccesibles.
El carácter tilde ( ~
), seguido de un número de secuencia, indica un nombre de archivo corto en una URL. Por lo tanto, si alguien determina el nombre de archivo corto de un archivo o carpeta, puede aprovechar el carácter tilde y el nombre de archivo corto en la URL para acceder a datos confidenciales o recursos ocultos.
La enumeración de directorios con tilde de IIS implica principalmente el envío de solicitudes HTTP al servidor con distintas combinaciones de caracteres en la URL para identificar nombres de archivo cortos válidos. Una vez que se detecta un nombre de archivo corto válido, esta información se puede utilizar para acceder al recurso relevante o enumerar más a fondo la estructura del directorio.
El proceso de enumeración comienza enviando solicitudes con varios caracteres después de la tilde:
Código: http
Supongamos que el servidor contiene un directorio oculto llamado SecretDocuments. Cuando se envía una solicitud a http://example.com/~s
, el servidor responde con un 200 OK
código de estado, que revela un directorio con un nombre corto que comienza con "s". El proceso de enumeración continúa agregando más caracteres:
Para la solicitud http://example.com/~se
, el servidor devuelve un 200 OK
código de estado y refina aún más el nombre corto a "se". Se envían solicitudes posteriores, como las siguientes:
El servidor entrega un 200 OK
código de estado para la solicitud http://example.com/~sec
, limitando aún más el nombre corto a "sec".
Continuando con este procedimiento, el nombre corto secret~1
finalmente se descubre cuando el servidor devuelve un 200 OK
código de estado para la solicitud http://example.com/~secret
.
Una vez que se identifica el nombre corto secret~1
, se puede realizar la enumeración de nombres de archivos específicos dentro de esa ruta, exponiendo potencialmente documentos confidenciales.
Por ejemplo, si se determina el nombre corto secret~1
para el directorio oculto SecretDocuments, se puede acceder a los archivos de ese directorio enviando solicitudes como:
La misma técnica de enumeración de directorios con tilde de IIS también puede detectar nombres de archivo cortos 8.3 para los archivos dentro del directorio. Después de obtener los nombres cortos, se puede acceder directamente a esos archivos utilizando los nombres cortos en las solicitudes.
En los nombres de archivo cortos 8.3, como somefi~1.txt
, el número "1" es un identificador único que distingue a los archivos con nombres similares dentro del mismo directorio. Los números que siguen a la tilde ( ~
) ayudan al sistema de archivos a diferenciar entre archivos que comparten similitudes en sus nombres, lo que garantiza que cada archivo tenga un nombre de archivo corto 8.3 distinto.
Por ejemplo, si dos archivos nombrados somefile.txt
y somefile1.txt
existen en el mismo directorio, sus nombres de archivo cortos 8.3 serían:
somefi~1.txt
parasomefile.txt
somefi~2.txt
parasomefile1.txt
Enumeración
La fase inicial implica mapear el objetivo y determinar qué servicios están operando en sus respectivos puertos.
Escaneo con Nmap
IIS 7.5 se ejecuta en el puerto 80. Ejecutar un ataque de enumeración de tilde en esta versión podría ser una opción viable.
Tilde Enumeration usando IIS ShortName Scanner
Enviar solicitudes HTTP manualmente para cada letra del alfabeto puede ser un proceso tedioso. Afortunadamente, existe una herramienta llamada IIS-ShortName-Scanner
que puede automatizar esta tarea. Puede encontrarla en GitHub en el siguiente enlace: IIS-ShortName-Scanner . Para usarla IIS-ShortName-Scanner
, deberá instalar Oracle Java en Pwnbox o en su máquina virtual local. Puede encontrar detalles en el siguiente enlace. Cómo instalar Oracle Java
Cuando ejecute el siguiente comando, le solicitará un proxy, simplemente presione Enter para No.
Al ejecutar la herramienta, descubre 2 directorios y 3 archivos. Sin embargo, el objetivo no permite GET
el acceso a http://10.129.204.231/TRANSF~1.ASP
, por lo que es necesario realizar un ataque de fuerza bruta para acceder al nombre del archivo restante.
Generar wordlist
Este comando combina egrep
y sed
para filtrar y modificar el contenido de los archivos de entrada, luego guarda los resultados en un nuevo archivo en el directorio /tmp
.
Parte del comando
Descripción
egrep -r ^transf
El comando egrep
se utiliza para buscar líneas que contengan un patrón específico en los archivos de entrada. La flag -r
indica una búsqueda recursiva a través de directorios. El patrón ^transf
coincide con cualquier línea que comience con "transf". La salida de este comando serán líneas que comiencen con "transf" junto con sus nombres de archivo de origen.
|
El símbolo de barra vertical (|
) se utiliza para pasar la salida del primer comando (egrep
) al segundo comando ( sed
). En este caso, las líneas que comienzan con "transf" y sus nombres de archivo serán la entrada del comando sed
.
sed 's/^[^:]*://'
El comando sed
se utiliza para realizar una operación de búsqueda y reemplazo en su entrada (en este caso, la salida de egrep
). La expresión 's/^[^:]*://'
indica que sed
debe buscar cualquier secuencia de caracteres al principio de una línea ( ^
) hasta los primeros dos puntos ( :
), y reemplazarlos por nada (eliminando efectivamente el texto coincidente). El resultado serán las líneas que comiencen con "transf" pero sin los nombres de archivo ni los dos puntos.
> /tmp/list.txt
El símbolo mayor que (>
) se utiliza para redirigir la salida de todo el comando (es decir, las líneas modificadas) a un nuevo archivo llamado /tmp/list.txt
.
Enumeración con Gobuster
Una vez que haya creado la lista de palabras personalizada, puede usarla gobuster
para enumerar todos los elementos del objetivo.
A partir de la salida redactada, puede ver que gobuster
ha identificado exitosamente un archivo .aspx
como el nombre de archivo completo correspondiente al nombre corto descubierto previamente TRANSF~1.ASP
.
Caso práctico
¿Cuál es el nombre de archivo .aspx que identificó Gobuster?
Escaneo con Nmap
Solo vemos abierto el puerto 80 Microsoft IIS httpd 7.5
Generar wordlist
Enumeración con Gobuster
El archivo aspx que nos encuentra es: transfer.aspx
Al abrirlo en el navegador vemos que es una funcionalidad de subida de archivos que podríamos explotar fácilmente:
Última actualización
¿Te fue útil?