
تطبيق مرحباً بالعالم (Hello World) لـ Koseven داخل حاوية Docker للتجربة مع ثغرة حقن SQL CVE-2019-8979 التي تؤثر على الإصدارات الأقدم من 3.3.10
A docker-contained https://github.com/koseven/koseven[koseven] hello world to play with CVE-2019-8979, a SQL injection vulnerability affecting versions < 3.3.10. هذا الـ Hello World يأتي في الواقع من https://koseven.dev/documentation/orm/examples/simple[التوثيق]، لقد أضفت فقط أجزاء دوكر واكسبلويت الإثبات (PoC).
= CVE-2019-8979 هذه الثغرة من نوع حقن SQL تم الإبلاغ عنها أصلاً من قبل طرف ثالث على https://github.com/koseven/koseven/issues/323[هذا الرابط] وتم إصلاحها في 27 فبراير 2019 في الفرع الرئيسي ولكن المطورين نسوا نشر إصدار جديد يحتوي على الإصلاح. ونتيجة لذلك، فإن أحدث إصدار ثابت في ذلك الوقت، https://github.com/koseven/koseven/releases/tag/3.3.9[koseven-3.3.9] المنشور في 20 نوفمبر 2018، ظل معرضًا للثغرة حتى تم إصدار https://github.com/koseven/koseven/releases/tag/3.3.10[koseven-3.3.10] في 12 أكتوبر 2020، بعد أن لاحظت https://elttam.com[elttam] هذا الإغفال وأبلغت به المطورين الأساسيين بشكل خاص في 10 أكتوبر 2020.
= قيود
على الرغم من أنه يمكن الحصول على بعض المعلومات من MySQL مثل current_user() و database() أو أسماء الجداول والأعمدة من information_schema، إلا أنه قد لا يكون من الممكن استرداد البيانات من جداول أخرى بسبب استدعاء strtoupper() على مدخل اتجاه order by كما هو موضح في https://github.com/koseven/koseven/blob/3.3.9/modules/database/classes/Kohana/Database/Query/Builder.php#L236[هذا الرابط].
هذا لأن أسماء قواعد البيانات والجداول حساسة لحالة الأحرف عندما يعمل MySQL على نظام تشغيل يوجد فيه دليل البيانات على نظام ملفات حساس لحالة الأحرف.
ونتيجة لذلك، قد تكون هذه الثغرة من نوع SQLi قابلة للاستغلال الكامل فقط إذا:
lower_case_table_names يكون > 0انظر https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html[حساسية حالة معرفات MySQL] لمزيد من المعلومات.
= عرض توضيحي
[#img-demo] [link=https://asciinema.org/a/uQYxQn4vbB6XRFjf8pdIGbmAr] image::https://asciinema.org/a/uQYxQn4vbB6XRFjf8pdIGbmAr.png[عرض توضيحي,200,200]