Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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 مصممة خصيصًا.

الأكثر شعبية

عرض الكل →

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

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

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

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

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 (الوسيط)، على سبيل المثال:

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

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

x-middleware-subrequest: middleware

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

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


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

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 افتراضيان)

┌───────────────────────────────────────────────────────────┐
│ 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 نقل كود المشروع إلى الجهاز الهدف (اختر أحد الخيارين)

# الطريقة أ: ادفع المشروع إلى 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 تثبيت التبعيات وبناء تطبيق الثغرة بضغطة واحدة

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)

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

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

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)

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

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

تنزيل الأداة