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

# 🟩 WalkingCMS

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con `nmap`:

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

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

Vemos que solo está el puerto 80 activo (servicio web). Si realizamos un escaneo de directorios encontramos lo siguiente:

{% code overflow="wrap" expandable="true" %}

```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/2UbHgM8Wlsdg6gh2cW5Y" alt=""><figcaption></figcaption></figure>

Estamos ante un WordPress. Vamos a enumerarlo con la herramienta `wpscan`:

{% code overflow="wrap" %}

```bash
wpscan --url http://$IPTARGET/wordpress --enumerate --api-token <token>
```

{% endcode %}

Esta herramienta nos encuentra un usuario que podemos utilizar en un ataque de diccionario.

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

Para realizar este ataque se ha utilizado la wordlist `rockyou.txt`.

{% code overflow="wrap" %}

```bash
wpscan --password-attack xmlrpc -t 20 -U mario -P /usr/share/wordlists/rockyou.txt --url http://$IPTARGET/wordpress
```

{% endcode %}

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

Encontramos una combinación para entrar al panel de WordPress: `mario:love`.

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

## 🚪 Ganando acceso

Una vez dentro, podemos modificar un fichero php de una plantilla de WordPress para inyectar una reverse shell. Cada vez que solicitemos ese recurso dentro del directorio `wp-content`, se ejecutará el código que nos da acceso a la máquina.

En este caso, voy a editar el fichero `index.php` de la plantilla `twentytwentytwo` para añadir la reverse shell de pentestmonkey.

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

Una vez actualizado el recurso, lo solicitamos a través del siguiente enlace. Previamente, nos ponemos a la escucha con `netcat`.

```
http://172.17.0.2/wordpress/wp-content/themes/twentytwentytwo/index.php
```

<figure><img src="/files/2sAlIZlg1VjDitCspRwx" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Si buscamos los binarios con el bit SUID activado, encontramos uno potencialmente peligroso: `/usr/bin/env`. Con este binario podemos ejecutar cualquier comando o binario, y al tener el bit SUID activo, lo podemos hacer con los privilegios del propietario del archivo (`root`).

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