> 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

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

#### **1.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.

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

Utilizamos `7z` para extraer el contenido del archivo comprimido:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F0zdU1cj3OYFHoSU83ysh%2FPasted%20image%2020250730112038.png?alt=media&amp;token=9bb8a7e2-6d40-4f76-9f44-b41356cbbb6f" alt=""><figcaption></figcaption></figure>

#### **1.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FuUukN6wvBTl9D5rOwde4%2FPasted%20image%2020250730112108.png?alt=media&amp;token=9cff7206-8664-4b0c-9b19-3d7c07c7e81b" 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%2FgSczPRpzLMzs1P5SPdcq%2FPasted%20image%2020250730112155.png?alt=media&amp;token=7b9c0418-6825-43d8-b855-472ddf059cab" 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 (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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fu3gzRkD1Kan1Xb1lJfJX%2FPasted%20image%2020250730112233.png?alt=media&amp;token=6ff8fc11-4ef2-4824-807a-5a7f2f5a4446" alt=""><figcaption></figcaption></figure>

#### **2.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FxfgMI0muUvSWa625nL2r%2FPasted%20image%2020250730112437.png?alt=media&amp;token=4e387834-f52f-449d-a7e6-f8b7be522bbf" alt=""><figcaption></figcaption></figure>

#### **2.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F01sh5ePxi8pkiwyYrwFr%2FPasted%20image%2020250730112517.png?alt=media&amp;token=4947e70b-be94-48c6-ada7-0526e77b8ed7" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FJMF8XfzVekDB6D0ApqtW%2FPasted%20image%2020250730112531.png?alt=media&amp;token=4e47c34b-8b3c-48d8-bbb3-aa02780e8903" alt=""><figcaption></figcaption></figure>

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

#### **3.1. Acceso al panel de administración**

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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FwZVRmpMErXfjxZ2Cq5nf%2FPasted%20image%2020250730112552.png?alt=media&amp;token=86fd6d9e-bdd8-4351-a641-7e3e1be94121" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9JyyYaaf6AkcLoCjnXId%2FPasted%20image%2020250730112624.png?alt=media&amp;token=db7053af-40d3-45a6-abd7-1dc8c60208b7" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FbqAvXiCAChRBRBFpg3to%2FPasted%20image%2020250730112645.png?alt=media&amp;token=0296aa73-fc5b-4192-aa08-87225a4bf748" alt=""><figcaption></figcaption></figure>

#### **3.2. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FRvM9P7FpzFjl42SJJbDZ%2FPasted%20image%2020250730112724.png?alt=media&amp;token=12c05326-b143-4eec-ae39-c10feab596ce" alt=""><figcaption></figcaption></figure>

### **4. Escalada de privilegios**

#### **4.1. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FSHDcNxKiL0ibyNLV042j%2FPasted%20image%2020250730112842.png?alt=media&amp;token=1eb00162-4ded-45be-a898-8d653202bec3" alt=""><figcaption></figcaption></figure>

Al inspeccionar su contenido:

```bash
cat app.py
```

Descubrimos una posible contraseña: `cuidaditocuidadin`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FNWGuiQUYU3TLHMdZaAo0%2FPasted%20image%2020250730112925.png?alt=media&amp;token=72562da2-8f77-425e-8aec-79ced284b7e8" alt=""><figcaption></figcaption></figure>

#### **4.2. Escalada al usuario balulero**

Listamos los usuarios disponibles en `/home`:

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

Observamos la existencia del usuario `balulero`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FVB8T5EhoCc3Bx1F3cIQw%2FPasted%20image%2020250730113034.png?alt=media&amp;token=3df1c367-1dad-4bbb-bbb2-3cd57247f8b7" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FAzEwka0Pqhrs7ZIzMzDo%2FPasted%20image%2020250730113148.png?alt=media&amp;token=41335cf7-efed-466e-8a0a-517b79879bda" alt=""><figcaption></figcaption></figure>

#### **4.3. Revisión del historial**

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

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FiHQvX7uwlNWdyKZDdbIS%2FPasted%20image%2020250730113241.png?alt=media&amp;token=f05b6b8c-c809-4096-9960-c79483b513a7" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FqafSWYG0lcTIu8tc8zf6%2FPasted%20image%2020250730113315.png?alt=media&amp;token=32cdd2b9-694e-461a-ba5b-ac8c0f59f01d" alt=""><figcaption></figcaption></figure>

#### **4.4. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FMNYueB9KOLnvUhuBKy2f%2FPasted%20image%2020250730113331.png?alt=media&amp;token=45e3c3f1-419a-4db5-ac22-1d427364747f" alt=""><figcaption></figcaption></figure>
