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

# BaluFood

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

**1. Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **BaluFood** 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 extraer el contenido del archivo comprimido:

```bash
7z x balufood.zip
```

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

**3. Ejecución:**

Ejecutamos el script (`auto_deploy.sh`) para levantar la máquina en Docker:

```bash
bash auto_deploy.sh balufood.tar
```

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

***

#### **Reconocimiento:**

**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="/files/pTgyD2cqVtTGXNMjR3nh" alt=""><figcaption></figcaption></figure>

**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 (1-65535).
* `--open`: Muestra solo puertos abiertos.
* `-sS`: Escaneo SYN (stealth, no completa la conexión TCP).
* `--min-rate 5000`: Acelera el escaneo enviando 5000 paquetes/segundo.
* `-vvv`: Máximo nivel de verbosidad.
* `-n`: Evita resolución DNS.
* `-Pn`: Trata el host como activo (evita detección por `ping`).
* `-oG allPorts`: Guarda los resultados en formato Grepable, en el archivo `allPorts`.

**Puertos abiertos identificados:**

* **Puerto 22:** `SSH`.
* **Puerto 5000:** `UPNP`.

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

**3. Escaneo Detallado:**

Realizamos un escaneo detallado para obtener más información de los puertos abiertos:

```bash
nmap -p22,5000 -sCV 172.17.0.2 -oN targeted
```

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

* `-p22,5000`: Especifica los puertos que se desea escanear, en este caso, el puerto 22 y el puerto 5000.
* `-sCV`: Escaneo de versiones (`-sV`) y ejecución de scripts básicos de reconocimiento (`-sC`).
* `-oN targeted`: Guarda la salida en formato normal, en el archivo `targeted`.

**Resultados:**

* **Puerto 22:** OpenSSH 9.2p1.
* **Puerto 5000:** Servicio web corriendo en Werkzeug/2.2.2 (Python/3.11.2).

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

**4. Análisis del Servicio Web:**

Accedemos al servicio web en `http://172.17.0.2:5000/` y observamos una página de un restaurante con un botón "Ver Nuestra Carta".

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

Al hacer clic en el botón, somos redirigidos a `http://172.17.0.2:5000/carta`, donde se muestran los platos de la carta.

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

En la esquina superior derecha, encontramos un botón "Admin" que nos redirige a `http://172.17.0.2:5000/login`, un panel de inicio de sesión con el usuario `admin` predefinido.

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

Probamos credenciales básicas y descubrimos que la contraseña es `admin`.

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

Dentro del panel, inspeccionamos el código fuente y encontramos un comentario con credenciales SSH:

```html
<!-- Backup de acceso: sysadmin:backup123 -->
```

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

***

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

**1. Acceso Inicial vía SSH:**

Utilizamos las credenciales encontradas anteriormente para conectarnos por SSH:

```bash
ssh sysadmin@172.17.0.2
```

Introducimos la contraseña `backup123` y confirmamos el acceso al sistema como `sysadmin`.

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

**2. Enumeración del Usuario `sysadmin`:**

Listamos los archivos del directorio del usuario (`/home/sysadmin`):

```bash
ls -la
```

Encontramos un archivo llamado `app.py`.

<figure><img src="/files/8YDuMJHdrCwx7jd6j1R4" alt=""><figcaption></figcaption></figure>

Al inspeccionar su contenido:

```bash
cat app.py
```

Descubrimos una posible contraseña: `cuidaditocuidadin`.

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

**3. Escalada al Usuario `balulero`:**

Listamos los usuarios disponibles en `/home`:

```bash
ls -la /home
```

Observamos la existencia del usuario `balulero`.

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

Probamos a cambiar de usuario con la contraseña encontrada (`cuidaditocuidadin`):

```bash
su balulero
```

Vemos que las credenciales son correctas y estamos dentro de la máquina con el usuario `balulero`.

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

***

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

**1. Revisión de Historial:**

Ejecutamos el comando `history` para revisar los comandos previamente utilizados.

Observamos un comando `alias`, lo cual nos resulta interesante.

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

Ejecutamos `alias` y encontramos lo siguiente:

```bash
alias ser-root='echo chocolate2 | su - root'
```

Esto sugiere posibles credenciales del usuario `root`.

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

**2. Acceso como Root:**

Probamos acceder como el usuario `root` utilizando el siguiente comando:

```bash
su root
```

Ingresamos la contraseña que identificamos previamente (`chocolate2`).

**Resultado:** Obtenemos acceso como `root` en la máquina, lo que indica que ya tenemos privilegios máximos.

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