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

# 🟩 Picadilly

🧠Dificultad: Fácil | 🔓30/01/2026

## 🕵️ Reconocimiento

Comenzamos realizando un escaneo de puertos con nmap:

{% code overflow="wrap" %}

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

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FoATVlXB2ExRwHWEyqzst%2Fimage.png?alt=media&amp;token=6808cf94-ff1d-486e-8b10-8dd71b65a1ad" alt=""><figcaption></figcaption></figure>

Vemos puertos web abiertos (HTTP y HTTPS). Vamos a ver qué directorios encontramos en estos servicios:

{% 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="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FOCxHOAEXks9ikYRaL44H%2Fimage.png?alt=media&amp;token=5e5e73fa-89be-4235-898e-49c513f14992" alt=""><figcaption></figcaption></figure>

Para la página que usa SSL/TLS, vamos a utilizar el parámetro -k para ignorar los errores de los certificados.

{% code overflow="wrap" %}

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

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FQzoiIK0WOtfb5CmtE0Rn%2Fimage.png?alt=media&amp;token=f32f9c5c-7c57-45fd-b188-5b83226f9248" alt=""><figcaption></figcaption></figure>

La página web que no está securizada contiene un directory listing. En este se encuentra el archivo `backup.txt`, que contiene lo siguiente:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FKl2UV8rE94sOM1flPEUj%2Fimage.png?alt=media&amp;token=59af3885-b18e-495e-bb84-69f6eccf64a2" alt=""><figcaption></figcaption></figure>

Si probamos a poner esta palabra en la herramienta Cyberchef y utilizamos el cifrado césar, encontramos que si desplazamos 3 veces hacia atrás las letras, vemos una posible contraseña coherente.&#x20;

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FZyWW60jUhBcNM7DqBf7D%2Fimage.png?alt=media&amp;token=763104d7-1295-426d-a9c6-9fe22ced55b5" alt=""><figcaption></figcaption></figure>

Veamos qué hay en el servicio HTTPS. Hallamos una sección donde podemos subir archivos a la web.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FcxvCRxQzvWVBR7jiclbS%2Fimage.png?alt=media&amp;token=f2c3a5f8-46f6-403f-ab6a-fde09d37579f" alt=""><figcaption></figcaption></figure>

Probamos a subir un archivo llamado `prueba`, pero este no se muestra en la página. Si cambiamos la extensión desde burpsuite a `.txt`, entonces si podemos visualizarlo.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FUqWTVLGBWMXm2Z6PMrEs%2Fimage.png?alt=media&amp;token=75387233-4ea5-4f61-80ca-c294c819ef2b" alt=""><figcaption></figcaption></figure>

Directamente podemos probar si podemos subir un archivo `.php`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FZE10LPA7C64nV0I0Qj90%2Fimage.png?alt=media&amp;token=dd1de267-01ff-45c9-94e9-784a4b75d686" alt=""><figcaption></figcaption></figure>

Ha funcionado correctamente, aunque visualizar el archivo php no nos ayuda de mucho de momento. Nos interesa ejecutarlo. Por ello, accedemos al directorio `/uploads` descubierto anteriormente. Aquí vemos que todos los archivos han sido subidos correctamente:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2F1WuTJJEoDIP5f0HSsJRF%2Fimage.png?alt=media&amp;token=2a8b8e77-1863-49db-9ad9-03bd8e01200b" alt=""><figcaption></figcaption></figure>

## 🚪 Ganando acceso

Podemos subir una reverse shell en php a la web y ejecutarla. Para ello utilizaremos la revershe shell de pentestmonkey:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FsbZeFJtGomx4XUxkWl95%2Fimage.png?alt=media&amp;token=af7b6ef9-dd79-4df5-9951-76933a469dcd" alt=""><figcaption></figcaption></figure>

Nos ponemos a la escucha en nuestra máquina y accedemos al archivo php que hemos subido desde el directorio `/uploads` para que se ejecute:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FlBBu0LjarGzP6PAXMqr4%2Fimage.png?alt=media&amp;token=7c361804-d825-42f6-9ae8-fe794df24731" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Una vez dentro, podemos pivotar al usuario mateo con la contraseña que hemos encontrado antes, aunque hay un pequeño error: la contraseña real es `easycrazy`, y no `easycrxazy` como habíamos resuelto.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2F7oY2Y8wMVAyqldUJrlZK%2Fimage.png?alt=media&amp;token=727a3fd3-fcc7-4428-990c-6c203d2a4164" alt=""><figcaption></figcaption></figure>

Una vez accedido como mateo, vemos los permisos que tenemos con sudo:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FQzXdmtXvR9Y3d4mlsZBQ%2Fimage.png?alt=media&amp;token=67dbf796-271f-41b1-8ca4-aed874f3e6e5" alt=""><figcaption></figcaption></figure>

Podemos ejecutar una shell usando php como root. En este caso, utilizo el comando que se encuentra en [gtfobins](https://gtfobins.github.io/).

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2F7dzRbnbZaGyKu6lzQ4Cw%2Fimage.png?alt=media&amp;token=2812e120-accb-4e71-a9b9-328b42c20028" alt=""><figcaption></figcaption></figure>
