
नेटवेव आईपी कैमरों से मेमोरी डंप भेद्यता (CVE-2018-17240) का उपयोग करके लॉगिन क्रेडेंशियल्स प्राप्त करने का एक उपकरण।
Netwave IP कैमरों से लॉगिन क्रेडेंशियल्स को मेमोरी डंप भेद्यता (CVE-2018-17240) का उपयोग करके प्राप्त करने के लिए एक टूल। यह प्रोजेक्ट expcamera से प्रेरित था और प्रदर्शन तथा दक्षता में सुधार प्रदान करता है। यह टूल सभी प्लेटफ़ॉर्म के लिए काम करता है क्योंकि यह expcamera की तरह शेल कमांड के माध्यम से किसी भी Linux CLI टूल का उपयोग नहीं करता है।
Linux सिस्टम पर, /proc/kcore एक वर्चुअल फ़ाइल है जो सिस्टम मेमोरी को ELF कोर इमेज के रूप में उजागर करती है। ये कैमरे MMU-रहित ARM7 कोर पर uClinux चलाते हैं, इसलिए एक ही फ्लैट एड्रेस स्पेस होता है - डंप में कैमरा एप्लिकेशन की मेमोरी के साथ-साथ कर्नेल की भी मेमोरी होती है, जिसमें वह कॉन्फ़िगरेशन ब्लॉब भी शामिल है जिसे यह एक ग्लोबल में रखता है।
यह इसलिए पहुँच योग्य है क्योंकि वेब सर्वर में एक अनऑथेंटिकेटेड आर्बिट्ररी फ़ाइल रीड है: रिक्वेस्ट हैंडलर ठीक एक लीडिंग स्लैश को हटाता है और बिना किसी ट्रैवर्सल फ़िल्टरिंग के fopen() को कॉल करता है, परिणाम को root के रूप में सर्व करता है। इसलिए //proc/kcore /proc/kcore पर रिज़ॉल्व होता है, यही कारण है कि रिक्वेस्ट पाथ में एक लीडिंग डबल स्लैश होता है।
कॉन्फ़िगरेशन ब्लॉब का एक निश्चित लेआउट होता है, इसलिए क्रेडेंशियल्स को सीधे उससे पढ़ा जा सकता है:
| Offset | Field |
|---|---|
0x00 | uint32 magic, हमेशा 0x440C9ABD |
0x04 | uint32 checksum |
0x08 | uint32 length |
0x0C | char device_id[13] 12 अपरकेस हेक्स अक्षर और एक NUL |
0x36 | struct { char name[13]; char pwd[13]; uint8 pri; } users[8] |
यह टूल /proc/kcore को स्ट्रीम करता है और प्रत्येक चंक में magic की खोज करता है। एक बार मिल जाने पर, यह users टेबल से उच्चतम विशेषाधिकार वाला अकाउंट लौटाता है।
यह टूल भेद्यता की जाँच के लिए होस्ट निर्दिष्ट करने के दो अलग-अलग तरीकों का समर्थन करता है। होस्ट ip:port प्रारूप में होने चाहिए।
| Argument | Description |
|---|---|
--host | जाँच करने के लिए एक होस्ट, कई बार निर्दिष्ट किया जा सकता है |
--file | जाँच करने के लिए होस्ट की सूची वाली एक फ़ाइल |
यह टूल भेद्यता की जाँच के लिए Censys, Shodan, और ZoomEye से होस्ट पुनर्प्राप्त करने का समर्थन करता है।
| IoT Search Engine | Argument | Required Environment Variables |
|---|---|---|
| Censys | --censys | CENSYS_PERSONAL_ACCESS_TOKEN |
| Shodan | --shodan | SHODAN_API_KEY |
| ZoomEye | --zoomeye | ZOOMEYE_API_KEY |
Censys Platform API का उपयोग करता है। platform.censys.io पर एक पर्सनल एक्सेस टोकन बनाएँ; अपने फ्री वॉलेट के बजाय किसी संगठन के विरुद्ध खोज को बिल करने के लिए CENSYS_ORGANIZATION_ID भी सेट करें। ध्यान दें कि Platform सर्च एंडपॉइंट के लिए एक पेड प्लान आवश्यक है, क्योंकि फ्री अकाउंट lookup एंडपॉइंट तक सीमित हैं।
$ pip install -r requirements.txt
Usage: main.py [-h] (--host HOST | -f FILE | --censys | --shodan | --zoomeye) [-n NUMBER] [-c CONCURRENT] [-t TIMEOUT] [-o OUTPUT]
A tool for retrieving login credentials from Netwave IP cameras using a memory dump vulnerability (CVE-2018-17240)
Options:
-h, --help show this help message and exit
--host HOST A host to check, can be specified multiple times
-f, --file FILE A file containing the hosts to check
--censys Retrieve hosts from the Censys Platform API using the personal access token specified with the CENSYS_PERSONAL_ACCESS_TOKEN environment variable
--shodan Retrieve hosts from the Shodan API using the API key specified with the SHODAN_API_KEY environment variable
--zoomeye Retrieve hosts from the ZoomEye API using the API key specified with the ZOOMEYE_API_KEY environment variable
-n, --number NUMBER The number of hosts to retrieve from the IoT search engine, by default 100
-c, --concurrent CONCURRENT
The number of hosts to check concurrently, by default 25
-t, --timeout TIMEOUT
The timeout in seconds for retrieving the credentials from the memory dump of each host, by default 300
-o, --output OUTPUT The file to write the credentials to, by default credentials.txt
यह टूल केवल शैक्षिक उद्देश्यों के लिए है। इस प्रोजेक्ट के योगदानकर्ता इस टूल के उपयोग से उत्पन्न होने वाले किसी भी नुकसान या कानूनी मुद्दों के लिए उत्तरदायी नहीं होंगे। अपने जोखिम पर उपयोग करें।