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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
codeql-workshop-cve-2021-21380 — ورشة عمل CodeQL تغطي CVE-2021-21380 | Kitploit
أدوات/GitHubGitHub/rvermeulen/codeql-workshop-cve-2021-21380
التحليل الثابتتحليل الثغرات الأمنيةتحليل الكودأمن الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubrvermeulen/codeql-workshop-cve-2021-21380

codeql-workshop-cve-2021-21380

ورشة عمل CodeQL تغطي CVE-2021-21380

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
عرض المستودع
12511منذ سنة واحدةلم تتم المراجعة بعد
مشاركة

ورشة CodeQL لجافا: إيجاد حقن SQL

في هذه الورشة سنستخدم التفكير النحوي والدلالي لإيجاد حقن SQL في مكون التقييم الخاص بمنصة XWiki الموثقة في CVE-2021-21380

المحتويات

  • ورشة CodeQL لجافا: إيجاد حقن SQL
    • المحتويات
    • المتطلبات الأساسية وتعليمات الإعداد
      • على جهازك المحلي
        • التثبيت
        • خطوات الإعداد
    • الورشة
      • ما ستتعلمه
      • بيان المشكلة
      • التمارين
        • التمرين 1
        • فاصل 1
        • التمرين 2
        • التمرين 3
        • فاصل 2
        • التمرين 4
        • التمرين 5
        • فاصل 3
        • التمرين 6
        • التمرين 7
        • التمرين 8
    • ما التالي؟

المتطلبات الأساسية وتعليمات الإعداد

على جهازك المحلي

يرجى إكمال هذا القبل بدء الورشة، إن أمكن.

التثبيت

  • ثبّت Visual Studio Code.

  • ثبّت إضافة CodeQL لـ Visual Studio Code.

  • لا تحتاج إلى تثبيت واجهة سطر الأوامر CodeQL: ستتولى الإضافة ذلك نيابة عنك.

  • استنسخ هذا المستودع:

    git clone https://github.com/advanced-security/codeql-workshop-cve-2021-21380.git
    

خطوات الإعداد

  • استورد قاعدة بيانات CodeQL التي ستُستخدم في الورشة:
    • انقر بزر الفأرة الأيمن على ملف xwiki-platform-CVE-2021-21380.zip في عرض المستكشف واختر الأمر CodeQL: Set Current Database.
    • ستظهر قاعدة البيانات في عرض قواعد بيانات CodeQL الذي يمكن الوصول إليه من أيقونة QL على شريط الأنشطة.
  • ثبّت التبعيات لتحليل كود جافا ولتشغيل اختبارات التمارين والحلول.
    • من لوحة الأوامر (Cmd/Ctrl+Shift+P)، ابحث عن الأمر CodeQL: Install Pack Dependencies وشغّله.
    • في أعلى نافذة VS Code، اكتب github في المربع لتصفية القائمة.
    • حدد المربعات بجانب cve-2021-21380-exercises و cve-2021-21380-exercises-tests و cve-2021-21380-solutions و cve-2021-21380-solutions-tests.
    • انقر OK/Enter.
  • تحقق من أن كل شيء يعمل كما هو متوقع بتشغيل اختبارات الحلول.
    • افتح عرض الاختبار واضغط على تشغيل الاختبارات (أيقونة التشغيل تظهر عند المرور بالماوس فوق الحلول) بجانب عنصر الحلول في الشجرة.

الورشة

ما ستتعلمه

الورشة مقسمة إلى عدة تمارين تقدم دعم لغة QL لجافا وتنتهي باستعلام نهائي لإيجاد حقن SQL المعروف. في هذه التمارين ستتعلم:

  • كيفية التفكير في المعلومات النحوية.
  • كيفية التفكير في المعلومات الدلالية.
  • استكشاف دعم لغة QL لجافا للتعبير عن الأنماط.
  • استكشاف كيفية إعادة استخدام وتوسيع النمذجة الموجودة.
  • استخدام عدة كتل بناء لتكوين الاستعلام النهائي.

بيان المشكلة

في هذه الورشة سنبحث عن ثغرات حقن SQL المعروفة في مكون واجهة برمجة تطبيقات التقييمات في منصة XWiki. يمكن أن تحدث هذه الثغرات في التطبيقات عندما تصل معلومات يتحكم فيها مستخدم خارجي إلى كود التطبيق الذي ينشئ استعلام SQL بشكل غير آمن وينفذه.

حقن SQL المعروف الذي نناقشه في هذه الورشة مُراجَع في GHSA-79rg-7mv3-jrr5 في قاعدة بيانات استشارات GitHub. لإيجاد حقن SQL والمتغيرات المحتملة، سنتعامل مع المشكلات الفرعية التالية:

  • تحديد مصدر المعلومات غير الموثوقة ونمذجته في QL.
  • تحديد المصب، الطريقة التي تنفذ استعلامات SQL، ونمذجته في QL.
  • دمج الحلول أعلاه لتحديد ما إذا كان هناك تدفق للمعلومات بين المصدر والمصب باستخدام تتبع التلوث.

