
لا يتم تطهير المعلمات الإدارية الحساسة بشكل كافٍ، مما يسمح للمهاجم بتسميم مسارات الملفات الثنائية للنظام.
يمكن للمهاجم بعد ذلك رفع ملفات CSV خطيرة يمكن التعامل معها كأرشيفات PHAR تحتوي على محارف شل ستُقيَّم بواسطة استدعاء exec() في PHP، مما يؤدي إلى تنفيذ التعليمات البرمجية عن بُعد.
حرجة - 9.1 - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
في الملف functions/classes/class.Scan.php، يمكننا رؤية البنية البرمجية التالية:

المعامل الأول لاستدعاء exec() يعتمد بشكل مباشر على المعامل $ping_path، والذي يمكن تعديله بحرية من لوحة إعدادات المسؤول:

الشرط الوحيد الذي يجب على المهاجم تحقيقه هو جعل دالة ping_verify_path لا تُرجع false. تعريف هذه الطريقة هو التالي:

تعتمد هذه الطريقة حصريًا على دالة PHP الأصلية file_exists(). هذه الدالة تحديدًا تدعم تمرير ملفات ZIP (امتداد .zip ليس ضروريًا) والغوص في بنية أرشيف ZIP. على سبيل المثال:

لذلك، إذا تمكن المهاجم من رفع أرشيف ZIP/PHAR صالح على الخادم يحتوي على ملف باسم يتضمن محارف شل، فسيتم تجاوز فحص file_exists() وستُقيَّم تلك المحارف بواسطة استدعاء exec().
يمكن للمهاجم المصادَق عليه رفع الملفات عبر وظيفة "XLS / CSV subnet import":

لا يلزم أن يكون الملف المذكور ملف CSV صالحًا. إذا فشل الاستيراد، فلن يتم حذف الملف من الخادم. ونعرف أيضًا أين سيتم تخزينه من سكربت import-verify.php:

أصبح لدى المهاجم الآن جميع المتطلبات الأساسية لتنفيذ هجوم تنفيذ التعليمات البرمجية عن بُعد:
يمكن إنشاء الأرشيف الخبيث على النحو التالي:

https://www.youtube.com/watch?v=oMvyfFrlRAs