
CVE-2025-47812 POC
यह Wing FTP Server Exploit (CVE-2025-47812) का एक प्रूफ ऑफ कॉन्सेप्ट (PoC) है।
Wing FTP Server संस्करण 7.4.4 से पहले के संस्करणों में उपयोगकर्ता नाम पैरामीटर के असुरक्षित व्यवहार के परिणामस्वरूप एक रिमोट कोड निष्पादन (RCE) भेद्यता थी। जब हमें /loginok.html पेज पर लॉगिन करने की अनुमति मिलती है, तो हम RCE प्राप्त करने के लिए नल बाइट्स %00 और उसके बाद Lua कोड इंजेक्ट कर सकते हैं।
जब हम loginok.html पेज पर POST अनुरोध भेजते हैं तो 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 कोड का उपयोग करके नल बाइट्स के बाद whoami कमांड इंजेक्ट कर दिया होगा। एक बार ऐसा करने के बाद, हमें प्रतिक्रिया के UID को कॉपी करना होगा और उसी UID का उपयोग करके किसी भी प्रमाणित पृष्ठ पर GET अनुरोध भेजना होगा, उदाहरण के लिए dir.html पेज।
CVE-2025-47812.py स्क्रिप्ट हमारे लिए यह प्रक्रिया करती है।