## https://sploitus.com/exploit?id=C7D0E39A-8C6D-584F-9AE3-CAC0AEDEFFE5
# Estudio t茅cnico de la vulnerabilidad CVE-2025-5548
## Introducci贸n
En este trabajo se analiza la vulnerabilidad **CVE-2025-5548**, asociada a un **desbordamiento de b煤fer en la pila** presente en **FreeFloat FTP Server v1.0**. El objetivo principal del laboratorio es entender c贸mo se comporta una aplicaci贸n vulnerable ante entradas manipuladas y observar, en un entorno controlado, c贸mo un fallo de validaci贸n puede terminar afectando al flujo de ejecuci贸n del programa.
El desarrollo del repositorio no se limita a mostrar el resultado final, sino que recoge el proceso completo de investigaci贸n: preparaci贸n del entorno, selecci贸n de herramientas, observaci贸n del fallo, an谩lisis de memoria y validaci贸n del impacto real de la vulnerabilidad.
---
## Organizaci贸n del contenido
El trabajo est谩 planteado en dos bloques diferenciados.
### Preparaci贸n del laboratorio
En este apartado se explica c贸mo se ha montado el entorno de pr谩ctica, qu茅 sistema operativo se ha utilizado, cu谩l es la aplicaci贸n vulnerable y qu茅 herramientas se han considerado necesarias para llevar a cabo el an谩lisis.
### Desarrollo del an谩lisis
La segunda parte se centra en la parte pr谩ctica. Aqu铆 se describe el proceso seguido para detectar el fallo, confirmar la corrupci贸n de memoria, estudiar la sobrescritura de registros y comprobar c贸mo puede aprovecharse la vulnerabilidad.
---
# 1. Laboratorio empleado
## Sistema utilizado
La pr谩ctica se ha realizado sobre una m谩quina virtual con **Windows 11 Pro 25H2 (Build 26200.6584)**. El software vulnerable seleccionado ha sido **FreeFloat FTP Server v1.0**, una aplicaci贸n antigua que resulta adecuada para este tipo de ejercicios por carecer de muchas de las protecciones habituales en programas actuales.
La red de la m谩quina virtual se configur贸 en modo **NAT**, lo que permiti贸 acceso a Internet para instalar dependencias, descargar herramientas y mantener la conectividad b谩sica del laboratorio.
## Herramientas principales
Para cubrir todas las fases del an谩lisis fue necesario apoyarse en varias utilidades. Algunas se utilizaron para preparar el entorno, otras para revisar el binario y otras para observar el comportamiento del proceso cuando se produc铆a el fallo.
### Utilidades b谩sicas
#### Git
Se emple贸 para descargar repositorios, mantener organizados determinados recursos y facilitar la gesti贸n del material utilizado durante la investigaci贸n.
#### Nmap
Se utiliz贸 como apoyo para verificar conectividad, identificar el servicio expuesto y comprobar que el objetivo estaba respondiendo correctamente en el puerto esperado.
#### Windows SDK
Se instal贸 para disponer de bibliotecas, cabeceras y herramientas 煤tiles en tareas de depuraci贸n y an谩lisis a bajo nivel dentro del sistema Windows.
### Editores y entornos de desarrollo
#### Notepad++
Se utiliz贸 para ediciones r谩pidas, revisi贸n de scripts y manipulaci贸n sencilla de cadenas o datos de prueba.
#### Visual Studio Code
Sirvi贸 como entorno c贸modo para escribir scripts, probar automatizaciones y trabajar con c贸digo de forma m谩s ordenada.
#### PyCharm Community
Fue 煤til especialmente cuando hubo que revisar scripts m谩s largos o depurar l贸gica relacionada con la construcci贸n de cargas.
### Dependencias necesarias
#### Python
Se contemplaron dos versiones:
- **Python 3**, como opci贸n principal para scripting y automatizaci贸n moderna.
- **Python 2.7**, necesario por compatibilidad con algunas herramientas cl谩sicas de depuraci贸n utilizadas en este tipo de laboratorios.
#### Java JDK
Fue necesario para ejecutar **Ghidra**, ya que esta herramienta est谩 desarrollada sobre Java.
### Herramientas de an谩lisis y reversing
#### Immunity Debugger
Se utiliz贸 para observar el estado del programa durante la ejecuci贸n, comprobar registros, revisar memoria y analizar el punto exacto en el que se produce el fallo.
#### IDA Free
Se emple贸 en la fase de an谩lisis est谩tico para revisar el binario y localizar funciones que resultaban sospechosas desde el punto de vista de la seguridad.
#### Ghidra
Se us贸 como apoyo para decompilar y entender mejor la l贸gica interna del programa vulnerable.
#### Mona
Este complemento facilit贸 tareas como la creaci贸n de patrones, el c谩lculo del offset y la identificaci贸n de caracteres problem谩ticos en la carga.
## Aplicaci贸n vulnerable
El componente principal del laboratorio fue **FreeFloat FTP Server v1.0**, que act煤a como sistema objetivo dentro de la prueba de concepto. Su inter茅s reside en que incorpora una vulnerabilidad cl谩sica de desbordamiento en la pila, lo que lo convierte en un caso muy apropiado para an谩lisis formativo.
## Observaci贸n general
Aunque existen m谩quinas virtuales ya preparadas para este tipo de ejercicios, en este caso se opt贸 por documentar el entorno y justificar las herramientas utilizadas. Esto permite comprender mejor por qu茅 cada aplicaci贸n forma parte del laboratorio y qu茅 papel desempe帽a durante el an谩lisis.
---
# 2. An谩lisis de la vulnerabilidad
## Reconocimiento inicial
El primer paso consisti贸 en comprobar que el servicio FTP estuviera accesible y funcionando correctamente. Una vez confirmada la conectividad, se revis贸 el binario mediante herramientas de an谩lisis est谩tico para localizar posibles puntos d茅biles relacionados con la gesti贸n de cadenas.
Durante esta revisi贸n aparecieron funciones inseguras como `strcpy` y `strcat`, lo que reforz贸 la sospecha de que el servicio pod铆a ser vulnerable a entradas excesivamente largas. Tambi茅n se examinaron varias 贸rdenes del protocolo FTP susceptibles de recibir datos controlados por el usuario, seleccionando una de ellas como candidato principal para las pruebas.
Con esta base, el proceso se carg贸 en un depurador para observar su comportamiento durante la ejecuci贸n.
---
## Comprobaci贸n mediante entradas crecientes
La siguiente fase consisti贸 en enviar cadenas cada vez m谩s largas para comprobar si el programa dejaba de responder correctamente. Este procedimiento permiti贸 verificar que, a partir de cierto tama帽o, el servicio fallaba y acababa provocando una alteraci贸n en memoria.
Ese comportamiento confirm贸 que no se trataba de un simple error de validaci贸n superficial, sino de una corrupci贸n real que afectaba al flujo del proceso.
---
## Localizaci贸n exacta del punto de sobrescritura
Tras provocar el fallo, fue necesario calcular con precisi贸n cu谩ntos bytes hac铆an falta para alcanzar la direcci贸n de retorno. Para ello se utiliz贸 una secuencia no repetitiva, de modo que el valor reflejado en **EIP** en el momento del crash pudiera relacionarse con una posici贸n exacta dentro de la entrada enviada.
Gracias a este procedimiento se obtuvo el desplazamiento concreto necesario para sobrescribir el registro de control.
---
## Verificaci贸n del control de ejecuci贸n
Con el offset ya conocido, se prepar贸 una nueva prueba en la que la direcci贸n de retorno fue sustituida por un valor f谩cilmente reconocible. El objetivo era comprobar si el programa permit铆a modificar **EIP** de forma controlada.
La prueba fue satisfactoria, ya que el depurador mostr贸 que el registro conten铆a exactamente el valor introducido. Esto demostraba que era posible alterar el flujo de ejecuci贸n y redirigirlo hacia una direcci贸n elegida.
---
## Revisi贸n de caracteres problem谩ticos
Una vez alcanzado ese punto, se analiz贸 qu茅 bytes pod铆an interferir con la carga 煤til. En este tipo de vulnerabilidades es habitual que ciertos caracteres provoquen truncados, cambios inesperados o finalizaci贸n prematura de la cadena.
Mediante comparaciones sucesivas en memoria se identificaron varios **bad characters**, entre ellos:
- `\x00`
- `\x0a`
- `\x0d`
Detectarlos fue importante para construir una carga final estable y compatible con el comportamiento del programa vulnerable.
---
## B煤squeda de una referencia 煤til en memoria
El siguiente paso consisti贸 en encontrar una direcci贸n adecuada que permitiera redirigir la ejecuci贸n hacia la zona de memoria donde se alojar铆a la carga. Este an谩lisis deb铆a hacerse teniendo en cuenta el sistema operativo y las protecciones activas, ya que algunas direcciones no son estables entre ejecuciones.
Dentro del laboratorio se localiz贸 una referencia v谩lida que permit铆a enlazar la sobrescritura del flujo con la entrada controlada por el atacante.
---
## Preparaci贸n de la carga
Con el control del flujo ya validado, se construy贸 una shellcode compatible con las restricciones descubiertas previamente. Adem谩s, se a帽adi贸 una zona previa de instrucciones neutras para facilitar que la CPU llegara de forma segura al inicio de la carga incluso si exist铆a una ligera desviaci贸n en la posici贸n esperada.
Este paso fue importante para aumentar la fiabilidad de la ejecuci贸n.
---
## Ejecuci贸n final y comprobaci贸n del impacto
En la 煤ltima fase se lanz贸 la carga completa contra el servicio vulnerable mientras se manten铆a a la escucha un listener en la m谩quina atacante. El resultado fue el establecimiento de una conexi贸n remota con el sistema objetivo, lo que confirm贸 que la vulnerabilidad no solo permite causar una ca铆da del programa, sino tambi茅n obtener ejecuci贸n controlada.
Esto demuestra el impacto real del fallo y justifica su relevancia desde el punto de vista de la seguridad ofensiva y defensiva.
---
# Conclusiones
El estudio de **CVE-2025-5548** muestra con claridad c贸mo una aplicaci贸n antigua, sin mecanismos modernos de protecci贸n, puede ser vulnerable a t茅cnicas cl谩sicas de explotaci贸n basadas en corrupci贸n de memoria.
A lo largo del laboratorio se han recorrido varias etapas fundamentales: la preparaci贸n del entorno, la observaci贸n inicial del fallo, la validaci贸n del desbordamiento, el control del registro de ejecuci贸n, la depuraci贸n de la carga y la verificaci贸n del resultado final.
M谩s all谩 de la prueba t茅cnica, este caso sirve para entender por qu茅 el uso de funciones inseguras y la ausencia de medidas de protecci贸n siguen siendo un riesgo importante en software heredado. Por ello, este tipo de ejercicios resulta especialmente 煤til para afianzar conocimientos de reversing, an谩lisis de vulnerabilidades y explotaci贸n en entornos controlados.