
مختبر شامل لثغرات Java يتضمن كوداً مصاباً وكوداً مُصلحاً، وسيناريوهات هجوم، وملاحظات تدقيق المصدر/المصب، وإرشادات الترميز الآمن للتدريب الأمني وتقييم الأدوات.
JavaSecLab - مختبر شامل لثغرات JavaJavaSecLab هو مختبر شامل لثغرات Java مخصص لتعلم أمن التطبيقات، وممارسة تدقيق الكود، والتدريب على التطوير الآمن، وتقييم أدوات الأمان. بُني على Spring Boot، ويوفر كوداً يحتوي على ثغرات، وتطبيقات مُصلحة، وسيناريوهات هجوم واقعية، وملاحظات تدقيق موجّهة للمصادر ونقاط الحقن (source and sink)، وإرشادات المعالجة، وشرحاً للترميز الآمن، وأمثلة لتحليل حركة المرور.
الهدف عملي: مساعدة المستخدمين على فهم ليس فقط كيفية استغلال الثغرة، بل أيضاً سبب وجودها في الكود وكيفية إصلاحها.


يغطي JavaSecLab مجموعة واسعة من سيناريوهات أمان تطبيقات الويب في Java، بما في ذلك:
موقع العرض التجريبي: http://whgojp.top/
الحساب الافتراضي: admin/admin
JavaSecLab مصمم عمداً ليكون قابلاً للاستغلال ويحتوي على نقاط نهاية خطيرة وتبعيات بها ثغرات وإعدادات غير آمنة. شغّل نسختك الخاصة فقط في بيئة معزولة. لا تعرّضه مباشرةً للإنترنت العام.
عمل المؤلف في أدوار أمنية داخل المؤسسات وخاض دورة حياة الثغرة كاملة. بعد اختبارات الاختراق أو تقييمات الأمان، غالباً ما تُسند الثغرات إلى فرق التطوير عبر أنظمة مثل TAPD أو Jira. وعملياً، يتكرر طرح سؤالين:
أُنشئ JavaSecLab لربط سلوك الثغرة بالكود المصاب بأساليب المعالجة وتفكير التدقيق. وبالمقارنة مع تقرير نصي فقط أو PoC، يركّز المشروع على فهم الثغرات من منظور الكود.
في تدقيق الكود، يكون سير العمل الشائع هو تحديد نقطة الحقن (sink) أولاً، مثل تنفيذ الأوامر أو تنفيذ SQL أو الوصول إلى الملفات أو عرض القوالب أو إلغاء التسلسل أو إخراج الاستجابة. ثم يتتبع المدقق عكسياً لتحديد المصدر (source) المقابل، مثل معاملات الطلب أو الترويسات أو ملفات تعريف الارتباط أو الملفات المرفوعة أو البيانات المتسلسلة أو محتوى قاعدة البيانات. صُممت العديد من سيناريوهات JavaSecLab حول مسار المصدر إلى نقطة الحقن هذا، مما يجعلها مفيدة للتعلّم والتحقق من الأدوات معاً.
غالباً ما يظهر نفس نوع الثغرة عبر مسارات تشغيل متعددة في الأنظمة الحقيقية. لذلك يوفر JavaSecLab سيناريوهات متعددة لفئات الثغرات الأساسية حيثما أمكن، ليتمكن المستخدمون من مقارنة كيفية تأثير أنماط الترميز المختلفة وميزات الأطر وسير الأعمال على المخاطر.
يتضمن JavaSecLab أمثلة لتحليل حركة مرور الثغرات لمساعدة المتعلمين على ربط سلوك الطلب/الاستجابة بتنفيذ الكود. نرحّب بالمساهمات التي تتضمن حزماً أوضح أو ملاحظات إعادة إنتاج أفضل أو أمثلة تحليل إضافية.

على سبيل المثال، في سيناريو حقن SQL المعتمد على الوقت، يمكن ملاحظة نمط حركة المرور من خلال زمن استجابة الخادم: يستجيب الخادم بعد نحو خمس ثوانٍ.

استنسخ المستودع:
git clone https://github.com/whgojp/JavaSecLab.git
cd JavaSecLab

المتطلبات:
أنشئ قاعدة البيانات واستورد sql/JavaSecLab.sql.
اضبط الملف التعريفي النشط على dev في src/main/resources/application.yml:
spring:
profiles:
active: dev
حدّث اتصال قاعدة البيانات في src/main/resources/application-dev.yml:
username: root
password: QWE123qwe
url: jdbc:mysql://localhost:13306/JavaSecLab?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&allowMultiQueries=true
شغّل التطبيق من IDEA أو باستخدام Maven.
الحساب الافتراضي: admin/admin

المتطلبات:
الخيار 1: التشغيل باستخدام الصورة المنشورة:
docker compose -f docker-compose.image.yml up -d
الخيار 2: بناء الصورة محلياً وتشغيل المختبر:
mvn clean package -DskipTests
docker compose -p javaseclab up -d
إذا كانت قاعدة البيانات فارغة بعد التشغيل، فاستورد sql/JavaSecLab.sql يدوياً.


لمزيد من خيارات النشر وملاحظات استكشاف الأخطاء وإصلاحها، راجع دليل النشر.
JavaSecLab هو مشروع مختبر يحتوي على ثغرات. يحتفظ عمداً بنقاط نهاية خطيرة وتبعيات بها ثغرات وإعدادات غير آمنة لأغراض إعادة الإنتاج والتعليم. شغّله فقط محلياً أو في شبكة معزولة.
الاحتياطات الموصى بها:
أمثلة الكود الآمن في هذا المشروع مخصصة للتعليم والعرض التوضيحي. عادةً ما تتطلب أنظمة الأعمال الحقيقية المصادقة والتدقيق وتحديد المعدل والتحقق من البيانات وحوكمة التبعيات والمراقبة والتنبيه والدفاع متعدد الطبقات.
نرحّب بالمشكلات وطلبات السحب. تشمل المساهمات الجيدة:
عندما نتحدث عن البرمجيات الحرة، فإننا نشير إلى الحرية وليس السعر.
يُصدر JavaSecLab بموجب Apache License 2.0. راجع LICENSE للتفاصيل.
راجع سجل التحديثات للحصول على ملاحظات الإصدارات وتاريخ المشروع.
مدونة المؤلف: 今天是几号
إذا كنت مهتماً بأمن التطبيقات أو التطوير الآمن أو SDL أو DevSecOps أو مختبرات الثغرات، فلا تتردد في الانضمام إلى مجموعة المجتمع.
إذا كان JavaSecLab مفيداً لك، فإن رعايته محل تقدير. ستُستخدم الدعم لصيانة البيئة المباشرة والتحسين المستمر للمشروع.