Laboratório de análise e exploração da vulnerabilidade CVE-2025-5548 no FreeFloat FTP Server 1.0
Laboratório de análise e exploração de vulnerabilidades · Exploit Development · Windows x86
Este repositório documenta de forma completa o processo de análise e exploração da vulnerabilidade CVE-2025-5548, um stack-based buffer overflow presente no FreeFloat FTP Server 1.0 para Windows.
O objetivo não é apenas explorar a vulnerabilidade, mas explicar como se constrói um laboratório de análise do zero: quais ferramentas são necessárias, por que são necessárias e como cada uma é usada ao longo do processo de exploração. Todo o ambiente é montado de forma , sem scripts automatizados, o que permite compreender em profundidade cada fase do processo.
CVE-2025-5548 é um buffer overflow no FreeFloat FTP Server.
| Campo | Detalhe |
|---|---|
| CVE | CVE-2025-5548 |
| Publicado | 03/06/2025 |
| Severidade | Crítica |
| Tipo | Stack-based Buffer Overflow |
| Componente afetado | NOOP Command Handler |
| Software afetado | FreeFloat FTP Server 1.0 |
| Plataforma | Windows x86 |
| Vetor de ataque | Rede (acesso remoto) |
| Offset até EIP | 246 bytes |
| Bad characters | \x00 \x0a \x0d |
| Endereço JMP ESP | 0x7C86467B (kernel32.dll) |
A vulnerabilidade ocorre quando o servidor FTP recebe uma entrada especialmente projetada através do comando NOOP. Ao não validar o tamanho do buffer recebido, é possível estourar a pilha, sobrescrever o registro EIP e redirecionar o fluxo de execução para código arbitrário controlado pelo atacante.
CVE-2025-5548-FreeFloat-FTP-Buffer-Overflow/
│
├── docs/
│ ├── 01_environment_setup.md ← Parte 1: Preparação do ambiente
│ └── 02_exploitation.md ← Parte 2: Exploração da vulnerabilidade
│
├── exploits/
│ ├── exploit01.py ← Verificação de conectividade
│ ├── exploit02.py ← Fuzzing do comando NOOP
│ ├── exploit03.py ← Envio do padrão cíclico
│ ├── exploit04.py ← Verificação do controle do EIP
│ ├── exploit05.py ← Identificação de bad characters
│ └── exploit06.py ← Exploit final com JMP ESP
│
└── images/
└── *.png ← Capturas utilizadas na documentação
Instalação e configuração manual de todas as ferramentas necessárias para o laboratório, com capturas e explicação do porquê de cada uma ser necessária.
| Categoria | Ferramentas |
|---|---|
| Linguagens | Python, Java (JDK) |
| IDEs e editores | Visual Studio Code, Notepad++, PyCharm |
| Análise e debugging | IDA Free, Immunity Debugger, Ghidra |
| Exploração | Mona (plugin para Immunity) |
| Aplicações vulneráveis | VulnServer, FreeFloat FTP Server |
| Rede e utilidades | Nmap / Ncat, Git |
Processo completo de exploração documentado fase a fase, desde o primeiro crash até o controle total do fluxo de execução.
| Fase | Descrição |
|---|---|
| 1 | Preparação do ambiente de exploração |
| 2 | Análise estática do binário com IDA |
| 3 | Fuzzing do comando NOOP |
| 4 | Cálculo do offset com Mona (246 bytes) |
| 5 | Identificação de bad characters (\x00, \x0a, \x0d) |
| 6 | Redirecionamento do fluxo de execução via JMP ESP |
graph LR
A["Entrada controlada: NOP + buffer"] --> B["Buffer Overflow"]
B --> C["Sobrescrita de EIP"]
C --> D["EIP → endereço JMP ESP"]
D --> E["JMP ESP"]
E --> F["ESP → buffer controlado"]
F --> G["NOP sled"]
G --> H["Shellcode"]Entrada controlada (NOOP + buffer)
↓
Buffer Overflow
↓
Sobrescrita de EIP
↓
EIP → endereço de JMP ESP
↓
JMP ESP
↓
ESP → buffer controlado
↓
NOP sled
↓
Shellcode
Este laboratório não se concentra apenas em executar um exploit, mas em compreender o processo completo de análise e exploração de vulnerabilidades.
Este repositório tem fins exclusivamente educativos. Toda a análise e exploração são realizadas sobre software vulnerável em um ambiente controlado e isolado. Não utilize estas técnicas contra sistemas sem autorização expressa.