
CVE-2023-32681 के लिए POC
यह CVE-2023-32681 का Python 3 कार्यान्वयन है, जो requests संस्करण <= 2.30.0 का उपयोग करने वाले क्लाइंटों को प्रभावित करता है।
जैसा कि https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4 के अनुसार, जब भी सर्वर द्वारा रीडायरेक्शन 3xx जारी किया जाता है तो user-agent को अनुरोध से कुछ हेडर और फ़ील्ड को हटाने के लिए अनुरोध को संशोधित करना चाहिए।
उन फ़ील्ड का विवरण https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5 पर पाया जा सकता है। इस CVE से संबंधित, मैंने प्रासंगिक भाग को यहाँ हाइलाइट किया है।

requests संस्करण <= 2.30.0 ने 'https' पर रीडायरेक्शन को संभालते समय 'Proxy-Authorization' हेडर को नहीं हटाया, जिससे प्रॉक्सी क्रेडेंशियल रीडायरेक्ट किए गए सर्वर पर लीक हो गए।
इसके बारे में अधिक जानकारी यहाँ पाई जा सकती है
/redirect को परिभाषित करता है जो ट्रैफ़िक को 4431 पर चल रहे दूसरे सर्वर पर रीडायरेक्ट करता है।/echoHeaders को परिभाषित करता है। यह रूट अनुरोध में प्राप्त हेडर को क्लाइंट को वापस करता है।Proxy-Authorization हेडर शामिल है तो requests संस्करण को 'CVE-2023-32681' के प्रति कमजोर माना जाता है।server/main.go में certFile और keyFile वेरिएबल को अपडेट करें।go run server/main.go कमांड चलाकर HTTP(S) सर्वर शुरू करें। इससे पोर्ट 443 और 4431 पर दो सर्वर सुनने लगेंगे।go run proxy/main.go कमांड चलाकर प्रॉक्सी सर्वर शुरू करें। इससे पोर्ट 8080 पर प्रॉक्सी सर्वर शुरू होगा।pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py चलाकर POC स्क्रिप्ट निष्पादित करें और आउटपुट देखें। आप देख सकते हैं कि 'Proxy-Authorization' हेडर प्रतिक्रिया में सर्वर द्वारा लौटाया गया है। सर्वर लॉग में प्राप्त हेडर भी प्रिंट करता है।pip3 install -r script/requirements_request_2_31_0.txt करें।python3 script/poc.py चलाकर POC स्क्रिप्ट निष्पादित करें और आउटपुट देखें। आप देख सकते हैं कि 'Proxy-Authorization' हेडर अब सर्वर प्रतिक्रिया में मौजूद नहीं है। यही बात सर्वर लॉग में भी सत्यापित की जा सकती है।



