Soulmate (Easy)
root@SynAckLabs:~# ./show_index.sh

Resumen
Objetivo: explotar un servicio web en el puerto 80 que permite subir y servir imágenes, y usarlo para conseguir ejecución de código. Tras enumerar subdominios/vhosts se identifica un panel relacionado con CrushFTP. Se utiliza un exploit público de la CVE-2025-31161 para acceder al panel, enumerar usuarios y finalmente obtener acceso interactivo. Después se exploran rutas alternativas de acceso (cambio de contraseña de un usuario) y se prepara la escalada a través de un servicio SSH interno expuesto en el puerto 2222.
Puerto 80: primera observación

Se trata de una app de citas. La funcionalidad de subida de fotos sugiere una posible vulnerabilidad de file upload.
El endpoint donde se guardan/gestionan las imágenes:

La idea es encontrar una forma de subir contenido malicioso que termine ejecutándose en el servidor.


Se observa que el endpoint cambia los últimos 3 dígitos, lo que parece relevante para activar o localizar la shell.
Enumeración: subdominios y vhosts
Se realizan descubrimientos de subdominios y vhosts.

Aparece un panel y se obtiene información del servicio: CrushFTP.

Exploit utilizado:
https://github.com/Immersive-Labs-Sec/CVE-2025-31161/blob/main/cve-2025-31161.py
¿Cómo funciona técnicamente? (CVE-2025-31161)
- Proceso de autenticación (race condition): el servidor CrushFTP emplea el método AWS4-HMAC-SHA256 (compatible S3) para autorizar peticiones.
- Al recibir una autenticación, primero verifica la existencia del usuario (p. ej.
login_user_pass()) sin exigir contraseña, lo que durante un lapso breve deja la sesión en un estado “válido”. - Si durante ese lapso se envía un header
Authorizationmalformado (por ejemplo, con solo el nombre de usuario y una/, comoAWS4-HMAC-SHA256 Credential=crushadmin/), se puede provocar un error que evita que la sesión se cierre y mantiene la autenticación sin validación. - Con ello, se puede actuar como un usuario conocido (especialmente
crushadmin, por ser cuenta por defecto) y obtener control del servidor.


Acceso al panel
Estamos dentro.

Enumeración de usuarios disponibles:

Web shell a través de la foto de perfil
Desde un usuario con permisos administrativos, se renombra la foto de perfil para intentar obtener una web shell.


Comprobación:
/etc/passwd

Shell y credenciales encontradas
Se obtiene una shell.

Revisión de configuración:
config

Credencial observada:
Crush4dmin990

Vía alternativa: acceso como otro usuario
Otra manera de acceder: se cambia la contraseña de ben y se entra como ese usuario para subir una shell.

Escalada: servicio interno SSH (Erlang 5.2.9)
Se detecta un servicio SSH interno en el puerto 2222.

Se modifica el exploit, ya que nc no funciona bien en este contexto.

Ejecución / resultados:

