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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
vuln-chain-lab — معمل Docker لـ PoC: ربط تجاوز رفع الملفات + XSS المخزن لإنشاء حسابات إدارية. مورد تعليمي لمختبري الاختراق. | Kitploit
أدوات/GitHubGitHub/echosecure/vuln-chain-lab
تحليل الثغرات الأمنيةاستغلال تطبيقات الويبأمن الويبCTFاختبار الاختراقسوء التكوينالتعلم والتعليممختبرات وتدريب عملي
GitHubechosecure/vuln-chain-lab

vuln-chain-lab

معمل Docker لـ PoC: ربط تجاوز رفع الملفات + XSS المخزن لإنشاء حسابات إدارية. مورد تعليمي لمختبري الاختراق.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

تجاوز رفع الملف + XSS مخزّن مختبر إثبات المفهوم

تطبيق ويب ضعيف عن قصد يوضح كيف يرتبط تجاوز رفع الملف مع XSS المخزّن لإنشاء حسابات مدير خلفية، حتى مع وجود حماية CSP وCORS وCSRF.

المقالة كاملة: مدونة KurtiseBear

هذا مختبر تعليمي للتدريب على الأمن الدفاعي. لا تنشره في أي مكان يمكن الوصول إليه علنًا.

ما يوضحه هذا المختبر

يحتوي التطبيق على ضوابط أمنية حقيقية:

  • سياسة أمان المحتوى (CSP) تقيد مصادر البرامج النصية إلى 'self' (ولكن مع السماح بـ 'unsafe-inline' و 'unsafe-eval')
  • لا توجد رؤوس CORS مرسلة، لذا يتم حظر الطلبات عبر المصادر بواسطة المتصفحات
  • رموز CSRF على جميع إرسالات النماذج (الرسائل، رفع الملفات)
  • رؤوس أمان قياسية (X-Content-Type-Options, X-Frame-Options, Referrer-Policy)

مُهاجم لديه حساب مستخدم بامتيازات منخفضة يربط بين ثغرتين لتجاوزها جميعًا:

  1. تجاوز رفع الملف – يقتصر نموذج الرفع على .pdf عبر خاصية accept من جانب العميل، لكن الخادم لا يقوم بأي تحقق من نوع الملف. يقوم المهاجم برفع ملف يحتوي على JavaScript. يقوم نقطة نهاية التحميل بتقديمه من نفس المصدر، لذا لا تمنعه CSP وCORS.

