
FortiNet भेद्यता CVE-2025-64446 के लिए एक स्कैनर
Fortinet/FortiWeb लक्ष्यों में watchTowr Labs द्वारा रिपोर्ट किए गए fwbcgi प्रमाणीकरण बाईपास पैटर्न की जाँच करने के लिए सरल Python सहायक उपकरण। खुफिया जानकारी और अनुरोध विवरण यहाँ से लिए गए: https://labs.watchtowr.com/when-the-impersonation-function-gets-used-to-impersonate-users-fortinet-fortiweb-auth-bypass/
python3 scanner.py http://192.168.9.1:80
python3 scanner.py -f targets.txt --find-forti --follow-redirects
लक्ष्यों में उनका स्कीम स्पष्ट रूप से शामिल होना चाहिए (http:// या https://)। यदि पोर्ट छोड़ दिया गया है, तो स्कैनर HTTP के लिए 80 या HTTPS के लिए 443 मान लेता है। प्रति लक्ष्य एक पंक्ति आउटपुट करता है जिसमें [+] VULNERABLE, , , , या होता है; वैकल्पिक रूप से “forti” युक्त शब्दों को हाइलाइट करता है।
[+] MAY BE VULNERABLE[+] PATCHED[+] POSSIBLY PATCHED[-] INDETERMINATEtargets: कमांड लाइन पर एक या अधिक <scheme>://<host>[:<port>] प्रविष्टियाँ (पोर्ट HTTP के लिए डिफ़ॉल्ट रूप से 80 या HTTPS के लिए 443 होते हैं)।-f/--targets-file: फ़ाइल(फ़ाइलों) से अतिरिक्त लक्ष्य पढ़ें; वही <scheme>://<host>[:<port>] प्रारूप।--timeout: सेकंड में सॉकेट टाइमआउट (डिफ़ॉल्ट 5)।--find-forti: प्रतिक्रिया निकाय में दिखाई देने वाले “forti” युक्त अद्वितीय टोकन प्रिंट करें।--follow-redirects: 30x प्रतिक्रियाएँ देने वाले लक्ष्यों के लिए वैकल्पिक रीडायरेक्ट हैंडलिंग।--max-redirects: जब --follow-redirects सक्रिय हो तो रीडायरेक्ट हॉप्स की सीमा (डिफ़ॉल्ट 3, 0 फ्लैग मौजूद होने पर भी फॉलो करना अक्षम कर देता है)।--validate-tls: HTTPS लक्ष्यों और रीडायरेक्ट के लिए प्रमाणपत्र सत्यापन बाध्य करें (डिफ़ॉल्ट व्यवहार self-signed प्रमाणपत्रों पर अटकने से बचने के लिए सत्यापन छोड़ देता है)।--workers: asyncio के माध्यम से चलाए जाने वाले समवर्ती स्कैन की संख्या (डिफ़ॉल्ट 10)।--user-agent: कस्टम HTTP User-Agent हेडर (डिफ़ॉल्ट fwbcgi-scanner/1.0)।--csv-output: कंसोल आउटपुट के अतिरिक्त दिए गए CSV फ़ाइल में <target>,<classification> पंक्तियाँ लिखें।अच्छे परीक्षण बुनियादी ढांचे की कमी के कारण, यहाँ वह साधारण परीक्षण सूट है जो मैंने उपयोग किया।
PYTHONPYCACHEPREFIX=./.pycache python3 -m unittest discover -s tests
स्कैनर आधुनिक Fortinet या Cloudflare-फ्रंटेड साइटों से बात करने के लिए TLS 1.2+ समर्थन पर निर्भर करता है। सुनिश्चित करें कि आप जो python3 चला रहे हैं वह हाल ही के OpenSSL बिल्ड से लिंक हो:
/usr/bin/python3) LibreSSL 2.8 से जुड़ा है और TLS 1.3 पर बातचीत नहीं कर सकता, जिससे TLSV1_ALERT_PROTOCOL_VERSION त्रुटियाँ उत्पन्न होती हैं। Homebrew (brew install python) या pyenv के माध्यम से एक आधुनिक इंटरप्रेटर स्थापित करें और स्कैनर को उस बाइनरी के साथ चलाएँ (जैसे, /opt/homebrew/bin/python3)।python3 - <<'PY'\nimport ssl; print(ssl.OPENSSL_VERSION)\nPY के साथ सत्यापित करें। यदि यह कुछ पुराना रिपोर्ट करता है, तो एक अपडेटेड python स्थापित करें (pyenv, डिस्ट्रो बैकपोर्ट, आदि)।ssl.OPENSSL_VERSION स्निपेट के माध्यम से दोबारा जाँच करें।यदि आपको किसी पुराने इंटरप्रेटर पर चलाना ही है, तो उम्मीद करें कि TLS 1.3 की आवश्यकता वाले HTTPS लक्ष्य विफल होंगे; HTTP लक्ष्य बिना किसी परवाह के काम करते रहेंगे।