
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 を想定します。ターゲットごとに 1 行出力し、[+] VULNERABLE、[+] MAY BE VULNERABLE、[+] PATCHED、[+] POSSIBLY PATCHED、または [-] INDETERMINATE を表示します。オプションで、「forti」を含む単語を強調表示します。
targets: コマンドライン上の 1 つ以上の <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 の場合はフラグが存在してもフォロー無効)。適切なテストインフラが不足しているため、ここに使用した簡易テストスイートを示します。
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 ターゲットは引き続き動作します。
--validate-tls: HTTPS ターゲットおよびリダイレクトに対して証明書検証を強制します (デフォルトの動作では、自己署名証明書によるブロックを避けるため検証をスキップします)。--workers: asyncio で実行する同時スキャン数 (デフォルト 10)。--user-agent: カスタム HTTP User-Agent ヘッダー (デフォルト fwbcgi-scanner/1.0)。--csv-output: コンソール出力に加えて、<target>,<classification> 行を指定された CSV ファイルに書き込みます。