.js
  • XSS مخزّن عبر موضوع الرسالة – تقوم ميزة المراسلة بتخزين إدخال المستخدم دون تعقيم. يعرض صندوق الوارد الخاص بالمشرف موضوع الرسالة كـ HTML خام. يستخدم حمولة XSS معالج `` لجلب البرنامج النصي المرفوع وتنفيذه عبر eval(). تسمح CSP بذلك لأن 'unsafe-inline' و 'unsafe-eval' مسموح بهما.

  • غياب CSRF في نقطة نهاية API – لا تتحقق API إدارة المستخدم (/api/manage-user.php) من رموز CSRF، على الرغم من أن نقاط نهاية النماذج تفعل ذلك. تستدعي حمولة XSS هذه API باستخدام جلسة المشرف من نفس المصدر. حتى لو كان CSRF موجودًا، يمكن لـ JavaScript من نفس المصدر قراءة الرمز من DOM.

  • النتيجة: عندما يفتح المشرف صندوق الوارد الخاص به، ينطلق XSS، ويقوم JavaScript بإنشاء حساب مدير خلفي باستخدام جلسة المشرف. جميع الدفاعات موجودة وفعالة. يعمل السلسل لأنه لا يغادر المصدر أبدًا.

    المتطلبات الأساسية

    • Docker
    • Docker Compose

    الإعداد

    root@kitploit:~
    docker-compose up -d
    

    انتظر 10-15 ثانية حتى يتم تهيئة MySQL، ثم قم بزيارة http://localhost:8080

    بيانات الاعتماد

    الدورالبريد الإلكترونيكلمة المرور
    مشرف[email protected]admin
    مستخدم[email protected]user

    دليل الهجوم

    الخطوة 1: تسجيل الدخول كمستخدم عادي

    انتقل إلى http://localhost:8080 وسجل الدخول باستخدام [email protected] / user.

    الخطوة 2: رفع الحمولة

    اذهب إلى رفع الملفات. يقول النموذج "PDF فقط" لكنه يفرض ذلك فقط من جانب العميل. إما:

    • استخدم أدوات المطور في المتصفح لإزالة الخاصية accept=".pdf" من حقل الملف، أو
    • استخدم curl/Burp للرفع مباشرة (ستحتاج إلى تضمين رمز CSRF من النموذج)

    قم برفع payload.js المقدم (أو الخاص بك). لاحظ معرف الملف الذي تم إرجاعه (مثل 1).

    الملف المرفوع يُقدَّم الآن من /api/download.php?file_id=1 على نفس المصدر. لن تمنع CSP الجلب إلى هذه النقطة لأنها 'self'.

    الخطوة 3: صياغة رسالة XSS

    اذهب إلى إرسال رسالة. في حقل الموضوع، أدخل:

    root@kitploit:~
    r.blob()).then(b=>b.text()).then(eval)">
    

    (استبدل 1 بمعرف الملف الفعلي من الخطوة 2.)

    ضع أي شيء في النص. حدد أولوية إذا كنت تريدها في أعلى صندوق الوارد. أرسل.

    يعمل معالج onerror لأن CSP تسمح بـ 'unsafe-inline'. تعمل eval() لأن CSP تسمح بـ 'unsafe-eval'. يعمل الجلب إلى نقطة نهاية التحميل لأنه من نفس المصدر.

    الخطوة 4: انتظار المشرف لفحص صندوق الوارد الخاص به

    سجل الخروج. سجل الدخول كـ [email protected] / admin. اذهب إلى صندوق الوارد.

    يتم عرض موضوع الرسالة كـ HTML خام. فشل تحميل علامة ``، ينطلق معالج onerror، يجلب الحمولة المرفوعة، ويقوم eval() بتنفيذها. تقوم الحمولة بـ POST إلى /api/manage-user.php باستخدام كعكة جلسة المشرف (المرفقة تلقائيًا للطلبات من نفس المصدر). لا حاجة لرمز CSRF لأن نقطة نهاية API لا تتحقق من ذلك.

    الخطوة 5: التحقق من الباب الخلفي

    اذهب إلى المستخدمين. يجب أن ترى مستخدمًا جديدًا: BackdoorAdmin بدور admin وبريد إلكتروني [email protected].

    سجل الخروج وسجل الدخول باستخدام [email protected] / Compromised1! للتأكيد.

    لماذا فشلت الدفاعات

    root@kitploit:~
    CSP يمنع البرامج النصية الخارجية
      --> لكن الحمولة مستضافة على نفس المصدر عبر رفع الملف
      --> و unsafe-inline/unsafe-eval يسمحان بمعالج onerror و eval()
    
    CORS يمنع الطلبات عبر المصادر
      --> لكن كل طلب في السلسلة هو من نفس المصدر
    
    رموز CSRF تحمي إرسالات النماذج
      --> لكن نقطة نهاية API لا تتحقق منها
      --> وحتى لو فعلت، يمكن لـ JS من نفس المصدر قراءة الرموز من DOM
    
    كعكات الجلسة لديها حماية قياسية
      --> لكن طلبات نفس المصدر تحملها تلقائيًا
    

    جميع الدفاعات تعمل بشكل صحيح. إنها مصممة لوقف الهجمات عبر المصادر. هذه السلسلة لا تغادر المصدر أبدًا.

    الإجراءات الدفاعية

    ما من شأنه كسر هذه السلسلة بالفعل:

    1. التحقق من نوع الملف على الخادم – تحقق من نوع MIME وامتداد الملف و bytes السحرية. لا تثق بالعميل. هذا يمنع المهاجم من استضافة حمولة على مصدرك.
    2. ترميز المخرجات – استخدم htmlspecialchars() على جميع المخرجات التي يتحكم بها المستخدم. يقوم صندوق الوارد بعرض $row['subject'] خامًا. هذا يقضي على XSS تمامًا.
    3. CSP صارم – أزل 'unsafe-inline' و 'unsafe-eval'. استخدم nonces أو hashes للبرامج النصية الداخلية المشروعة. هذا يمنع معالج onerror و eval().
    4. Content-Disposition: attachment – فرض التنزيل بدلاً من العرض المضمّن للملفات التي رفعها المستخدم. هذا يمنع المتصفح من تفسير المحتوى المرفوع.
    5. CSRF على جميع نقاط النهاية التي تغير الحالة – بما في ذلك نقاط نهاية API، وليس فقط النماذج.
    6. ضوابط الوصول على الرفع – تقدم API التحميل أي ملف لأي مستخدم مصادق. يجب أن تكون الملفات مقيدة بمالكها.

    التنظيف

    root@kitploit:~
    docker-compose down -v
    

    إخلاء مسؤولية

    هذا التطبيق ضعيف عن قصد. صُمم لأغراض تعليمية وتدريب على الأمن الدفاعي فقط. لا تنشره على أي شبكة يمكن للمستخدمين غير الموثوقين الوصول إليها. لا تستخدم هذه التقنيات ضد أنظمة دون إذن كتابي صريح.

    تنزيل الأداة