التمارين

في التمارين القليلة الأولى سنفكر في المعلومات النحوية، باستخدام شجرة النحو المجرد (AST)، لتحديد:

  • الطريقة الموصوفة في الاستشارة الأمنية لبناء فهم للثغرة
  • المعاملات التي تحتوي على بيانات غير موثوقة، مصادرنا
  • استدعاءات الطرق التي تقبل عبارات SQL، مصابنا

التمرين 1

ابحث عن جميع الطرق التي تحمل الاسم getAverageRating ونوعها المُصرِّح في البرنامج بإكمال الاستعلام exercise1.ql

تلميحات
  • توفر وحدة java فئة Method لتحليل الطرق في البرنامج.
  • توفر فئة Method المسندات الأعضاء getName و hasName لتحليل اسم الطريقة.
  • توفر فئة Method العضو getDeclaringType لتحليل النوع الذي يُصرِّح بالطريقة.

يمكن إيجاد الحل في الاستعلام exercise1.ql

فاصل 1

يعيد حل التمرين 1 قائمة من الطرق. بعضها مُعرَّف في واجهة تسمى RatingsManager وبعضها مُعرَّف في الصنفين AbstractRatingsManager و RatingsScriptService.

من المعلومات التي يُعيدها الاستعلام و توثيق مكونات XWiki يمكننا استنتاج أن:

  • تستخدم XWiki تصميمًا موجهًا للمكونات للسماح بالامتدادات والتخصيصات.
  • الطريقة الضعيفة هي جزء من مكون.
  • يتكون المكون من واجهة، موضحة بـ Role، وتنفيذ موضح بـ Component.
  • المكون الذي يمتد ScriptService يُجعل متاحًا لصفحات الويكي من خلال البرمجة النصية.

التمرين 2

ابحث عن جميع الأصناف الموضحة بالتعليق التوضيحي Component بإكمال الاستعلام exercise2.ql. لاحظ أن الاسم المؤهل بالكامل لنوع التعليق التوضيحي هو org.xwiki.component.annotation.Component.

تلميحات
  • يمكن الوصول إلى /نوع المجال/ للصنف، تقاطع أنواعه العليا، باستخدام الكلمة المفتاحية this في /المسند المميز/.
  • توفر فئة Class طريقة getAnAnnotation للحصول على التعليقات التوضيحية المرتبطة.
  • توفر فئة Annotation المسند العضو getType لتحليل نوعه.
  • توفر فئة Type المسندين الأعضاء getName و hasName لتحليل اسم النوع.
  • توفر فئة RefType، التي تمثل الأصناف والواجهات، المسندين الأعضاء getQualifiedName و hasQualifiedName لتحليل الاسم المؤهل بالكامل لنوع المرجع.

يمكن إيجاد الحل في الاستعلام exercise2.ql

التمرين 3

ابحث عن جميع المكونات التي تنفذ واجهة ScriptService بإكمال الاستعلام excercise3.ql

تلميحات
  • يوفر نوع Class المسند العضو getASuperType لتحليل الأنواع العليا للصنف، أي الأنواع التي يمتدها (extends) أو ينفذها (implements).

يمكن إيجاد الحل في الاستعلام exercise3.ql

فاصل 2

في هذه المرحلة حددنا نحويًا الطرق التي يمكن للمستخدم استدعاؤها والتي سنعتبر معاملاتها مصادر للبيانات غير الموثوقة في وقت لاحق من الورشة.

في التمرين التالي سنحقق ونتعرف على المصابين المحتملين. من نتائج التمرين 1 يمكننا استنتاج أن أحد التطبيقات يستدعي الطريقة getAverageRatingFromQuery. باستخدام استعلام مماثل يمكننا إيجاد أنواع المُصرِّحين لـ getAverageRatingFromQuery مما يسمح لنا بتحديد أن التطبيق في الصنف AbstractRatingsManager يُنشئ عبارة SQL التي تُمرر إلى الطريقة search.

الطريقة search مطبقة في تبعية وبالتالي فإن تطبيقها غير متوفر. في التمارين التالية سنستخدم معلومات النوع المتاحة لتحديد استدعاء الطريقة search هذا ونوعها المُصرِّح.

التمرين 4

ابحث عن جميع استدعاءات الطرق للطريقة search وحدد نوعها المُصرِّح بإكمال الاستعلام exercise4.ql

تلميحات
  • يوفر نوع MethodCall الوسائل لتحليل استدعاءات الطرق.
  • يوفر نوع MethodAcccess المسند العضو getMethod لتحليل هدف استدعاء الطريقة.

يمكن إيجاد الحل في الاستعلام exercise4.ql

التمرين 5

تنزيل الأداة