
यह एक फ़िल्टर बायपास शोषण है जिसके परिणामस्वरूप class.upload.php <= 2.0.4 में मनमाना फ़ाइल अपलोड और दूरस्थ कोड निष्पादन होता है।
यह एक फ़िल्टर बाईपास एक्सप्लॉइट है जिसके परिणामस्वरूप मनमाना फ़ाइल अपलोड और रिमोट कोड निष्पादन होता है। class.upload.php स्क्रिप्ट "खतरनाक फ़ाइलों और सामग्री" को फ़िल्टर करती है और उन्हें txt फ़ाइल एक्सटेंशन में नाम बदल देती है। यह अपलोड की गई छवि पर विभिन्न प्रकार के रूपांतरण भी करती है, जो सामान्यतः किसी भी इंजेक्टेड पेलोड को नष्ट कर देगा, भले ही फ़ाइल एक्सटेंशन फ़िल्टर को बायपास किया जा सके।
फ़ाइल एक्सटेंशन फ़िल्टर एक ब्लैकलिस्ट है, इसलिए जब भी कोई नया एक्सटेंशन पेश किया जाता है (इस मामले में pht), या कोई छूट गया है, तो एक PHP फ़ाइल अपलोड की जा सकती है। सामग्री को अभी भी एक मान्य छवि होना चाहिए हालांकि और फिर भी imagecreatefromjpeg और समान फ़ंक्शन से गुज़रेगी। इस उद्देश्य के लिए मैंने inject.php स्क्रिप्ट लिखी है जो मूलतः विभिन्न छवियों के माध्यम से ब्रूटफोर्स करेगी जब तक कि उसे एक ऐसी छवि न मिल जाए जहां class.upload.php में की गई प्रक्रिया द्वारा पेलोड नष्ट नहीं होगा। यह हमें प्रभावी रूप से एक मनमाना फ़ाइल अपलोड और एक बहुत ही चुपके कोड निष्पादन देता है क्योंकि यह अभी भी एक मान्य छवि है और उन पृष्ठों पर जहां अपलोड किया गया है, वैसे ही प्रदर्शित होगा।
inject.php स्क्रिप्ट को जल्द ही इस प्रकार के हमले के लिए एक अधिक सामान्य उपकरण बनाने के लिए फिर से लिखा जाएगा, लेकिन अभी के लिए इसे इस प्रकार के CVE रिलीज़ में व्यक्तिगत स्क्रिप्ट के रूप में शामिल किया जाएगा।
upload.php स्क्रिप्ट verot.net के github से उदाहरण कोड है। मुझे लगा कि इस भेद्यता को उनके स्वयं के उदाहरण कोड का उपयोग करके प्रदर्शित करना सबसे अच्छा होगा।
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