
CVE-2021-41773
नमस्ते दोस्तों, कल Apache 2.4.49 संस्करण के लिए नया CVE-2021-41773 जारी किया गया। इस मामले में, मैं इस Apache भेद्यता के बारे में समझाना चाहता हूँ।
तो, मुझे लगता है कि आप लोग इस भेद्यता का वेबसाइट पर परीक्षण करना चाहते हैं। इसलिए मेरे पास आपके लिए एक परीक्षण स्थल है। यह उदाहरण Apache 2.4.49 की डॉकर इमेज डाउनलोड करने की वेबसाइट है Docker Image
नोट: दो इमेज हैं: with-cgid और no-cgid। आपको दोनों इमेज डाउनलोड करनी होंगी।
सबसे पहले अपनी मशीन में docker image डाउनलोड करें।
no-cgid: sudo docker pull blueteamsteve/cve-2021-41773:no-cgid
with-cgid: sudo docker pull blueteamsteve/cve-2021-41773:with-cgid
no-cgid: sudo docker run -dit -p 8080:80 blueteamsteve/cve-2021-41773:no-cgid
with-cgid: sudo docker run -dit -p 8080:80 blueteamsteve/cve-2021-41773:with-cgid
ईमानदारी से, मुझे नहीं पता कि उन्होंने इस भेद्यता को खोजने के बारे में कैसे सोचा। इसलिए मैं इसके बारे में पूरी तरह से समझा नहीं सकता। लेकिन मैं इस CVE के बारे में जो कुछ समझता हूँ, वह सब बताने की पूरी कोशिश करूँगा।
यह CVE थोड़ा दिलचस्प है क्योंकि इसमें दो भेद्यताएँ हैं। वे हैं LFDस्थानीय फ़ाइल प्रकटीकरण और RCEदूरस्थ कोड निष्पादन। बढ़िया! तो, इस पोस्ट में मैं इस CVE की दोनों भेद्यताओं के बारे में समझाऊंगा।
तो, चलिए स्थानीय फ़ाइल प्रकटीकरण भेद्यता से शुरू करते हैं। यदि आप Apache से परिचित हैं, तो आप देख सकते हैं कि cgi-bin (सामान्य गेटवे इंटरफ़ेस) Apache-2.4.49 में वेब सर्वर के लिए बाहरी सामग्री-उत्पन्न करने वाले प्रोग्रामों के साथ इंटरैक्ट करने का एक तरीका परिभाषित करने वाला डिफ़ॉल्ट पथ है।
लेकिन यह पथ सभी के लिए और यहाँ तक कि व्यवस्थापक के लिए भी Forbidden है। हम्म, यह दिलचस्प है है ना?
और यदि आप स्थानीय फ़ाइल प्रकटीकरण भेद्यता से परिचित हैं, तो आप जानते होंगे कि अधिकांश LFD भेद्यताएँ निषिद्ध पथों में होती हैं।
तो चलिए /cgi-bin/ पथ में LFI के सरल पेलोड का परीक्षण करते हैं।
मैंने /etc/paswd से पहले ../../../../../ रखा।
(यदि आप जानना चाहते हैं कि ../ क्या है, तो यह ब्लॉग पोस्ट देखें स्थानीय फ़ाइल प्रकटीकरण बाईपास)
curl के साथ:
curl http://localhost:8080/cgi-bin/../../../../../etc/passwd

Burpsuite के साथ:

जैसा कि आप देख सकते हैं, हमें इस सरल पेलोड के साथ त्रुटि मिली। curl में हमें 404 स्थिति कोड Not Found त्रुटि मिली और Burp में हमें 400 Bad Request त्रुटि मिली।
इसका मतलब है कि हमें अपने पेलोड को URL एन्कोडिंग में एन्कोड करना चाहिए। तो चलिए इसे आज़माते हैं और देखते हैं कि हमें क्या मिलता है।
इसलिए मैंने . को Url में एन्कोड किया। नोट: URL एन्कोडिंग में . है %2E और %2e भी।
curl के साथ:
curl http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd

Burp के साथ:

हाँ! हमारा पेलोड अब काम कर गया। हम वेबसाइट का /etc/passwd पढ़ सकते हैं।
तो मुझे उम्मीद है कि अब आप इस CVE की LFD भेद्यता को समझ गए होंगे। तो, चलिए इस Apache 2.4.49 CVE की RCE भेद्यता पर आगे बढ़ते हैं।
इस CVE की RCE भेद्यता के बारे में समझाने के लिए, आपको RCE और linux बुनियादी बातों के कुछ आधारभूत ज्ञान की आवश्यकता है।
जानने के लिए यह ब्लॉग पोस्ट देखें RCE क्या है
आह, मुझे लगता है कि आपने सोचा होगा कि मैं गलत बोल रहा हूँ जब मैंने कहा linux बुनियादी की आवश्यकता है। नहीं। मैंने गलत नहीं कहा क्योंकि हमें वास्तव में इसकी आवश्यकता है। तो चलिए शुरू करते हैं!
पहले मुझे काम करने वाला पेलोड दिखाने दीजिए और मैं समझाऊंगा कि यह कैसे काम करता है।
curl http://localhost:8081/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh -d 'C|echo;whoami'
curl http://localhost:8081/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh -d 'C|echo;id'
curl के साथ:

तो मुझे इस पेलोड के बारे में समझाने दीजिए।
curl http://localhost:8081/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh -d 'C|echo;id'
जैसा कि आप देख सकते हैं, पथ /cgi-bin/ और एन्कोडिंग .%2e समान हैं। लेकिन अब दो और विकल्प हैं। वे थे -d डेटा और /bin/sh /bin/bash। तो, मुझे समझाने दीजिए कि हमें ये क्यों रखने की आवश्यकता है।
सबसे पहले, हम दूरस्थ-कोड-निष्पादन प्राप्त करना चाहते हैं, है ना?
तो जैसा कि आप जानते हैं कि लिनक्स-आधारित सिस्टम में /bin/bash कमांड और शेल को निष्पादित करने का मुख्य भाग है। इसलिए हमें वेब सर्वर में अपने कमांड को निष्पादित करने के लिए bash की आवश्यकता है। यह देखें लिनक्स में Bash क्या है.
ठीक है, अब मान लीजिए कि हम /bin/sh प्राप्त कर सकते हैं। हमें केवल अपने कमांड इंजेक्ट करने की आवश्यकता है। हम अपने इंजेक्शन को curl के साथ डेटा के रूप में रख सकते हैं।
तो हमारा पेलोड है C|echo;id। मुझे समझाने दीजिए यह क्या है।
तो C कुछ नहीं है। हम | से पहले कुछ भी रख सकते हैं। जैसे Comdey|।
echo;id सिर्फ एक लिनक्स ट्रिक है। तो, मैंने कहा कि लिनक्स बुनियादी चाहिए Echo basics
यदि हम इन्हें एक साथ रखते हैं तो हमें Apache 2.4.49 में RCE मिलता है।
पढ़ने के लिए धन्यवाद दोस्तों। यह CVE के लिए मेरा पहला लेख है। यदि मैं इसे समझाने में खराब था तो मुझे माफ कर दीजिए। और कृपया मुझे सुझाव भी दें।
