
यह रिपॉजिटरी CVE-2023-41717 के लिए एक write-up और PoC प्रदान करने के लिए है।
Zscaler Proxy संस्करण 3.6.1.25 और उससे पहले में अनुपयुक्त फ़ाइल प्रकार नियंत्रण स्थानीय हमलावरों को फ़ाइल डाउनलोड/अपलोड प्रतिबंधों को बायपास करने की अनुमति देता है।
2022 की गर्मियों के दौरान, मुझे एक ऐसी कमजोरी मिली जो ZScaler प्रॉक्सी (संस्करण 3.6.1.25 और उससे पहले) को प्रभावित करती है। यह कमजोरी स्थानीय हमलावरों को Burp जैसे टूल या यहाँ तक कि Microsoft के मूल उपयोगिताओं जैसे Bitsadmin (जो Background Intelligent Transfer Service (BITS) प्रोटोकॉल पर निर्भर करता है) का उपयोग करके पासवर्ड-सुरक्षित आर्काइव के डाउनलोड/अपलोड पर प्रतिबंध को बायपास करने की अनुमति देगी।
Microsoft के दस्तावेज़ीकरण के अनुसार, BITS प्रोटोकॉल “एक क्लाइंट से HTTP सर्वर या इसके विपरीत बड़े पेलोड को स्थानांतरित करने का एक तरीका परिभाषित करता है, भले ही रुकावटों का सामना करना पड़े, पेलोड को कई टुकड़ों में भेजकर”। इससे फ़ाइल प्रकार पर आधारित प्रतिबंधों को बायपास किया जा सकता है क्योंकि Zscaler कई अनुरोधों में फ़ाइल को ठीक से पुनर्निर्मित नहीं कर पाता है।
हालांकि यह प्रूफ ऑफ कॉन्सेप्ट केवल डाउनलोड पहलू पर ध्यान केंद्रित करेगा, यह कमजोरी अपलोड पर भी लागू होती है।
इस अनुभाग में, Zscaler के पासवर्ड-सुरक्षित आर्काइव डाउनलोड करने के प्रतिबंधों को बायपास करने के दो अलग-अलग तरीकों पर प्रकाश डाला गया है। परीक्षण क्लाइंट के संस्करण 3.6.1.25 पर निम्नलिखित URL का उपयोग करके किए गए थे।
पहली विधि में HTTP अनुरोध को संशोधित करना शामिल है, जो ब्राउज़र या Burp Suite जैसे टूल का उपयोग करके किया जा सकता है। इस परीक्षण के लिए, मैंने पहले वाले को चुना है।
नीचे दी गई छवि अनुरोध को Zscaler द्वारा इंटरसेप्ट और ब्लॉक किए जाने को दर्शाती है। फिर से Range हेडर को bytes = 0-x मान के साथ जोड़ने के बाद अनुरोध को पुनः प्रेषित किया जाता है, जहाँ x कुल फ़ाइल आकार से छोटा एक मनमाना मान है।

एक बार अनुरोध पुनः प्रेषित होने पर, स्थिति कोड “206 Partial Content” के साथ एक प्रतिक्रिया प्राप्त होती है। प्रतिक्रिया हेडर कुल फ़ाइल आकार दिखाएंगे, जबकि प्रतिक्रिया पेलोड base64 में एन्कोडेड होता है।


बाइट रेंज मान को मैन्युअल रूप से बढ़ाकर अनुरोधों को दोहराया जाता है, जब तक कि अंतिम फ़ाइल भाग तक नहीं पहुँच जाता।

परिणामी पेलोड को विभिन्न तरीकों से पुनर्निर्मित किया जा सकता है: इस परीक्षण के लिए, एक कस्टम PowerShell स्क्रिप्ट का उपयोग किया गया है (आप इसे Reconstruct-Payload.ps1 में पा सकते हैं)।
पुनर्निर्मित zip फ़ाइल (CE6CFFEA60C6CDF40C998E56B6EFBD20) का MD5 हैश Virus Total पर पाए गए अपेक्षित हैश से मेल खाता है।



दूसरी विधि Microsoft के BITS प्रोटोकॉल का लाभ उठाती है, जो मूल रूप से डाउनलोड अनुरोधों को भागों में विभाजित करता है।
यह परीक्षण CLI उपयोगिता bitsadmin.exe का उपयोग करके निम्नलिखित कमांड लाइन के साथ किया गया है:
bitsadmin.exe /transfer <job name> /download /priority normal <URL> <path_destination_file>


परिणामी zip का MD5 हैश पिछले अनुभाग में पाए गए हैश से मेल खाता है।