
CVE-2024-23113 का पता लगाने के लिए Python स्क्रिप्ट, जो FortiGate FGFM सेवा में TCP/541 पर एक फॉर्मेट स्ट्रिंग भेद्यता है, SSL कनेक्शन और मेमोरी क्षति को ट्रिगर करने के लिए तैयार पेलोड का उपयोग करती है।
यह स्क्रिप्ट CVE-2024-23113 का पता लगाने के लिए डिज़ाइन की गई है, जो FortiGate FGFM सेवा (FortiGate से FortiManager प्रोटोकॉल) में एक फ़ॉर्मेट स्ट्रिंग भेद्यता है जो TCP पोर्ट 541 पर चलती है। यह भेद्यता इसलिए होती है क्योंकि एक हमलावर एक फ़ॉर्मेट स्ट्रिंग को नियंत्रित कर सकता है, जिससे रिमोट कोड निष्पादन (RCE) या अन्य अनपेक्षित व्यवहार हो सकते हैं। FGFM सेवा कॉन्फ़िगरेशन प्रबंधन के लिए FortiGate उपकरणों और FortiManager के बीच संचार की अनुमति देती है, और एक अप्रतिबंधित संस्करण में इनपुट का अनुचित हैंडलिंग है, जो इसे फ़ॉर्मेट स्ट्रिंग शोषण के प्रति संवेदनशील बनाता है। स्क्रिप्ट कैसे काम करती है
नेटवर्क कनेक्शन सेटअप:
स्क्रिप्ट पहले पोर्ट 541 पर लक्ष्य के लिए एक SSL/TLS कनेक्शन स्थापित करती है।
यह कनेक्शन स्थापित करने के लिए प्रमाणपत्र सत्यापन अक्षम के साथ `ssl.SSLContext` ऑब्जेक्ट का उपयोग करता है, क्योंकि डिवाइस में स्व-हस्ताक्षरित प्रमाणपत्र हो सकते हैं।
पेलोड निर्माण:
एक बार कनेक्ट होने के बाद, स्क्रिप्ट एक फ़ॉर्मेट स्ट्रिंग शोषण (`authip=%n`) का उपयोग करके एक दुर्भावनापूर्ण पेलोड तैयार करती है। `%n` निर्देश सिस्टम को अब तक आउटपुट बाइट्स की संख्या को एक वेरिएबल में लिखने का निर्देश देता है, जो संभावित रूप से मेमोरी भ्रष्टाचार का कारण बन सकता है।
तैयार किया गया पेलोड स्थापित कनेक्शन के माध्यम से लक्ष्य को भेजा जाता है।
डिटेक्शन लॉजिक:
स्क्रिप्ट फिर पेलोड के जवाब में लक्ष्य के व्यवहार की जांच करती है।
यदि कनेक्शन अचानक समाप्त हो जाता है और एक SSL अलर्ट उठाया जाता है, तो यह सुझाव देता है कि लक्ष्य संवेदनशील है क्योंकि इसने फ़ॉर्मेट स्ट्रिंग भेद्यता सुरक्षा तंत्र (जैसे, glibc में `_FORTIFY_SOURCE`) को ट्रिगर किया।
यदि कनेक्शन खुला रहता है, तो लक्ष्य संभवतः पैच किया गया है।
उपयोग निर्देश
स्क्रिप्ट चलाएं:
Python 3 के साथ स्क्रिप्ट को इस प्रकार चलाएं:
sh
python check_vulnerability.py
होस्टनेम/आईपी दर्ज करें:
आपको एक होस्टनेम या आईपी पता दर्ज करने के लिए संकेत दिया जाएगा ताकि जांचा जा सके कि यह संवेदनशील है या नहीं।
यदि आप रुकना चाहते हैं, तो `exit` टाइप करें।
आउटपुट:
यदि लक्ष्य संवेदनशील है, तो स्क्रिप्ट आउटपुट करेगी:
[!] Warning: is vulnerable!
यदि लक्ष्य पैच किया गया है, तो यह आउटपुट करेगी:
[+] <hostname> appears to be patched.
आवश्यकताएँ
स्क्रिप्ट चलाने वाली मशीन पर Python 3 स्थापित होना चाहिए।
लक्ष्य डिवाइस तक नेटवर्क पहुंच, यह सुनिश्चित करते हुए कि पोर्ट 541 खुला है।
लक्ष्य डिवाइस पर FGFM सेवा चल रही होनी चाहिए।