- La pantalla predeterminada de IIS no es un callejón sin salida, sino el punto de partida para el reconocimiento en bug bounty; con Shodan, Google dorks y encabezados de respuesta se pueden acotar servidores expuestos y vhosts ocultos
- Solicitudes HTTP/1.0,
HTTPAPI 2.0 404, certificados SSL y brute forcing del encabezadoHostsirven como pistas iniciales para encontrar IP internas, nombres de host de Exchange y hosts virtuales - La enumeración de shortnames con tilde de IIS, basada en DOS 8.3, puede revelar nombres cortos de archivos y directorios aunque el listado de directorios esté desactivado; con búsquedas en GitHub, BigQuery, LLM y crunch se pueden estimar candidatos al nombre completo
- El fuzzing especializado en IIS/.NET apunta primero a rutas y extensiones de alto valor como
web.config,trace.axd,elmah.axd,appsettings.*.jsony.aspx/.ashx/.asmx/.config - La exposición de
web.config, la normalización de rutas con sesiones cookieless, la confusión de rutas en reverse proxy, los alternate data streams de NTFS, los bypass de extensiones de carga y HPP muestran cómo errores de configuración y comportamientos legacy pueden convertirse en superficie de ataque
Cómo encontrar servidores IIS durante el reconocimiento
- Los objetivos con IIS pueden encontrarse primero en motores de búsqueda y servicios de búsqueda de activos en internet
- Las consultas de Shodan permiten acotar servidores IIS usando certificados SSL del dominio objetivo, el nombre de la organización y combinaciones como
http.title:"IIS"- Entre los objetivos de ejemplo hay servidores de staging, paneles de administración olvidados y herramientas internas expuestas a internet
- Además de Shodan, fofa, censys, netlas y odin ofrecen índices de internet diferentes entre sí
- El Google dorking se usa para encontrar páginas indexadas con rastros de IIS
- La carpeta
aspnet_clienty_vti_binse consideran señales de IIS ext:aspxsirve para encontrar páginas ASP.NET y sugiere que debajo hay IIS- Las búsquedas con comodines como
site:*.target.comysite:*.*.target.comsirven para encontrar subdominios anidados que la enumeración básica de subdominios puede pasar por alto
- La carpeta
- Los encabezados de respuesta son la pista más fácil para identificar IIS
Server: Microsoft-IIS/10.0X-Powered-By: ASP.NET- Para validación a gran escala, se puede crear una lista de objetivos IIS con
httpxonuclei
Pistas iniciales después de confirmar IIS
- Algunas configuraciones de IIS, especialmente frontends de Exchange u OWA, pueden exponer información interna ante solicitudes HTTP/1.0
- El encabezado
Locationpuede incluir una IP interna comohttps://192.168.5.237/owa/ - El encabezado
X-FEServerpuede revelar el nombre de host interno del servidor Exchange - Esta información puede derivar en filtraciones de información aprovechables en pasos posteriores
Automatización y búsqueda de hosts virtuales ocultos
- Una vez obtenida la lista de objetivos IIS, ejecutar
nucleicon etiquetas comomicrosoft,windows,asp,aspx,iis,azure,config,exposureayuda a reducir trabajo repetitivo HTTPAPI 2.0 404no siempre significa que realmente no haya nada- Puede que la instancia de IIS esté enlazada a un host virtual específico y que responda 404 porque el encabezado
Hostde la solicitud no coincide
- Puede que la instancia de IIS esté enlazada a un host virtual específico y que responda 404 porque el encabezado
- Hay dos formas de encontrar vhosts ocultos
- Buscar el nombre de host necesario en el subject o en los campos SAN del certificado SSL
- Si el certificado no ayuda, hacer brute force de vhosts con
ffufy una wordlist para el encabezadoHost
- Al encontrar el nombre de host correcto, la aplicación real puede responder en lugar de un 404 genérico
Enumeración de shortnames con tilde en IIS
- Debido a comportamientos heredados de las antiguas reglas de nombres de archivo DOS 8.3, IIS puede permitir enumerar nombres cortos de archivos y directorios con solicitudes especiales
- Aunque el listado de directorios esté deshabilitado, pueden revelarse fragmentos como
WEB~1.CON,GLOBAL~1.ASA,SITEBA~1.ZIP,ADMIN~1 - shortscan se usa como herramienta para enumeración de shortnames en IIS
- burp’s IIS Tilde Enumeration Scanner también puede usarse como alternativa
- Hay varias formas de convertir un nombre corto en el nombre completo del archivo
- LLM: generar candidatos de nombres de archivo que incluyan el fragmento del shortname
- GitHub code search: buscar nombres de archivo reales usando las primeras 6 letras antes de
~1y la extensión - GSNW: toma fragmentos de shortname y recopila nombres coincidentes desde GitHub code search
- GitHub-IIS-Shortname-Generator: genera wordlists con un enfoque similar
- shortnameguesser: consulta múltiples fuentes a partir de la salida del scanner y crea una wordlist dirigida al objetivo
- El enfoque con BigQuery busca rutas de archivos que coincidan con el patrón del shortname en el dataset público de GitHub de Google BigQuery
- Para
SITEBA~1.ZIP, se pueden obtener candidatos de nombres reales usados en proyectos, comositebackup.zipositebase.zip - Esta técnica está inspirada en la investigación de Assetnote sobre archivos ocultos en IIS con BigQuery
- Para
- Si LLM, GitHub y BigQuery fallan, se puede usar crunch para generar una wordlist con las combinaciones restantes y probarlas con
ffuf- También conviene revisar variantes de nombre de archivo con guiones, guiones bajos, espacios codificados en URL o sin separadores
- Windows permite espacios en nombres de archivo y IIS también puede servirlos
Fuzzing especializado en IIS/.NET
- Una wordlist genérica puede pasar por alto archivos y endpoints propios del ecosistema IIS/.NET
- Entre los objetivos de alto valor que conviene revisar primero están
/web.config,/web.config.bak,/web.config.old,/web.config.txt/global.asax/trace.axd/elmah.axd/connectionstrings.config/appsettings.json,/appsettings.Development.json,/appsettings.Staging.json,/appsettings.Production.json,/appsettings.Local.json/secrets.json/WS_FTP.LOG/_vti_pvt/service.cnf
trace.axdes el visor de trazas de ASP.NET y, si está habilitado, puede exponer logs de solicitudes y respuestas con encabezados, cookies y a veces credencialeselmah.axdpuede quedar como endpoint de depuración que el desarrollador no desactivó y mostrar registros de errores- Entre las extensiones específicas de IIS para fuzzing están
.asp,.aspx,.ashx,.asmx,.wsdl,.wadl,.config,.xml,.zip,.txt,.dll,.json - Algunas wordlists útiles son las siguientes
- secLists IIS.txt: incluye rutas básicas de IIS, handlers comunes y archivos legacy
- orwa’s iis.txt: se presenta como una lista de IIS usada en programas reales de bug bounty
- orwa’s aspx.txt: lista centrada en endpoints
.aspx - wfuzz iis.txt: lista pequeña enfocada en rutas IIS conocidas por ser vulnerables
- dirbuster-ng iis.txt: lista compacta orientada a debilidades específicas de IIS
- Assetnote wordlists: generadas automáticamente a partir de datos reales de crawling y actualizadas cada mes; se recomiendan las listas de ASP y ASPX
- OneListForAll:
onelistforallshort.txtsirve para ejecuciones rápidas sobre el objetivo y la lista completa para corridas largas
- Como IIS no distingue entre mayúsculas y minúsculas, una wordlist mixed-case puede generar solicitudes duplicadas
- Se suele usar una lista en minúsculas o normalizar con
tr '[:upper:]' '[:lower:]' | sort -u
- Se suele usar una lista en minúsculas o normalizar con
Exposición de web.config y del código
- Si se puede leer
web.configmediante path traversal, copias de respaldo expuestas por error o descubrimiento basado en shortnames, el impacto en un objetivo IIS puede ser alto web.configde IIS puede contener machine keys usadas para la firma y el cifrado de ViewState- Si se obtienen esas machine keys, se puede falsificar un payload malicioso serializado de ViewState y llegar a ejecución remota de código basada en deserialización
- ysoserial.net ayuda a generar payloads cuando se dispone de la key
- Si hay funciones de descarga o lectura de archivos mediante parámetros, lo normal es probar
../../web.configy sus variantes codificadas en URL - La función legacy de ASP.NET de cookieless session puede insertar tokens de sesión con formato
(S(X))en la ruta URL- IIS puede eliminar ese segmento durante la normalización de la ruta y así permitir saltarse el bloqueo de acceso al directorio
/bin Newtonsoft.Json.dllpor sí solo puede ser una biblioteca estándar y no contener secretos de la aplicación- Si se obtiene una DLL real de la aplicación, se puede descompilar con dotPeek o dnSpy para ver credenciales hardcodeadas, API keys, lógica de endpoints internos e implementaciones de autenticación personalizadas
- IIS puede eliminar ese segmento durante la normalización de la ruta y así permitir saltarse el bloqueo de acceso al directorio
Normalización de rutas, NTFS, cargas y bypass de WAF
- Cuando IIS está detrás de un reverse proxy o cumple ese papel, las diferencias en la normalización de rutas pueden llevar a bypass de controles de acceso
- El proxy puede reenviar una ruta codificada tratándola como otro recurso, mientras que IIS puede decodificar
%2fcomo/e interpretar el traversal, entregando una ruta protegida
- El proxy puede reenviar una ruta codificada tratándola como otro recurso, mientras que IIS puede decodificar
- IIS 7.5 y versiones similares pueden permitir bypass de autenticación básica debido a los alternate data streams de NTFS y al comportamiento de index allocation
- El módulo de autenticación puede no reconocer la ruta como protegida, mientras que el sistema de archivos sí la interpreta como el directorio real
- En funciones de carga de archivos, aunque
.aspxy.aspestén bloqueados, IIS puede permitir stored XSS a través de extensiones que por defecto sirve como HTML- Ejemplos de extensiones renderizadas como HTML:
.cer,.hxt,.htm - Ejemplos de extensiones con vectores XSS basados en XML:
.dtd,.mno,.vml,.xsl,.xht,.svg,.xml,.xsd,.xsf,.svgz,.xslt,.wsdl,.xhtml
- Ejemplos de extensiones renderizadas como HTML:
- IIS elimina puntos al final del nombre de archivo, por lo que puede ser posible evadir filtros de carga con
shell.aspx.,shell.aspx..,shell.aspx... - Se mencionan las extensiones
.stm,.shtm,.shtmlcomo objetivos para server-side includes - Cuando un WAF bloquea el payload, se puede usar HTTP Parameter Pollution para dividirlo entre parámetros duplicados
- IIS y ASP.NET concatenan por defecto los valores de parámetros duplicados con comas, por lo que el payload puede rearmarse detrás del WAF
Lecciones y recursos que deja el bug bounty en IIS
- La superficie de ataque de IIS en bug bounty es amplia, pero muchas veces no se prueba lo suficiente
- Los servidores Windows/IIS expuestos pueden filtrar información como IP internas, archivos de configuración y resultados de shortname enumeration
- En la práctica, es importante no quedarse en la pantalla predeterminada de IIS y profundizar el reconocimiento
- Recursos de referencia
1 comentarios
Comentarios de Hacker News
La razón por la que ponemos una página de aterrizaje de IIS delante de cada honeypot es precisamente para atraer a los black hats
Pensar que desperdiciaron horas persiguiéndose la cola me llena de alegría
Los black hats de nivel alto van por objetivos grandes, y los de nivel bajo se concentran en presas fáciles que encuentran en Shodan o en zero-days de aplicaciones que descubrieron ellos mismos
Si hay más formas de fastidiar a los escáneres de puertos, me gustaría conocerlas
aspnet_client/admin.phpy hacer que devuelvan un encabezado de WebObjects también suena como un buen pasatiempoCuando dicen que “IIS tiene un comportamiento heredado de las antiguas reglas DOS de nombres de archivo 8.3”, me pregunto si eso significa que queda expuesto el comportamiento subyacente del sistema operativo, combinado con el hecho de que la raíz de documentos de IIS es por defecto
C:\InetpubEn Windows 10/11, los nombres de archivo 8.3 vienen activados por defecto en la unidad C, pero desactivados por defecto en otras unidades
PS> (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').DisplayVersion→24H2fsutil 8dot3name query C:devuelve8dot3 name creation is ENABLED, mientras quefsutil 8dot3name query U:devuelveDISABLEDc:\inetpuben todas las PCs que no eran servidores por la vaga razón de “endurecimiento de protección”https://www.pcworld.com/article/2684062/why-is-windows-11-la...
DisplayVersionno respondió, y en versiones antiguas como LTSC parece que hay que usarReleaseIdcomo abajo(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ReleaseId→1809El estilo del texto es bastante peculiar
Vaya, esto me trajo muchísimos recuerdos
Hubo una época en la que había tantos escáneres de IIS que los logs del servidor eran prácticamente inutilizables
Existía una vulnerabilidad de recorrido de directorios en la que bastaba con codificar
../en la URL, y durante meses incendió todo Internet¿Todavía hay lugares que usen IIS?
HOST/MACHINE.DOMAINLos servicios de Windows y las identidades de IIS App Pool inician sesión con (g)MSA o cuentas virtuales (
NT Service*), así que un entorno de Kerberos administrado funciona correctamente sin tener que encargarte manualmente de la rotación de contraseñas cada 30/60/90 díasInicias sesión en MS SQL Server con Kerberos, y también en los flujos OAuth2 de otras aplicaciones web con Kerberos, y todo funciona de manera natural
Incluso puedes usar WinRM desde el shell básico de Windows sin configuración especial, y técnicamente también puedes saltarte el 2FA, porque en la práctica así es como funciona
¿Se puede en Linux? Sí, se puede, pero la probabilidad de que quede bien configurado depende del entorno de trabajo y, por mi experiencia, no suele ser alta
Hay una enorme cantidad de aplicaciones viejas, y entre ellas hay bastantes muy importantes
Si una gran empresa es lo bastante grande como para operar una intranet, en alguna parte, o quizá en todas partes, está corriendo IIS
Se integra muy bien con AD, así que tareas muy complejas se vuelven ridículamente simples
Es cierto que el mundo se ha movido hacia AWS y el uso ha bajado, pero eso también es atarse otra vez a un producto privativo de un solo proveedor (Amazon), así que es igual de tonto. La diferencia es que esta vez ni siquiera eres dueño del hardware
A TI del sector público le gusta IIS. Si ves sitios de impuestos municipales o de bienes raíces, hay muchas probabilidades de que estén llenos de scripts
.aspxTambién lo he visto en aplicaciones web del sector público en Europa, y a menudo aplicaciones .NET personalizadas con backend en SQL Server son las que mueven gobiernos locales completos
En Asia, especialmente en China y Taiwán, parecía gustarles IIS para alojar todo tipo de cosas
Es verdad que el mundo en general ya se movió, pero sigue habiendo una cantidad enorme de código legado sobre IIS que hace funcionar ciudades y organizaciones importantes, y no va a cambiar
Si eso te parece malo, todavía hay sitios en la web que siguen corriendo AS/400, Lotus Notes y Novell GroupWise
Piensa en una empresa pequeña que desarrolla código empresarial en .NET Framework, donde todo es Windows, los clientes no aceptan la nube, SOAP sigue siendo dominante y la única persona de TI no ha tenido tiempo de prestar atención a nada de lo que pasó desde 2010
Reescribir todo simplemente no es realista, quieren obtener beneficios de seguridad pero no tienen capacidad para meterse a fondo en la configuración, y tampoco pueden apostar por algo complejo como Kubernetes
Me gustaría ver un análisis así también sobre nginx
Tomando en cuenta todos los navegadores de escritorio, el diseño está realmente muy bien hecho y el contenido también es excelente
Aun así, me gusta el resto de la presentación
Parece que el autor todavía tiene que aprender cuánto depende la civilización de que la gente no se comporte mal entre sí sin motivo alguno
No entiendo qué pasa con la barra lateral izquierda, que se superpone al texto principal