
特定のFortinetデバイスにおける重大な認証バイパスの脆弱性(CVE-2024-55591)を発見し悪用するための、包括的なオールインワンのPythonベースの概念実証スクリプトです。
CVE-2024-55591の認証バイパス脆弱性を発見・悪用するための、包括的なオールインワンPythonベースのProof of Conceptスクリプト。このスクリプトは以下の機能を備えています:
CVE-2024-55591は、特定のFortinet製品(FortiOSおよびFortiProxy)における重大な認証バイパス脆弱性です。WebSocket/Telnet管理インターフェースの欠陥を悪用することで、攻撃者は有効な認証情報なしで特権CLIアクセスを取得できます。
Fortinet PSIRT勧告(FG-IR-24-535)によると、以下のバージョンが影響を受けることが確認されています:
git clone https://github.com/exfil0/CVE-2024-55591-POC.git
cd CVE-2024-55591-POC
python3 attack.py
実行すると、スクリプトは自動的に不足しているPython依存関係(requests、urllib3)をチェックし、インストールを試みます。
以下の項目の入力を求められます:
確認後、スクリプトは接続性をテストし、脆弱性を確認し、接続をWebSocketにアップグレードし、認証バイパスを試みます。
起動時に、このスクリプトはrequestsとurllib3が存在するかチェックします。不足している場合は、pip経由でインストールを試みます。
選択すると、スクリプトはnmap -sS -p- --min-rate 500 <host>を実行してオープンTCPポートを発見し、その後次のいずれかを実行します:
複数のポートがオープンとして発見された場合、スクリプトにすべてをテストするように指示できます。これは、Fortinetサービスが標準以外のポートでリッスンしている場合に便利です。
エクスプロイトが成功した場合、同じTelnetセッション内で追加のコマンドをオプションで実行できます。例えば:
diag sys topdiag debug crashlog readexecute shellこれらのポストエクスプロイトコマンドはスクリプト内で変更し、より高度なデータを収集できます。
スクリプトはget system statusまたはget system infoの出力からデバイスのバージョンを解析しようと試みます。既知の脆弱性範囲に一致する場合、通知します。
192.168.1.50y(はい)でオープンポートを発見yget system statusyまたはnNmapが複数のオープンポートを発見した場合、すべてのポートを自動的にテストするか、特定のポートを選択できます。
/login?redir=/ngがFortinetの管理インターフェースを返すかチェックservice-worker.js?local_access_token=ScaryBYteに部分文字列api/v2/staticが含まれているかチェックget system statusなどのコマンドを実行可能ポストエクスプロイトモードが有効な場合、スクリプトは追加のデバッグまたはシステムコマンドを送信します。出力は収集され、コンソールに表示されます。
このProof of Conceptスクリプトは教育およびテスト目的でのみ提供されています。明示的な許可なくシステムを不正に悪用することは違法です。システムをスキャンまたはテストする前に、適切な承認を得ていることを必ず確認し、パッチ情報についてはFortinetの勧告(FG-IR-24-535)を参照してください。