
CVE-2025-47812 POC
Это Proof of Concept (PoC) эксплойта для Wing FTP Server (CVE-2025-47812)
В версиях Wing FTP Server до 7.4.4 присутствовала уязвимость удалённого выполнения кода (RCE) из-за небезопасной обработки параметра имени пользователя. Когда нам разрешён вход на страницу /loginok.html, мы можем внедрить нулевой байт %00,
за которым следует Lua-код, чтобы получить RCE.
Когда мы отправляем POST-запрос на страницу loginok.html, функция c_CheckUser() (та, что проверяет правильность имени пользователя и пароля) использует strlen(). Проблема в том, что используемая функция уязвима к усечению по нулевому байту.
Это означает, что если мы отправим %00 после имени пользователя, c_CheckUser() проверит только ту часть строки, которая находится перед нулевым байтом: "anonymous%00........." --> "anonymous".
После этого приложение создаёт переменную SESSION, которая записывается в файл. Однако этот файл содержит не только имя пользователя, но и всю строку, включая нулевой байт и следующий за ним код. Поскольку файл является Lua-файлом, можно внедрить Lua-код, что приведёт к RCE.
Представьте, что анонимный вход разрешён. Если мы отправим POST-запрос со следующей структурой: username=anonymous%00]]%0dlocal+h+%3d+io.popen("whoami")%0dlocal+r+%3d+h%3aread(\"*a\")%0dh%3aclose()%0dprint(r)%0d--&password=&username_val=anonymous&password_val=, мы внедрим команду после нулевых байтов с помощью Lua-кода. После этого нам нужно скопировать UID из ответа и отправить GET-запрос
на любую аутентифицированную страницу, например на страницу , используя тот же UID.
whoamiСкрипт CVE-2025-47812.py выполняет этот процесс за нас.