1 puntos por GN⁺ 3 시간 전 | 1 comentarios | Compartir por WhatsApp
  • 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 encabezado Host sirven 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.*.json y .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_client y _vti_bin se consideran señales de IIS
    • ext:aspx sirve para encontrar páginas ASP.NET y sugiere que debajo hay IIS
    • Las búsquedas con comodines como site:*.target.com y site:*.*.target.com sirven para encontrar subdominios anidados que la enumeración básica de subdominios puede pasar por alto
  • Los encabezados de respuesta son la pista más fácil para identificar IIS
    • Server: Microsoft-IIS/10.0
    • X-Powered-By: ASP.NET
    • Para validación a gran escala, se puede crear una lista de objetivos IIS con httpx o nuclei

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 Location puede incluir una IP interna como https://192.168.5.237/owa/
  • El encabezado X-FEServer puede 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 nuclei con etiquetas como microsoft, windows, asp, aspx, iis, azure, config, exposure ayuda a reducir trabajo repetitivo
  • HTTPAPI 2.0 404 no 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 Host de la solicitud no coincide
  • 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 ffuf y una wordlist para el encabezado Host
  • 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 ~1 y 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
  • 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.axd es el visor de trazas de ASP.NET y, si está habilitado, puede exponer logs de solicitudes y respuestas con encabezados, cookies y a veces credenciales
  • elmah.axd puede 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.txt sirve 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

Exposición de web.config y del código

  • Si se puede leer web.config mediante path traversal, copias de respaldo expuestas por error o descubrimiento basado en shortnames, el impacto en un objetivo IIS puede ser alto
  • web.config de 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.config y 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.dll por 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

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 %2f como / e interpretar el traversal, entregando una ruta protegida
  • 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 .aspx y .asp esté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
  • 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, .shtml como 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

1 comentarios

 
GN⁺ 3 시간 전
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

    • No se queden ahí; estaría divertido poner un servidor IIS real al frente y apilar honeypots como una matrioshka para ver hasta dónde llegan
    • A menos que pongas el honeypot dentro del rango de IP de una organización existente, al final lo único que recibes es tráfico de bots
      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
    • El ruido es una capa de seguridad realmente subestimada
    • Abrí los puertos de Plex y Nintendo Switch y empezaron a llegar escaneos como locos
      Si hay más formas de fastidiar a los escáneres de puertos, me gustaría conocerlas
    • Crear URLs como aspnet_client/admin.php y hacer que devuelvan un encabezado de WebObjects también suena como un buen pasatiempo
  • Cuando 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:\Inetpub
    En 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').DisplayVersion24H2
    fsutil 8dot3name query C: devuelve 8dot3 name creation is ENABLED, mientras que fsutil 8dot3name query U: devuelve DISABLED

  • El estilo del texto es bastante peculiar

    • Varias veces pensé que lo había escrito Claude
  • 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

    • Esos intentos de recorrido siguen siendo muy comunes incluso hoy, junto con ataques de script kiddies contra PHP/WordPress
  • ¿Todavía hay lugares que usen IIS?

    • Sí. Si usas Windows Server e IIS, tienes una máquina unida al dominio y normalmente un SPN con formato HOST/MACHINE.DOMAIN
      Los 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ías
      Inicias 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
    • En los departamentos de TI corporativos todavía se usa muchísimo
    • Hablo seguido con gente que sigue operando IIS en Windows Server
      Hay una enorme cantidad de aplicaciones viejas, y entre ellas hay bastantes muy importantes
    • Algunos bancos todavía usan IIS
      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 .aspx
      Tambié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
    • Correcto. Y preguntando desde la ignorancia, entonces ¿qué se supone que hay que usar hoy en día?
      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

    • No sé si lo dices en serio, pero en mi navegador de escritorio la barra lateral se superpone al panel principal y queda texto encima de texto
      Aun así, me gusta el resto de la presentación
    • Llamarlo “excelente” es ser bastante generoso con contenido de nivel script kiddie de principios de los 2000
      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