Laboratorio de análisis y explotación de la vulnerabilidad CVE-2025-5548 en FreeFloat FTP Server 1.0
Laboratorio de análisis y explotación de vulnerabilidades · Exploit Development · Windows x86
Este repositorio documenta de forma completa el proceso de análisis y explotación de la vulnerabilidad CVE-2025-5548, un stack-based buffer overflow presente en FreeFloat FTP Server 1.0 para Windows.
El objetivo no es solo explotar la vulnerabilidad, sino explicar cómo se construye un laboratorio de análisis desde cero: qué herramientas se necesitan, por qué se necesitan, y cómo se usa cada una a lo largo del proceso de explotación. Todo el entorno se monta de forma , sin scripts automatizados, lo que permite comprender en profundidad cada fase del proceso.
CVE-2025-5548 es un buffer overflow en FreeFloat FTP Server.
| Campo | Detalle |
|---|---|
| CVE | CVE-2025-5548 |
| Publicado | 03/06/2025 |
| Severidad | Crítica |
| Tipo | Stack-based Buffer Overflow |
| Componente afectado | NOOP Command Handler |
| Software afectado | FreeFloat FTP Server 1.0 |
| Plataforma | Windows x86 |
| Vector de ataque | Red (acceso remoto) |
| Offset hasta EIP | 246 bytes |
| Bad characters | \x00 \x0a \x0d |
| Dirección JMP ESP | 0x7C86467B (kernel32.dll) |
La vulnerabilidad se produce cuando el servidor FTP recibe una entrada especialmente diseñada a través del comando NOOP. Al no validar el tamaño del buffer recibido, es posible desbordar la pila, sobrescribir el registro EIP y redirigir el flujo de ejecución hacia código arbitrario controlado por el atacante.
CVE-2025-5548-FreeFloat-FTP-Buffer-Overflow/
│
├── docs/
│ ├── 01_environment_setup.md ← Parte 1: Preparación del entorno
│ └── 02_exploitation.md ← Parte 2: Explotación de la vulnerabilidad
│
├── exploits/
│ ├── exploit01.py ← Verificación de conectividad
│ ├── exploit02.py ← Fuzzing del comando NOOP
│ ├── exploit03.py ← Envío del patrón cíclico
│ ├── exploit04.py ← Verificación del control del EIP
│ ├── exploit05.py ← Identificación de bad characters
│ └── exploit06.py ← Exploit final con JMP ESP
│
└── images/
└── *.png ← Capturas utilizadas en la documentación
Instalación y configuración manual de todas las herramientas necesarias para el laboratorio, con capturas y explicación de por qué se necesita cada una.
| Categoría | Herramientas |
|---|---|
| Lenguajes | Python, Java (JDK) |
| IDEs y editores | Visual Studio Code, Notepad++, PyCharm |
| Análisis y debugging | IDA Free, Immunity Debugger, Ghidra |
| Explotación | Mona (plugin para Immunity) |
| Aplicaciones vulnerables | VulnServer, FreeFloat FTP Server |
| Red y utilidades | Nmap / Ncat, Git |
Proceso completo de explotación documentado fase a fase, desde el primer crash hasta el control total del flujo de ejecución.
| Fase | Descripción |
|---|---|
| 1 | Preparación del entorno de explotación |
| 2 | Análisis estático del binario con IDA |
| 3 | Fuzzing del comando NOOP |
| 4 | Cálculo del offset con Mona (246 bytes) |
| 5 | Identificación de bad characters (\x00, \x0a, \x0d) |
| 6 | Redirección del flujo de ejecución mediante JMP ESP |
graph LR
A["Entrada controlada: NOP + buffer"] --> B["Buffer Overflow"]
B --> C["Sobrescritura de EIP"]
C --> D["EIP → dirección JMP ESP"]
D --> E["JMP ESP"]
E --> F["ESP → buffer controlado"]
F --> G["NOP sled"]
G --> H["Shellcode"]Entrada controlada (NOOP + buffer)
↓
Buffer Overflow
↓
Sobrescritura de EIP
↓
EIP → dirección de JMP ESP
↓
JMP ESP
↓
ESP → buffer controlado
↓
NOP sled
↓
Shellcode
Este laboratorio no se centra únicamente en ejecutar un exploit, sino en comprender el proceso completo de análisis y explotación de vulnerabilidades.
Este repositorio tiene fines exclusivamente educativos. Todo el análisis y la explotación se realizan sobre software vulnerable en un entorno controlado y aislado. No utilices estas técnicas contra sistemas sin autorización expresa.