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

# 🟩 Upload

🧠Dificultad: Fácil | 🔓04/02/2026

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos usando `nmap`:

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

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fv4AmUpf323lsJFiPRV3l%2Fimage.png?alt=media&amp;token=5a220a00-0161-4149-b59d-287ba74acaae" alt=""><figcaption></figcaption></figure>

Solo está abierto el puerto del servicio HTTP. Realizamos un escaneo de directorios en el servicio web.

```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
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fd4lZiBkLPyoOa9vaK4mu%2Fimage.png?alt=media&amp;token=ff37c29b-e4fe-4e53-a1f8-ca7e05c7db6f" alt=""><figcaption></figcaption></figure>

Si entramos a la página, encontramos un menú muy simple donde podemos subir nuestros archivos. Probamos a subir un archivo `.php` de prueba para ver si lo filtra.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FELyrWfwbUPkT60mn3GXp%2Fimage.png?alt=media&amp;token=efa772a5-5d2a-45d2-bb11-e7f01a2af4b4" alt=""><figcaption></figcaption></figure>

Se ha subido correctamente, por lo que este puede ser nuestro vector de ataque.

## 🚪 Ganando acceso

Subimos una reverse shell en PHP al servidor. En mi caso utilizaré la reverse shell de pentestmonkey.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FFwHD1zR0UT3xgkQjhKL3%2Fimage.png?alt=media&amp;token=21108320-7dfb-4158-86b2-2388cad18abb" alt=""><figcaption></figcaption></figure>

Nos ponemos a la escucha con netcat en nuestra máquina y ejecutamos el fichero PHP que hemos subido al servidor.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fk1NESemTe4nfGlaacIav%2Fimage.png?alt=media&amp;token=fa89ddae-a401-4c1d-972c-10a528bc7883" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Una vez metidos en la máquina, verificamos los privilegios que tenemos con `sudo`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FPQ01ifOTww3LfqXglzfZ%2Fimage.png?alt=media&amp;token=3bf49c3d-0f29-4d39-ab6b-5b022a258811" alt=""><figcaption></figcaption></figure>

Podemos ejecutar el binario `/usr/bin/env` como `root` sin necesidad de contraseña. Esto nos otorga una shell directa como `root`.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FwqCrmrbYWOiyZAEGMvdA%2Fimage.png?alt=media&amp;token=b848ce5f-70cb-4b35-bdc3-44a5172ab3cc" alt=""><figcaption></figcaption></figure>
