
última versión de escáneres para la vulnerabilidad de divulgación de nombres cortos de archivo (8.3) de IIS
Última presentación:
Última entrada del blog:
Recomiendo a todos que prueben la nueva herramienta de @bitquark en Go antes de probar esta herramienta antigua: https://github.com/bitquark/shortscan
La última versión del escáner para la vulnerabilidad de divulgación de nombres cortos de archivos (8.3) de IIS mediante el uso del carácter tilde (~). Este problema se descubrió en 2010 pero ha evolucionado varias veces desde entonces.
Esta es una herramienta antigua y el código es un espagueti, pero es capaz de hacer frente incluso al IIS más reciente (¡IIS 10 en Windows Server 2022 en el momento de escribir esto!). Se ha actualizado recientemente, por lo que puede admitir el envío de métodos HTTP personalizados sin trucos de reflexión en Java. Sin embargo, algunos investigadores increíbles han intentado reimplementar esta herramienta usando otras tecnologías como Go, y cuando maduren, probablemente funcionen mejor que esta.
Microsoft IIS contiene una falla que puede llevar a una divulgación no autorizada de información. El problema se desencadena durante el análisis de una solicitud que contiene un carácter tilde (~). Esto puede permitir que un atacante remoto obtenga acceso a información de nombres de archivos y carpetas.
Este escáner se trasladó de https://code.google.com/p/iis-shortname-scanner-poc/ a GitHub para un mejor soporte.
Archivo de investigación original: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Es posible detectar nombres cortos de archivos y directorios que tienen un equivalente 8.3 en Windows mediante el uso de algunos vectores en varias versiones de Microsoft IIS. Por ejemplo, es posible detectar todos los nombres cortos de archivos ".aspx" ya que tienen 4 letras en sus extensiones.
Nota: se han introducido nuevas técnicas en las últimas versiones de este escáner, y ahora puede escanear IIS10 cuando es vulnerable.
No es fácil encontrar los nombres originales de archivos o carpetas basándose en los nombres cortos. Sin embargo, se recomiendan los siguientes métodos como ejemplos:
La versión reciente se ha compilado usando Open JDK 18 (los archivos jar antiguos para otros JDK se han eliminado pero se pueden encontrar en el historial de Git).
Necesitarás descargar los archivos en el directorio /release para usar esta aplicación antigua.
También puedes compilar esta aplicación tú mismo. Por favor, reporta cualquier problema en GitHub para una investigación adicional.
USO 1 (Para verificar si el objetivo es vulnerable con el archivo de configuración predeterminado):
java -jar iis_shortname_scanner.jar [URL]
USO 2 (Para encontrar nombres de archivo 8.3 con el archivo de configuración predeterminado):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
USO 3 (Para verificar si el objetivo es vulnerable con un nuevo archivo de configuración):
java -jar iis_shortname_scanner.jar [URL] [configFile]
USO 4 (Para encontrar nombres de archivo 8.3 con un nuevo archivo de configuración):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
USO 5 (Para escanear múltiples objetivos usando una máquina Linux):
./multi_targets.sh <scope file> <is_default_https (1=https)>
DETALLES:
[ShowProgress]: 0= Mostrar solo resultados finales - 1= Mostrar resultados finales paso a paso - 2= Mostrar Progreso
[ThreadNumbers]: 0= Sin hilo - Número entero = Número de hilos concurrentes [cuidado con la denegación de servicio de IIS]
[URL]: Una URL completa - comienza con protocolo http/https
[configFile]: ruta a un nuevo archivo de configuración basado en config.xml
Ejemplos:
- Ejemplo 0 (para ver si el objetivo es vulnerable):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- Ejemplo 1 (usa sin hilo - muy lento):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- Ejemplo 2 (usa 20 hilos - recomendado):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- Ejemplo 3 (guarda la salida en un archivo de texto):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- Ejemplo 4 (omite la autenticación básica de IIS):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- Ejemplo 5 (usando un nuevo archivo de configuración):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- Ejemplo 6 (escanear múltiples objetivos usando una máquina Linux):
./multi_targets.sh scope.txt 1
Nota 1: Edita el archivo config.xml para cambiar la configuración del escáner y agregar cabeceras adicionales. Nota 2: A veces no funciona la primera vez, y necesitas intentarlo de nuevo.
En los siguientes ejemplos, IIS responde con un mensaje diferente cuando un archivo existe:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
Sin embargo, diferentes servidores IIS pueden responder de manera diferente, y por ejemplo algunos pueden funcionar con los siguientes patrones u otros similares:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
El método de envío de la solicitud como GET, POST, OPTIONS, DEBUG, ... también es importante.
Creo que monitorear las solicitudes usando un proxy es la mejor manera de entender este problema y este escáner.
Microsoft no parcheará este problema de seguridad. Su última respuesta fue la siguiente:
Thank you for contacting the Microsoft Security Response Center.
We appreciate your bringing this to our attention. Our previous guidance stands: deploy IIS with 8.3 names disabled.
Por lo tanto, se recomienda implementar IIS con nombres 8.3 deshabilitados creando la siguiente clave de registro en un sistema operativo Windows:
Key: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Value: 1
Nota: La carpeta web debe ser recreada, ya que el cambio en la entrada de registro NtfsDisable8dot3NameCreation afecta solo a archivos y directorios creados después del cambio, por lo que los archivos que ya existen no se ven afectados.
construir la imagen:
docker build . -t shortname
modo archivo:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt