
CVE-2020-15778 के लिए तकनीकी लेख और प्रूफ-ऑफ-कॉन्सेप्ट, OpenSSH scp (<=8.3p1) में एक प्रमाणित कमांड इंजेक्शन भेद्यता जो फ़ाइल पथों में बैकटिक पेलोड के माध्यम से रिमोट कोड निष्पादन की अनुमति देती है।
ईमेल पता : [email protected]
लिंक्डइन : www.linkedin.com/in/chinmay-pandya
उत्पाद: OpenSSH
प्रभावित घटक: SCP
scp एक प्रोग्राम है जो कंप्यूटरों के बीच फ़ाइलों की प्रतिलिपि बनाने के लिए है। यह SSH प्रोटोकॉल का उपयोग करता है। यह अधिकांश Linux और Unix वितरणों में डिफ़ॉल्ट रूप से शामिल होता है।
दूरस्थ सर्वर पर फ़ाइलों की प्रतिलिपि बनाते समय, फ़ाइल पथ स्थानीय scp कमांड के अंत में जोड़ दिया जाता है। उदाहरण के लिए, यदि आप निम्नलिखित कमांड निष्पादित करते हैं
scp SourceFile user@host:directory/TargetFile
यह एक स्थानीय कमांड निष्पादित करेगा
scp -t directory/TargetFile
स्थानीय scp कमांड बनाते समय, यह फ़ाइल नाम को सैनिटाइज़ नहीं करता है। एक हमलावर बैकटिक सक्षम पेलोड को फ़ाइल नाम के रूप में पास कर सकता है और जब स्थानीय scp कमांड निष्पादित होता है, तो स्थानीय शेल भी बैकटिक सक्षम पेलोड को निष्पादित करेगा।
scp के साथ निम्नलिखित कमांड निष्पादित करें
scp /sourcefile remoteserver:'`touch /tmp/exploit.sh`/targetfile'
इस कमांड को निष्पादित करने के बाद, दूरस्थ सर्वर पर जाएं और आप /tmp/ निर्देशिका में देखेंगे कि फ़ाइल exploit.sh मौजूद है। फ़ाइल नाम में सिंगल कोट्स लगाना महत्वपूर्ण है ताकि स्थानीय शेल पर पेलोड निष्पादन को रोका जा सके या फ़ाइल नाम में एस्केप कैरेक्टर जैसे सिंगल कोट्स का उपयोग करने से स्थानीय शेल पर पेलोड निष्पादन को रोका जा सकता है।
यह एक प्रमाणित शोषण है और दूरस्थ सर्वर पर कमांड निष्पादित करने के लिए एक मान्य SSH / SCP क्रेडेंशियल की आवश्यकता है
scp कमांड एक ऐतिहासिक प्रोटोकॉल (जिसे rcp कहा जाता है) है जो तर्क पारित करने की उस शैली पर निर्भर करता है और विस्तार समस्याओं का सामना करता है। scp मॉडल में 'सुरक्षा' जोड़ना बहुत कठिन साबित हुआ है। असामान्य तर्क स्थानांतरण को 'पता लगाने' और 'रोकने' के सभी प्रयास मौजूदा वर्कफ़्लो को तोड़ने की अत्यधिक संभावना रखते हैं। हाँ, हम मानते हैं कि स्थिति खराब है। लेकिन हम उन आसान पैटर्न को नहीं तोड़ना चाहते जिनके लिए लोग scp का उपयोग करते हैं, जब तक कि कोई सामान्य प्रतिस्थापन न हो। यदि वे चिंतित हैं तो लोगों को इसके बजाय rsync या किसी अन्य चीज़ का उपयोग करना चाहिए।
SCP के लिए कोड - https://github.com/openssh/openssh-portable/blob/master/scp.c