
Wing FTP Server Эксплойт удаленного выполнения кода (RCE) (CVE-2025-47812)
Wing FTP Server Удаленное выполнение кода (RCE) Эксплойт (CVE-2025-47812)
📌 Авторство: Уязвимость обнаружена Julien (@MrTuxracer).
Эта реализация PoC основана на их оригинальном исследовании.
Этот репозиторий содержит Python-эксплойт для уязвимости Wing FTP Server удаленное выполнение кода (RCE) (CVE-2025-47812). Эта критическая ошибка позволяет атакующим добиться удаленного выполнения кода с правами root/SYSTEM на уязвимых экземплярах Wing FTP Server, даже при включенном анонимном доступе.
Эта уязвимость возникает из-за некорректной обработки Wing FTP Server нулевых байтов (NULL) в параметре имени пользователя во время процесса аутентификации. Это позволяет атакующим внедрять Lua-код непосредственно в файлы сессий. Затем эти вредоносные файлы сессий выполняются при загрузке действительной сессии, что приводит к выполнению произвольных команд на сервере.
Ключевые особенности этого эксплойта:
Этот инструмент предназначен строго для образовательных целей и авторизованного тестирования на проникновение. Автор не несет ответственности за любое неправомерное использование или ущерб, причиненный этим программным обеспечением. Всегда убедитесь, что у вас есть явное письменное разрешение перед проведением любых тестов системы.
Эта уязвимость была обнаружена и подробно задокументирована Julien (@MrTuxracer). См. оригинальную статью:
What the NULL?! Wing FTP Server RCE (CVE-2025-47812)
Уязвимость CVE-2025-47812 является критической проблемой, возникающей из-за множества слабых мест в том, как Wing FTP Server управляет аутентификацией пользователей и сессиями:
c_CheckUser(): Функция c_CheckUser(), отвечающая за аутентификацию пользователя, внутренне использует strlen() для предоставленного имени пользователя. Когда в имя пользователя внедряется нулевой байт (%00) (например, anonymous%00...), strlen() усекает строку в этой точке. Это означает, что аутентификация проходит успешно для части имени пользователя до нулевого байта, фактически обходя надлежащую проверку.rawset(_SESSION, "username", username) внутри loginok.html использует полное, неочищенное имя пользователя непосредственно из параметров GET или POST. Это включает нулевой байт и все последующие символы.anonymous%00]]%0dlocal+h+%3d+io.popen("id")%0dlocal+r+%3d+h%3aread("*a")%0dh%3aclose()%0dprint(r)%0d--) приводит к записи этого вредоносного кода непосредственно в файл сессии.SessionModule.load(), вызываемая при доступе к любой аутентифицированной функциональности (например, /dir.html), напрямую выполняет файл сессии с помощью loadfile(filepath) с последующим f(). Этот решающий шаг запускает внедренный Lua-код, что приводит к удаленному выполнению кода.Эта уязвимость особенно серьезна, поскольку Wing FTP Server часто работает с правами root в Linux или привилегиями SYSTEM в Windows по умолчанию. Такая стандартная конфигурация предоставляет атакующим максимальный контроль над скомпрометированной системой после успешной эксплуатации.
Затронутые версии: Версии Wing FTP Server до 7.4.4 уязвимы.
Этот скрипт поддерживает различные аргументы командной строки для настройки функциональности.
python3 CVE-2025-47812.py -h
usage: CVE-2025-47812.py.py [-h] [-u URL] [-f FILE] [-c COMMAND] [-v] [-o OUTPUT] [-U USERNAME]
Скрипт эксплойта для инъекции команд через login.html.
options:
-h, --help показать это справочное сообщение и выйти
-u URL, --url URL Целевой URL (например, [http://192.168.134.130](http://192.168.134.130)). Обязателен, если не указан -f.
-f FILE, --file FILE Файл со списком целевых URL (по одному на строку).
-c COMMAND, --command COMMAND
Пользовательская команда для выполнения. По умолчанию: whoami. Если указано, подробный вывод включается автоматически.
-v, --verbose Показывать полный вывод команды (подробный режим). Игнорируется, если используется -c, так как подробный режим включается автоматически.
-o OUTPUT, --output OUTPUT
Файл для сохранения уязвимых URL.
-U USERNAME, --username USERNAME
Имя пользователя для использования в полезной нагрузке эксплойта. По умолчанию: anonymous
python3 CVE-2025-47812.py -u http://192.168.134.130 -c ipconfig
