Исследование безопасности и воспроизведение CVE-2025-5548: Стековое переполнение буфера в FreeFloat FTP Server 1.0. Включает анализ бинарного кода, воспроизведение сбоя и настройку окружения для исследования уязвимостей.
Профессиональное исследование и разработка эксплойта для классического переполнения буфера на стеке в FreeFloat FTP Server 1.0. Эта лабораторная работа демонстрирует переход от бинарного реверс-инжиниринга к полностью функциональному RCE.
В этом репозитории документируется анализ и эксплуатация CVE-2025-5548. Хотя современные системы имеют продвинутые средства защиты, анализ устаревшего ПО, такого как FreeFloat FTP, остаётся фундаментальной основой для исследователей безопасности.
Исследование следует принципам, описанным в докладе «The Path That Leads to Your First CVE», где подчёркивается, что реверс-инжиниринг старых десктопных приложений — самый реалистичный вход для начинающих в данной области.
[Фаззинг] ──► [Управление EIP] ──► [Анализ «плохих» символов] ──► [Gadget JMP ESP] ──► [RCE]
NOOP\x00\x0a\x0d), нарушающих полезную нагрузку.JMP ESP для перенаправления выполнения на пользовательский shellcode от Metasploit.| Компонент | ОС / Версия | Роль |
|---|---|---|
| Целевой сервер | Windows 10/11 (VM) | FreeFloat FTP Server 1.0 |
| Компьютер атакующего | Kali Linux / Windows | Доставка эксплойта (Python 3) |
| Отладчик | Immunity Debugger | Динамический анализ и Mona.py |
| Дисассемблер | IDA Pro 8.4 | Статический анализ и реверс-инжиниринг |
Примечание: Все тесты проводились в изолированном сетевом сегменте «host-only».
| Категория | Инструменты |
|---|---|
| Реверс-инжиниринг | IDA Pro, Immunity Debugger |
| Эксплуатация | Python 3 (Socket), Mona.py, Metasploit (msfvenom) |
| Методология | Переполнение буфера на стеке |
| Ссылка | TheMalwareGuardian - CVE-2025-5548 |
| Директория | Содержимое | Статус |
|---|---|---|
| 01-Environment | Инструкции по настройке лаборатории и отладчика. | ✅ Готово |
| 02-Exploitation | Основная методология: Пошаговая разработка эксплойта. | ✅ Готово |
| Exploits | Полный набор Python-скриптов (от фаззинга до shellcode). | ✅ Готово |
| 03-Images | Документация по крашам, смещениям и гаджетам. | ✅ Готово |
Уязвимость существует из-за того, что сервер обрабатывает команды с использованием небезопасных функций языка C (например, strcpy) без надлежащей проверки длины.
// Упрощённое представление уязвимого обработчика
char buffer[256];
strcpy(buffer, user_input); // Без проверки границ
При отправке длинной строки через команду NOOP происходит переполнение локального буфера стека, что в конечном итоге перезаписывает сохранённый обратный адрес. Управляя этим адресом, мы можем перенаправить выполнение CPU на наши собственные инструкции.
Особая благодарность TheMalwareGuardian за его исследования устаревших уязвимостей и образовательный подход к исследованию безопасности.