
意図的に脆弱性を持たせたNext.jsアプリケーションで、CVE-2025-29927の認証バイパスをミドルウェアWAF回避を通じて実証します。MySQLバックエンドとJWT認証を備え、セキュリティ研究、ペネトレーションテストラボ、責任ある開示デモ向けに設計されています。
これは、CVE-2025-29927 を実証する脆弱な Next.js アプリケーション です。この脆弱性は、不適切な入力処理やアクセス制御の欠陥がある Next.js を使用するWebアプリケーションで特定されたセキュリティ上の欠陥です。
このプロジェクトは MySQL バックエンドと JWT 認証を使用しており、教育およびテスト目的のみ(ペネトレーションテストラボ、責任ある開示デモ、セキュリティ研究など)を対象としています。
users.csv のテストアカウントのパスワードは「123456」で、JWT 認証のシークレットキー「JWT_SECRET」はファイル「.env.local」に追加されており、この公開リポジトリで意図的に共有されています。これは本番環境で使用される JWT トークンではありません。これはデプロイとテストを簡素化するためです。
JWT のシークレットキーは自分で生成したものに置き換えることもできますが、JWT 認証が機能するためには .env ファイルが存在する必要があります。
⚠️ 免責事項: このプロジェクトは意図的に脆弱です。本番環境にデプロイしないでください。教育目的でのみ、隔離または管理された環境で使用してください。
YouTube でこのプロジェクトのセットアップ方法に関する完全なセットアップとデモガイドをご覧ください:
▶️ [https://www.youtube.com/watch?v=Akb3R34QnM8&t=482s]
YouTube で脆弱性がどのように悪用されるかの完全なデモをご覧ください: ▶️ [https://www.youtube.com/watch?v=3OPWodc2lx4]
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927.git
cd NextJS-CVE-2025-29927
npm install
MySQL データベースを作成し、接続詳細を更新してください:
/database/index.js
簡単なセットアップ方法は、このリポジトリで共有されている csv ファイルを使用してテーブルを作成することです。使用されるユーザー名アカウントはすべて同じパスワードを使用します。パスワードは「123456」です。詳細と手順については、YouTube ビデオをご覧ください。
以下のような例を使用することもできます。 例:
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'yourpassword',
database: 'cve_demo'
});
その後、database/schema.sql からスキーマをインポートするか、独自のセットアップスクリプトを実行してください。
npm run dev
ブラウザで http://localhost:3000 にアクセスしてアプリを表示します。
このアプリケーションには、WAF(Web アプリケーションファイアウォール)として機能する NextJS ミドルウェアと、攻撃者が 認証バイパス、ローカルファイルインクルード、または 不適切なアクセス制御 に関連する脆弱性を悪用できるようにする脆弱なバージョンの next 13.4.9 が含まれています。目的は、研究者がこの CVE がどのように悪用されるか、およびその軽減方法を理解するのに役立つことです。
このプロジェクトは MIT ライセンス の下でライセンスされています。