
FreeFloat FTP Server 1.0 में बफ़र ओवरफ़्लो यह दर्शाता है कि कैसे एक असुरक्षित हैंडलर विभिन्न कमांडों में कई CVE प्रविष्टियाँ उत्पन्न कर सकता है।
FreeFloat FTP सर्वर 1.0 में बफर ओवरफ्लो, यह दर्शाता है कि कैसे एक एकल असुरक्षित हैंडलर विभिन्न कमांडों में कई CVE प्रविष्टियाँ उत्पन्न कर सकता है।
यह रिपॉजिटरी उस सामग्री का हिस्सा है जिसका उपयोग मैं मेमोरी करप्शन शोषण सिखाते समय करता हूँ (अपने नियमित काम के अलावा, मैं विभिन्न साइबर सुरक्षा पाठ्यक्रमों में भी पढ़ाता हूँ जहाँ मैं रिवर्स इंजीनियरों की अगली पीढ़ी को प्रशिक्षित करने में मदद करता हूँ)।
CVE-2025-5548 एक ऐसा मामला है जिसका उपयोग मैं तब करता हूँ जब मैं छात्रों को दिखाना चाहता हूँ कि भेद्यता अनुसंधान एक सुलभ कौशल है, न कि केवल वरिष्ठ शोधकर्ताओं के लिए आरक्षित जिनके पास वर्षों का अनुभव हो। FreeFloat FTP सर्वर 1.0 एक छोटा लीगेसी विंडोज एप्लिकेशन है, जिसे सेट करना, चलाना और क्रैश करना आसान है। ओवरफ्लो एक मानक FTP कमांड के माध्यम से ट्रिगर होता है, शोषण पथ एक साफ वैनिला EIP ओवरराइट है, और फज़िंग से लेकर कार्यशील शेल तक की पूरी प्रक्रिया एक ही सत्र में पूरी की जा सकती है।
यह मामला सीधे मेरी बात "द पैथ दैट लीड्स टू योर फर्स्ट CVE" से भी संबंधित है, जहाँ मैं समझाता हूँ कि शुरुआती लोगों के लिए भेद्यता अनुसंधान में सबसे यथार्थवादी प्रवेश बिंदुओं में से एक पुराने सॉफ़्टवेयर का विश्लेषण करना, यह समझना कि यह आंतरिक रूप से कैसे काम करता है, और उस प्रकार के लापता लंबाई जांच की तलाश करना है जो वास्तव में इस वर्ग की भेद्यता उत्पन्न करती है। FreeFloat उन उदाहरणों में से एक है जिसका उपयोग मैं यह दिखाने के लिए करता हूँ कि वास्तविक बग ढूंढना और उसका दस्तावेजीकरण करने के लिए वर्षों के अनुभव की आवश्यकता नहीं होती, बल्कि जिज्ञासा, एक डीबगर और एक व्यवस्थित दृष्टिकोण की आवश्यकता होती है।
इस मामले को शिक्षण के लिए विशेष रूप से प्रभावी बनाने वाली बात यह है कि यह एक व्यापक पाठ से जुड़ता है कि CVE कैसे असाइन किए जाते हैं। FreeFloat में एक ही असुरक्षित इनपुट हैंडलर कई अलग-अलग FTP कमांडों (USER, PASS, NOOP और अन्य) पर ओवरफ्लो उत्पन्न करता है, जिनमें से प्रत्येक को स्वतंत्र रूप से रिपोर्ट किया गया और अपनी स्वयं की CVE प्रविष्टि प्राप्त हुई। जो छात्र इस बाइनरी के लिए CVE की सूची देखते हैं और दर्जनों प्रविष्टियाँ पाते हैं, वे जल्दी से सीखते हैं कि CVE की संख्या भेद्यता की संख्या के समान नहीं है, और मूल कारण को समझना लक्षणों को सूचीबद्ध करने से अधिक मूल्यवान है।
एक बार जब छात्र इस तरह के मामलों के माध्यम से प्रक्रिया को समझ लेते हैं, तो मैं उन्हें एक वास्तविक उदाहरण देता हूँ कि आगे क्या होता है। बफर ओवरफ्लो और मेमोरी करप्शन का अभ्यास करने के दो सप्ताह बाद, जिस प्रकार की भेद्यता वे खोजने में सक्षम हैं, वह पहले से ही वास्तविक सॉफ़्टवेयर में मौजूद है। निम्नलिखित रिपॉजिटरी एक ऐसी भेद्यता का दस्तावेजीकरण करती है जिसे मैंने विशेष रूप से छात्रों को पूरा चक्र दिखाने के लिए पाया: खोज, विश्लेषण, दस्तावेजीकरण और CVE अनुरोध, कुछ ऐसा जो सीखने के पथ में जल्दी खोजने के लिए पर्याप्त सुलभ हो, जैसे CVE-2025-70330।
यह रिपॉजिटरी एक बड़े संग्रह का हिस्सा है। यदि आप विभिन्न तकनीकों, भेद्यता प्रकारों और लक्ष्य आर्किटेक्चर में शोषण का अभ्यास करना चाहते हैं, तो Binary-Exploitation रिपॉजिटरी देखें, जहाँ यह सभी सामग्री कई और CVE, पद्धतियों और शोषण अभ्यासों के साथ व्यवस्थित और बनाए रखी गई है।
यह भेद्यता FreeFloat FTP सर्वर 1.0 को प्रभावित करती है, जो एक बहुत पुराना विंडोज FTP सर्वर है जो आधुनिक सुरक्षा प्रथाओं के बिना लिखा गया था। 2025 में, एक शोधकर्ता ने इसी बाइनरी को प्रभावित करने वाले कई CVE की रिपोर्ट की।
उदाहरणों में शामिल हैं:
प्रत्येक CVE एक अलग FTP कमांड को संदर्भित करता है, लेकिन जब प्रोग्राम को रिवर्स किया जाता है, तो यह स्पष्ट हो जाता है कि उनमें से कई एक ही असुरक्षित कोड पथ तक पहुँचते हैं।
यह मामले को न केवल एक बफर ओवरफ्लो उदाहरण के रूप में दिलचस्प बनाता है, बल्कि इस प्रदर्शन के रूप में भी कि:
बाइनरी को रिवर्स करते समय, यह देखा जा सकता है कि सभी FTP कमांड एक ही डिस्पैचर फ़ंक्शन द्वारा संसाधित होते हैं। कमांड स्ट्रिंग एक सत्र संरचना के अंदर संग्रहीत की जाती है, और कई कमांड हैंडलर उपयोगकर्ता इनपुट को निश्चित आकार के बफ़र्स में असुरक्षित फ़ंक्शन जैसे strcpy, strcat और memcpy का उपयोग करके कॉपी करते हैं, प्राप्त डेटा की लंबाई की जाँच किए बिना।
इस वजह से, विभिन्न कमांड स्टैक को ओवरराइट कर सकते हैं, भले ही CVE विवरण में केवल एक विशिष्ट कमांड का उल्लेख हो।
उदाहरण के लिए, क्रैश को इसका उपयोग करके ट्रिगर किया जा सकता है:
NOOP AAAAA...
USER AAAAA...
PASS AAAAA...
HOST AAAAA...
ANYTHING AAAAA...
एकमात्र अंतर रिटर्न एड्रेस को ओवरराइट करने के लिए आवश्यक बाइट्स की संख्या है। इसका मतलब है कि इस सॉफ़्टवेयर के लिए रिपोर्ट किए गए कई CVE एक ही मूल कारण साझा करते हैं।
FreeFloat FTP सर्वर TCP पोर्ट 21 पर प्राप्त कमांड को संसाधित करता है और कमांड स्ट्रिंग को एक आंतरिक सत्र संरचना के अंदर संग्रहीत करता है। बाद में, कमांड हैंडलर उपयोगकर्ता-नियंत्रित डेटा को स्थानीय स्टैक बफ़र्स में उचित लंबाई सत्यापन किए बिना कॉपी करता है।
बाइनरी को रिवर्स करते समय, यह देखा जा सकता है कि कई कमांड हैंडलर निश्चित आकार के बफ़र्स और असुरक्षित कॉपी ऑपरेशन का उपयोग करते हैं। असुरक्षित तर्क का एक सरलीकृत संस्करण इस तरह दिखता है:
char buffer[256];
strcpy(buffer, user_input);
चूँकि गंतव्य बफर का एक निश्चित आकार होता है और इनपुट लंबाई की जाँच नहीं की जाती है, एक लंबी स्ट्रिंग भेजने से कॉपी ऑपरेशन बफर के अंत से आगे लिखता है।
जैसे-जैसे अधिक डेटा लिखा जाता है, स्टैक लेआउट दूषित हो जाता है जब तक कि सहेजा गया रिटर्न एड्रेस ओवरराइट नहीं हो जाता।
जब फ़ंक्शन वापस आता है, तो निष्पादन उपयोगकर्ता-नियंत्रित मान पर कूद जाता है, जिसके परिणामस्वरूप क्रैश होता है। डीबगर के तहत, इसे इंस्ट्रक्शन पॉइंटर के हमलावर-नियंत्रित डेटा के साथ ओवरराइट होने के रूप में देखा जा सकता है।
एक मान्य FTP कमांड के बाद एक लंबी स्ट्रिंग भेजकर क्रैश को दोहराया जा सकता है। पायथन का उपयोग करके उदाहरण:
import socket
ip = "127.0.0.1"
port = 21
payload = b"A" * 500
s = socket.socket()
s.connect((ip, port))
s.recv(1024)
s.send(b"USER anonymous\r\n")
s.recv(1024)
s.send(b"PASS anonymous\r\n")
s.recv(1024)
s.send(b"NOOP " + payload + b"\r\n")
s.close()
जब डीबगर के तहत निष्पादित किया जाता है, तो क्रैश दिखाता है:
EIP = 41414141
जो पुष्टि करता है कि उपयोगकर्ता-नियंत्रित डेटा रिटर्न एड्रेस को ओवरराइट करता है।
इस रिपॉजिटरी का उद्देश्य केवल क्रैश दिखाना नहीं है, बल्कि शोषण को विकसित करते समय आमतौर पर उपयोग की जाने वाली उसी पद्धति का उपयोग करके, चरण दर चरण भेद्यता के शोषण की पूरी प्रक्रिया को प्रदर्शित करना भी है।
मुख्य README को साफ रखने के लिए, विस्तृत शोषण नोट्स, स्क्रिप्ट्स और डीबगर चरणों को इस रिपॉजिटरी के Vulnerability 📂 फ़ोल्डर के अंदर रखा गया है।
वहाँ आपको इस CVE का शोषण करने के लिए उपयोग किए जाने वाले पूरे वर्कफ़्लो मिलेंगे, जिसमें फ़ज़िंग, ऑफ़सेट खोज, खराब वर्ण विश्लेषण, गैजेट खोज और शेलकोड निष्पादन शामिल है।