> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/explotacion/ctfs/pruebas-de-penetracion-de-host-y-red-explotacion-ctf-3.md).

# Pruebas de penetración de host y red: Explotación CTF 3

## Descripción General

<figure><img src="/files/hnrBShqfCqJiP0tSHJOp" alt=""><figcaption></figcaption></figure>

***

## Entorno de laboratorio

Se puede acceder a dos máquinas en **target1.ine.local** y **target2.ine.local** . Enumere los objetivos, identifique y explote las configuraciones incorrectas o vulnerabilidades para capturar las banderas. La bandera está en formato hash MD5.

* **Indicador 1:** Un servicio vulnerable podría estar ejecutándose en **target1.ine.local** . Si es explotable, recupera el indicador del directorio raíz.
* **Bandera 2:** Además, una interacción rápida con un servicio de red local en **target1.ine.local** podría revelar esta bandera. Utilice la pista dada en la bandera anterior.
* **Indicador 3:** Un servicio mal configurado ejecutándose en **target2.ine.local** podría ayudarle a acceder a la máquina. ¿Puede recuperar el indicador del directorio raíz?
* **Bandera 4:** ¿Puedes escalar a root en **target2.ine.local** y leer la bandera desde el directorio restringido /root?

***

## 🚩 target1.ine.local

Flag 1

Realizamos un escaneo (por ejemplo, con nmap) para descubrir qué servicios están expuestos en la máquina.

<figure><img src="/files/RazV8ZKG3HvceK6icd8C" alt=""><figcaption></figcaption></figure>

El escaneo muestra que están abiertos el puerto 21 (FTP) y el 80 (HTTP).

<figure><img src="/files/B5vRy3jnlAhmBNCeUUix" alt=""><figcaption></figcaption></figure>

El servicio FTP (puerto 21) corre ProFTPD versión 1.3.5, que es vulnerable. Usamos Metasploit para aprovechar esa vulnerabilidad y conseguir una shell remota.

<figure><img src="/files/ZJpFSggiyp1gFDSySKdl" alt=""><figcaption></figcaption></figure>

Una vez dentro del sistema, navegamos hasta el directorio raíz (`/`) y encontramos el archivo que contiene la Flag 1.

<figure><img src="/files/2yyagTOptPVhfjnZTGeU" alt=""><figcaption></figcaption></figure>

Flag 2

Usamos `netstat -tuln` o similar para listar los puertos abiertos desde dentro del sistema. Vemos el puerto 8888, que no apareció en el escaneo externo de Nmap, posiblemente porque estaba limitado a conexiones locales.&#x20;

Nos conectamos al puerto 8888 con `nc localhost 8888`. El servicio pide una contraseña o frase secreta. La conseguimos en el contenido de la Flag 1 ("letmein").

Al introducir correctamente la frase secreta, el servicio nos entrega la Flag 2

<figure><img src="/files/0qVS4mg7pDvNFqsTFdCl" alt=""><figcaption></figcaption></figure>

## 🚩 target2.ine.local

Flag 3

Usamos `nmap` para detectar puertos abiertos

<figure><img src="/files/t0gpkxK2mcbdLzGmETR1" alt=""><figcaption></figcaption></figure>

El escaneo muestra que los puertos HTTP (80), SMB (139 y 445) están abiertos

<figure><img src="/files/zhQwvqXAX6Gi6bDin3gQ" alt=""><figcaption></figcaption></figure>

Usamos `smbclient -L \\target2.ine.local -N` para listar recursos compartidos sin autenticación (null session). Descubrimos un recurso compartido llamado `site-uploads`.

<figure><img src="/files/BjgC5mhYX5PqoSREIKPY" alt=""><figcaption></figcaption></figure>

Accedemos al recurso con `smbclient \\\\target2.ine.local\\site-uploads -N`

<figure><img src="/files/fUWaYKjT6ftez24B0vzh" alt=""><figcaption></figcaption></figure>

Creamos y subimos un archivo PHP (por ejemplo, una webshell) que nos permite ejecutar comandos desde el navegador.

<figure><img src="/files/5F9zjjLsFXtUUzWBlNAh" alt=""><figcaption></figcaption></figure>

El archivo se sube al recurso compartido accesible por HTTP

<figure><img src="/files/T79XPj1OVEfjLukEjEUP" alt=""><figcaption></figcaption></figure>

Usamos la webshell para ejecutar una reverse shell (por ejemplo, con `bash`, `nc` o `php`) y conectamos de vuelta a nuestro listener.

<figure><img src="/files/ETkDsYWDPwNlTagAsF2n" alt=""><figcaption></figcaption></figure>

Confirmamos que la reverse shell funciona y ya podemos interactuar con el sistema como usuario comprometido.

<figure><img src="/files/dI3dhFgGw2e1rZLTTaBB" alt=""><figcaption></figcaption></figure>

Navegamos al directorio `/` o `/home/usuario` y encontramos la Flag 3.

<figure><img src="/files/53xxtilPZxxdpeF31yEe" alt=""><figcaption></figcaption></figure>

Flag 4

Ejecutamos `find / -perm -4000 -type f 2>/dev/null` para buscar archivos con el bit SUID. Aparece `/usr/bin/find`.

<figure><img src="/files/PpEszCqVBObOv6fw0EFh" alt=""><figcaption></figcaption></figure>

Usamos una técnica de escalada de privilegios conocida que abusa del SUID en `find`, por ejemplo:

```bash
find . -exec /bin/sh \;quit
```

Esto nos da una shell como root si `find` tiene el bit SUID activado. Desde ahí accedemos al archivo que contiene la Flag 4.

<figure><img src="/files/ytBIINQ7sy8LBCBy3kCw" alt=""><figcaption></figcaption></figure>
