
أداة لاسترجاع بيانات اعتماد تسجيل الدخول من كاميرات Netwave IP باستخدام ثغرة تفريغ الذاكرة (CVE-2018-17240)
أداة لاسترداد بيانات اعتماد تسجيل الدخول من كاميرات Netwave IP باستخدام ثغرة تفريغ الذاكرة (CVE-2018-17240). استُلهم هذا المشروع من expcamera ويقدّم تحسينات في الأداء والكفاءة. تعمل هذه الأداة على جميع المنصات لأنها لا تستخدم أي أدوات Linux CLI عبر أوامر shell كما تفعل expcamera.
في أنظمة Linux، يُعدّ /proc/kcore ملفًا افتراضيًا يعرض ذاكرة النظام كصورة ELF core. تعمل هذه الكاميرات بنظام uClinux على نواة ARM7 بدون MMU، لذا يوجد فضاء عناوين مسطّح واحد - يحتوي التفريغ على ذاكرة تطبيق الكاميرا إلى جانب ذاكرة النواة، بما في ذلك كتلة الإعدادات التي يحتفظ بها في متغير عام.
يمكن الوصول إليه لأن خادم الويب يعاني من قراءة ملفات عشوائية بدون مصادقة: يقوم معالج الطلبات بإزالة شرطة مائلة بادئة واحدة فقط ويستدعي fopen() دون أي تصفية لاجتياز المسارات، ويقدّم النتيجة بصلاحيات root. لذلك يُترجم //proc/kcore إلى /proc/kcore، ولهذا يحمل مسار الطلب شرطة مائلة مزدوجة بادئة.
لِكتلة الإعدادات تخطيط ثابت، لذا يمكن قراءة بيانات الاعتماد مباشرة منها:
| الإزاحة | الحقل |
|---|---|
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. وبمجرد العثور عليها، تُعيد حساب أعلى صلاحية من جدول المستخدمين.
تدعم هذه الأداة طريقتين مختلفتين لتحديد المضيفين للتحقق من الثغرة. يجب أن تكون المضيفين بصيغة ip:port.
| الوسيط | الوصف |
|---|---|
--host | مضيف للتحقق منه، يمكن تحديده عدة مرات |
--file | ملف يحتوي على قائمة المضيفين للتحقق منها |
تدعم هذه الأداة استرداد المضيفين من Censys وShodan وZoomEye للتحقق من الثغرة.
| محرك بحث إنترنت الأشياء | الوسيط | متغيرات البيئة المطلوبة |
|---|---|---|
| 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
هذه الأداة لأغراض تعليمية فقط. لن يتحمل المساهمون في هذا المشروع أي مسؤولية عن أي أضرار أو مشكلات قانونية قد تنشأ عن استخدام هذه الأداة. استخدمها على مسؤوليتك الخاصة.