
यह एक फ़िल्टर बाईपास एक्सप्लॉइट है जो class.upload.php <= 2.0.3 में मनमाना फ़ाइल अपलोड और रिमोट कोड निष्पादन का परिणाम देता है।
यह एक फ़िल्टर बाईपास शोषण है जो मनमाना फ़ाइल अपलोड और दूरस्थ कोड निष्पादन में परिणाम देता है। class.upload.php स्क्रिप्ट 'खतरनाक फ़ाइलों और सामग्री' को फ़िल्टर करती है और उन्हें txt फ़ाइल एक्सटेंशन में नाम बदल देती है। यह अपलोड की गई छवि पर विभिन्न प्रकार के रूपांतरण भी करता है, जो सामान्यतः किसी भी इंजेक्ट किए गए पेलोड को नष्ट कर देगा, भले ही फ़ाइल एक्सटेंशन फ़िल्टर को बाईपास किया जा सके। फ़ाइल एक्सटेंशन फ़िल्टर एक ब्लैकलिस्ट है, इसलिए जब भी कोई नया एक्सटेंशन पेश किया जाता है (इस मामले में phar), या कोई छूट जाता है, तो एक PHP फ़ाइल अपलोड की जा सकती है। हालांकि सामग्री अभी भी एक मान्य छवि होनी चाहिए और imagecreatefromjpeg और समान फ़ंक्शनों से गुज़रेगी। इस उद्देश्य के लिए मैंने inject.php स्क्रिप्ट लिखी है जो मूल रूप से विभिन्न छवियों के माध्यम से बलपूर्वक प्रयास करेगी जब तक कि उसे एक ऐसी छवि न मिल जाए जहां class.upload.php में की गई प्रक्रिया से पेलोड नष्ट नहीं होगा। यह प्रभावी रूप से हमें एक मनमाना फ़ाइल अपलोड और बहुत गुप्त कोड निष्पादन देता है क्योंकि यह अभी भी एक मान्य छवि है और उन पृष्ठों पर इस तरह प्रदर्शित होगी जहां अपलोड किया गया है।
upload.php स्क्रिप्ट verot.net के github से उदाहरण कोड है। मैंने सोचा कि उनके स्वयं के उदाहरण कोड का उपयोग करके इस कमजोरी को प्रदर्शित करना सबसे अच्छा होगा।
user@ayu:/var/www/html# php inject.php
-=Imagejpeg injector 1.7=-
[+] 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.phar
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
JoomlaWorks K2 <= 2.10.1 में class.upload.php के अप्रकाशित संस्करण के कारण मनमाना फ़ाइल अपलोड जो दूरस्थ कोड निष्पादन की ओर ले जाता है
एक सामान्य उपयोगकर्ता inject.php द्वारा उत्पन्न छवि को अपलोड करता है, जिसमें एक सरल पेलोड होता है। यह class.upload.php में एक्सटेंशन फ़िल्टर को बाईपास करेगा और लाइब्रेरी में की गई छवि हैंडलिंग द्वारा नष्ट नहीं होगा। यह एक सामान्य छवि की तरह प्रस्तुत होगा, जो अधिक सूक्ष्म है।
फ़ाइल अपलोड की जाएगी और एक बैकडोर के रूप में एक्सेस की जा सकती है और कमांड निष्पादित कर सकती है।