
Next.js والـ middleware الفاسد...حاول اختراقها..!
هذا مشروع Next.js نموذجي تم إعداده باستخدام [create-next-app] لشرح عملي لكيفية عمل cve-2025-29927. (https://nextjs.org/docs/app/api-reference/cli/create-next-app).
أولًا، شغّل خادم التطوير:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
افتح http://localhost:3000 في متصفحك لمشاهدة النتيجة.
الآن يمكنك استخدام Burp أو إضافات المتصفح الأخرى لتعديل الترويسات واستغلال Middleware باستخدام الحمولة.

عندما يستخدم تطبيق next.js وسيطًا (middleware)، يتم استخدام الدالة runMiddleware، وهذه الأخيرة - بالإضافة إلى وظيفتها الرئيسية - تسترجع قيمة الترويسة x-middleware-subrequest وتستخدمها لمعرفة ما إذا كان يجب تطبيق الوسيط أم لا. يتم تقسيم قيمة الترويسة لإنشاء قائمة باستخدام النقطتين الرأسيتين (:) كفاصل، ثم تتحقق مما إذا كانت هذه القائمة تحتوي على قيمة middlewareInfo.name.
هذا يعني أنه إذا أضفنا الترويسة x-middleware-subrequest بالقيمة الصحيحة إلى طلبنا، فسيتم تجاهل الوسيط تمامًا - مهما كان الغرض منه - وسيتم توجيه الطلب عبر NextResponse.next() وسيكمل رحلته إلى وجهته الأصلية دون أن يكون للوسيط أي تأثير عليه. تعمل الترويسة وقيمتها كمفتاح شامل يسمح بتجاوز القواعد. في هذه المرحلة، ندرك بالفعل أننا عثرنا للتو على شيء مذهل.
Uploading next-middleware-2.png…
لاحظ أننا نستخدم "next": "14.0.4" هنا.