Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-12124 — استغلال إثبات المفهوم لـ CVE-2020-12124 يستهدف جهاز التوجيه Wavlink AC1200، مما يوضح حقن الأوامر غير المصادق عليه وتجاوز سعة المخزن المؤقت للمكدس في واجهات CGI. | Kitploit
أدوات/GitHubGitHub/scorpion-security-labs/cve-2020-12124
أمان الأنظمة المدمجةأمان إنترنت الأشياءتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةاستغلال تطبيقات الويبالقيادة والسيطرةتحليل الملفات الثنائيةالأوراق والأبحاث

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
التعلم والتعليم
تحليل البرامج الثابتة
GitHubscorpion-security-labs/cve-2020-12124

CVE-2020-12124

استغلال إثبات المفهوم لـ CVE-2020-12124 يستهدف جهاز التوجيه Wavlink AC1200، مما يوضح حقن الأوامر غير المصادق عليه وتجاوز سعة المخزن المؤقت للمكدس في واجهات CGI.

عرض المستودع
33منذ 8 أشهرلم تتم المراجعة بعد

تشريح استغلال إنترنت الأشياء، من التطبيق العملي إلى تنفيذ الأوامر عن بُعد

نُشر في الأصل على https://www.klogixsecurity.com/scorpion-labs-blog/anatomy-of-an-iot-exploit-from-hands-on-to-rce

بقلم ديفيد إي. بيكر، نُشر في 1 يونيو 2023

مقدمة

تتعلق هذه الدراسة بالبرامج الثابتة لموجه Wavlink Wireless-AC1200 Gigabit اعتبارًا من يونيو 2020. قد تكون الثغرات التي تمت مناقشتها هنا قد تم تصحيحها من قبل البائع أو لا، لكن هذه حالة من أبحاث الثغرات التي ستظهر الرحلة كمكافأة بحد ذاتها بدلاً من نتيجتها. أجرى المؤلف هذا البحث قبل الإفصاح العام عن الثغرات، ولكن بعد أن تم اكتشافها بشكل مستقل من قبل باحثين آخرين وإبلاغ البائع بها.

يوفر البائع البرامج الثابتة لمنتجاتهم في قسم الدعم على موقعهم الإلكتروني؛ هذه طريقة شائعة للحصول على برامج إنترنت الأشياء الثابتة وبديل مفيد عن استخراجها من ذاكرة الجهاز. البرامج الثابتة غير مشفرة، لذا يمكن استخراجها بسهولة باستخدام binwalk. تم إجراء التحليل الديناميكي مع الوصول إلى نموذج مادي للجهاز، وتم إجراء التحليل الثابت عبر Ghidra.

خلاصة مختصرة

تحتوي الواجهة الإلكترونية لموجه Wavlink Wireless-AC1200 Gigabit على عدة نقاط نهاية ضعيفة تسمح بنسخ غير مقيد للبيانات التي يوفرها المستخدم إلى مكدس التطبيق أو حتى مباشرة إلى سطر الأوامر لتحقيق تنفيذ أوامر عشوائي.

التطبيق العملي والمحلي

تشير عمليات المسح الأولية للجهاز إلى أن المورد الوحيد المكشوف كان وحدة التحكم الإدارية عبر الويب، والتي يمكن الوصول إليها من قبل المستخدمين المصادق عليهم على واجهة LAN عبر HTTP على المنفذ TCP 80. يمكن للجهاز تقديم خدمات إضافية، لكن هذه الخدمات غير مفعلة افتراضيًا. بناءً على ذلك، يركز هذا التحقيق على الواجهة الإلكترونية فقط.


مسح nmap لجهاز النموذج، يظهر فقط واجهة الويب قيد الاستماع.

الاختبارات المعتادة — مثل حقن الأوامر النموذجية الموجودة في لوحات تشخيص الأجهزة التي تسمح بحقن الأوامر في معاملات أمر ping أو traceroute — لم تسفر عن أي نتائج مثيرة للاهتمام على الفور، وهو أمر مخيب للآمال.


خيارات الإدارة المتاحة بعد المصادقة على اللوحة الإدارية عبر الويب. يمكن رؤية "USB Storage" كخيار ثانٍ.

أول واجهة (قابلة للاستغلال في النهاية) تم فحصها هنا تم العثور عليها في لوحة "USB storage"، والتي يمكن رؤيتها كخيار ثانٍ في لقطة الشاشة أعلاه. يحتوي الجهاز على منفذ USB بجوار مقابس 802.2 Ethernet، مما يشير إلى أنه يمكن أن يوفر وظيفة تخزين متصل بالشبكة (NAS).


صورة للجزء الخلفي من النموذج الفعلي، تظهر توفر USB.

مبدأ بسيط في أبحاث الثغرات هو أنه كلما زاد عدد المكونات التي يتفاعل معها جزء من الكود وزاد عدد الأجزاء المتحركة لديه، زادت احتمالية وجود كود قابل للاستغلال في الجوار. وجود قدرات NAS واعدة لأنه يشير إلى وجود كود يتفاعل بشكل متزامن مع طبقة البرمجيات للجهاز، وطبقة العتاد، والمحيط المتصل (USB storage نفسه).

