
هذا المستودع يقدم شرحًا (write-up) وإثبات المفهوم (PoC) لـ CVE-2023-41717.
التحكم غير المناسب في أنواع الملفات في Zscaler Proxy الإصدارات 3.6.1.25 والإصدارات السابقة يسمح للمهاجمين المحليين بتجاوز قيود تنزيل/رفع الملفات.
خلال صيف عام 2022، اكتشفت ثغرة أمنية تؤثر على وكيل ZScaler (الإصدارات 3.6.1.25 والإصدارات السابقة). تسمح هذه الثغرة للمهاجمين المحليين بتجاوز القيود على تنزيل/رفع الأرشيفات المحمية بكلمة مرور باستخدام أدوات مثل Burp أو حتى الأدوات المساعدة الأصلية من Microsoft مثل Bitsadmin، الذي يعتمد على بروتوكول خدمة نقل الخلفية الذكية (BITS).
وفقًا لوثائق Microsoft، يعرّف بروتوكول BITS "طريقة لنقل الحمولات الكبيرة من عميل إلى خادم HTTP أو العكس، حتى في وجه الانقطاعات، عن طريق إرسال الحمولة في أجزاء متعددة". وهذا يسمح بتجاوز القيود المستندة إلى نوع الملف لأن Zscaler لا يستطيع إعادة بناء الملف بشكل صحيح عبر طلبات متعددة.
على الرغم من أن هذا الإثبات المفاهيمي سيركز فقط على جانب التنزيل، إلا أن هذه الثغرة تنطبق على الرفع أيضًا.
في هذا القسم، يتم تسليط الضوء على طريقتين مختلفتين لتجاوز قيود Zscaler على تنزيل الأرشيفات المحمية بكلمة مرور. تم إجراء الاختبارات على الإصدار 3.6.1.25 من العميل، باستخدام الرابط التالي.
تتضمن الطريقة الأولى تعديل طلب HTTP، ويمكن القيام بذلك إما باستخدام متصفح أو أداة مثل Burp Suite. لأغراض هذا الاختبار، اخترت الأولى.
تظهر الصورة أدناه الطلب الذي تم اعتراضه وحظره بواسطة Zscaler. يتم إعادة إرسال الطلب بعد إضافة عنوان Range بقيمة bytes = 0-x، حيث x هي قيمة عشوائية أصغر من الحجم الكلي للملف.

بمجرد إعادة إرسال الطلب، يتم استلام استجابة برمز الحالة "206 Partial Content". ستظهر رؤوس الاستجابة الحجم الكلي للملف، بينما يتم ترميز حمولة الاستجابة بـ base64.


يتم تكرار الطلبات عن طريق زيادة قيمة نطاق البايت يدويًا، حتى الوصول إلى الجزء الأخير من الملف.

يمكن إعادة بناء الحمولة الناتجة بطرق مختلفة: في هذا الاختبار، تم استخدام برنامج Powershell مخصص (يمكنك العثور عليه في Reconstruct-Payload.ps1).
يتطابق تجزئة MD5 للملف المضغوط المعاد بناؤه (CE6CFFEA60C6CDF40C998E56B6EFBD20) مع التجزئة المتوقعة الموجودة على Virus Total.



تستفيد الطريقة الثانية من بروتوكول BITS من Microsoft، الذي يقسم طلبات التنزيل بشكل طبيعي إلى أجزاء.
تم إجراء هذا الاختبار باستخدام الأداة المساعدة لواجهة سطر الأوامر bitsadmin.exe، بالأمر التالي:
bitsadmin.exe /transfer <job name> /download /priority normal <URL> <path_destination_file>


يتطابق تجزئة MD5 للملف المضغوط الناتج مع التجزئة الموجودة في القسم السابق.