Sploitus

Exploit for CVE-2025-47812

kitploit · 2026-09-05

Exploit Code

MARKDOWN18 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHADOWGIT30-CVE-2025-47812
# CVE-2025-47812

Это 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.