واجهة الإدارة لوحدة تحكم USB Storage موضحة أدناه. وجود حقل "Workgroup" وحده يعد واعدًا، حيث سيشير إلى أن هذا الموجه WiFi قد يحاول حتى التفاعل عبر Server Message Block (SMB) — وهو أمر كبير لموجه إنترنت الأشياء. لا يمكنني عد المرات التي رأيت فيها مدخلات يقدمها المستخدم تُرسل مباشرة إلى سطر الأوامر كوسيط لدالة Unix smbpasswd.


خيارات USB storage المتاحة للمستخدمين المصادق عليهم.

فشلت المحاولات الأولية لمعالجة هذه الإعدادات بسبب عدم اكتشاف الجهاز لمحرك أقراص USB، كما هو موضح أدناه.


لن يتم حفظ التغييرات في إعدادات USB Storage ما لم يتم توصيل محرك أقراص مهيأ بشكل مناسب يدويًا بمنفذ USB بالجهاز.

ومع ذلك، بمجرد توصيل محرك أقراص مهيأ بشكل صحيح، سمح الجهاز بتعيين اسم مستخدم وكلمة مرور لـ FTP. كما كان متوقعًا، قام بوضع هذا الإدخال المقدم من المستخدم على سطر الأوامر:


حقن أمر في حقل 'password' يحقق أول وصول إلى شل مباشرة إلى نظام تشغيل الجهاز.

على الرغم من كونها مثيرة للاهتمام، إلا أنه من الصعب الشعور بحماس كبير تجاه هذه الثغرة: فهي لا تتطلب فقط وصولاً معتمدًا إلى الواجهة الإدارية للجهاز بل تتطلب أيضًا وصولاً ماديًا إلى الجهاز لمعالجة محرك أقراص USB الخاص به. يسمح الاستغلال أعلاه للباحث بالتفاعل مع مكونات نظام التشغيل الفردية (واستخراجها لأغراض الهندسة العكسية).

يمكننا القيام بعمل أفضل

كان الجهاز نظامًا مركزيًا على BusyBox يعمل بنظام Linux مع واجهة ويب مدعومة من Lighttpd. تم توفير وظيفة Common Gateway Interface (CGI) من خلال ملفات ثنائية فردية في /etc_ro/lighttpd/www/cgi-bin/، حيث تؤدي طلبات الويب إلى URIs CGI إلى تشغيل هذه الملفات الثنائية مباشرة. نظرة سريعة على nas.cgi في Ghidra تُظهر حقن الأمر في السطر 38 أدناه، والذي يرسل كلمة مرور مقدمة من المستخدم مباشرة إلى دالة do_system (وهي نفسها مجرد غلاف حول استدعاء نظام libc القياسي).


يتم وضع إدخال المستخدم على سطر الأوامر كوسيط لبرنامج chpasswd.sh النصي في السطر 38، مما يؤدي إلى حقن أمر والوصول إلى شل مباشرة إلى نظام تشغيل الجهاز.

النظر من خلال دليل /cgi-bin/ يقلل من مهمة العثور على استغلال أكثر إثارة للاهتمام إلى تعداد واجهات CGI المتاحة للمستخدم، كما هو موضح أدناه.


قائمة شاملة للملفات الثنائية CGI المتاحة على الجهاز، مأخوذة مباشرة من الشل الذي تم إنشاؤه بواسطة الاستغلال الموصوف في هذا القسم. يتم وضع إدخال المستخدم على سطر الأوامر كوسيط لبرنامج chpasswd.sh النصي في السطر 38، مما يؤدي إلى حقن أمر والوصول إلى شل مباشرة إلى نظام تشغيل الجهاز.

تبرز عدة أشياء عند الفحص الأولي. أول شيء مهم يجب ملاحظته هو أن الملفات الثنائية CGI غالبًا ما تستدعي دالة check_valid_user. تبحث هذه الطريقة لمعرفة ما إذا كان عنوان IP الذي يقوم بالطلب مخزنًا في ملف مؤقت معين على نظام الملفات. يُظهر الاختبار البسيط أن حالة مصادقة العميل لا يتم التحقق منها حتى يتم استدعاء هذه الطريقة، لذا فإن كامل سطح الكود في كل ملف ثنائي CGI قبل استدعاء هذه الدالة يمكن الوصول إليه بدون مصادقة.


تفكيك adm.cgi يظهر طريقة check_valid_user. يتم تنفيذ جميع الكود قبل هذا الاستدعاء قبل التحقق من حالة مصادقة الطالب.

ملاحظة أخرى مثيرة للاهتمام هي العدد الكبير من الطرق التي تنسخ إدخال المستخدم المقدم مباشرة على المكدس. على سبيل المثال، يظهر تفكيك wireless.cgi معامل NewName المأخوذ من جسم طلب ويب في السطرين 14 و15 متبوعًا بنسخة strcpy غير محمية لهذا الإدخال من المستخدم على المكدس في السطر 34، كما هو موضح أدناه:


السطران 14 و34 يوضحان نسخة strcpy غير محمية لمعامل NewName من جسم الطلب مباشرة على مكدس البرنامج. تفكيك adm.cgi يظهر طريقة check_valid_user. يتم تنفيذ جميع الكود قبل هذا الاستدعاء قبل التحقق من حالة مصادقة العميل.

تنزيل الأداة