
ماسح ضوئي لثغرة FortiNet CVE-2025-64446
أداة مساعدة بسيطة بلغة بايثون لفحص أهداف FortiWeb/Fortinet بحثًا عن نمط تجاوز المصادقة fwbcgi الذي أبلغ عنه مختبرات watchTowr. جاءت المعلومات وتفاصيل الطلب من: 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://). إذا تم حذف المنفذ، يفترض الماسح المنفذ 80 لـ HTTP أو 443 لـ HTTPS. يُخرج سطرًا واحدًا لكل هدف مع [+] VULNERABLE أو [+] MAY BE VULNERABLE أو [+] PATCHED أو [+] POSSIBLY PATCHED أو [-] INDETERMINATE؛ ويقوم اختياريًا بتسليط الضوء على الكلمات التي تحتوي على "forti".
targets: إدخال واحد أو أكثر <scheme>://<host>[:<port>] في سطر الأوامر (المنافذ الافتراضية 80 لـ HTTP أو 443 لـ HTTPS).-f/--targets-file: قراءة أهداف إضافية من ملف(ملفات)؛ بنفس تنسيق <scheme>://<host>[:<port>].--timeout: مهلة المقبس بالثواني (افتراضي 5).--find-forti: طباعة الرموز الفريدة التي تحتوي على "forti" والتي ظهرت في نص الاستجابة.--follow-redirects: معالجة إعادة التوجيه الاختيارية للأهداف التي تصدر استجابات 30x.--max-redirects: الحد الأقصى لعدد قفزات إعادة التوجيه عند تفعيل --follow-redirects (افتراضي 3، القيمة تعطل المتابعة حتى لو كان العلم موجودًا).نظرًا لعدم وجود بنية تحتية جيدة للاختبار، إليك مجموعة الاختبارات الساذجة التي استخدمتها.
PYTHONPYCACHEPREFIX=./.pycache python3 -m unittest discover -s tests
يعتمد الماسح على دعم TLS 1.2+ للتواصل مع مواقع Fortinet الحديثة أو تلك التي تستخدم Cloudflare. تأكد من أن 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. إذا أظهر إصدارًا أقدم، قم بتثبيت بايثون محدث (pyenv، حزم خلفية للتوزيعة، إلخ).ssl.OPENSSL_VERSION إذا كنت تعمل داخل WSL أو بيئة افتراضية قديمة.إذا كان عليك التشغيل على مفسر بايثون أقدم، فتوقع فشل أهداف HTTPS التي تتطلب TLS 1.3؛ أما أهداف HTTP فستستمر في العمل بغض النظر.
0--validate-tls: فرض التحقق من الشهادة لأهداف HTTPS وعمليات إعادة التوجيه (السلوك الافتراضي يتخطى التحقق لتجنب الحظر على الشهادات الموقعة ذاتيًا).--workers: عدد عمليات الفحص المتزامنة التي يتم تشغيلها عبر asyncio (افتراضي 10).--user-agent: رأس وكيل مستخدم HTTP مخصص (افتراضي fwbcgi-scanner/1.0).--csv-output: كتابة صفوف <target>,<classification> إلى ملف CSV المحدد بالإضافة إلى الإخراج في وحدة التحكم.