Share
## https://sploitus.com/exploit?id=9EA64E33-B29A-5BBD-8283-B30AA64E42EB
# Rompiendo FreeFloat FTP: análisis y explotación de CVE-2025-5548

**Anderson Steven** — Máster en Ciberseguridad, Módulo 6 (Vulnerabilidades)
Entrega individual: *Metodología de análisis de vulnerabilidades y explotación*

## Por qué este repositorio

No quería entregar simplemente "aquí está el exploit funcionando". Este repositorio
recoge cómo trabajo yo cuando me enfrento a una vulnerabilidad de corrupción de
memoria: qué miro primero, en qué orden descarto hipótesis, qué herramientas uso en
cada fase y por qué. Uso CVE-2025-5548 como hilo conductor porque es un caso pequeño
y manejable, pero el documento central de este repo —
[`METHODOLOGY.md`](./METHODOLOGY.md) — no es un tutorial de "cómo explotar FreeFloat
FTP", es mi forma de razonar ante cualquier binario, adaptable a otros casos.

## El bug, en corto

FreeFloat FTP Server 1.0 es un servidor FTP para Windows de hace más de una década,
sin mantenimiento, que se sigue usando en laboratorios de explotación porque su fallo
es de libro: al procesar ciertos comandos del protocolo (`NOOP` es el que trabajo
aquí, aunque no es el único) copia lo que envía el cliente a un búfer fijo en la pila
con `strcpy`, sin comprobar cuánto mide la entrada. Si mandas más datos de los que
caben, te comes la dirección de retorno guardada en la pila y controlas EIP.

Algo que me pareció interesante mientras investigaba el histórico de este bug: el
mismo fallo de programación, disparado desde distintos comandos FTP (`USER`, `PASS`,
`HOST`, `NOOP`...), ha terminado registrado como varios CVEs distintos
(CVE-2025-5548, CVE-2025-5667, CVE-2025-5220, CVE-2025-5075...). Lo comento con más
detalle en el análisis de causa raíz, pero la idea que me llevo es que contar CVEs no
es lo mismo que contar vulnerabilidades: aquí hay un único error de implementación
detrás de todos ellos.

## Cómo está organizado

- [`METHODOLOGY.md`](./METHODOLOGY.md) — documento central: mi metodología de
  análisis y explotación, fase por fase, con las herramientas y la mentalidad que
  aplico en cada una, y mi forma de abordar una vulnerabilidad desconocida (0-day).
- [`00-Environment/`](./00-Environment/README.md) — cómo monté el laboratorio
  (víctima Windows, atacante Linux, software instalado, red).
- [`01-Vulnerability-Analysis/`](./01-Vulnerability-Analysis/README.md) — diagnóstico
  del binario: dónde está el fallo y por qué ocurre, con ingeniería inversa estática.
- [`02-Exploitation/`](./02-Exploitation/README.md) — el proceso completo de
  explotación documentado paso a paso, con los scripts que fui usando en cada etapa.
- [`03-0day-Approach/`](./03-0day-Approach/README.md) — cómo enfocaría la búsqueda de
  una vulnerabilidad todavía no descubierta: fuzzing, diffing, reversing, entorno.
- `images/` — capturas del laboratorio, una subcarpeta por sección.

## Alcance y uso responsable

Todas las pruebas se han realizado en un laboratorio aislado (máquinas virtuales en
red interna, sin salida a sistemas de terceros). El contenido es exclusivamente
formativo; no está pensado para usarse contra infraestructuras sin autorización.