
CVE-2023-33381: حقن أوامر نظام التشغيل في MitraStar GPT-2741GNAC
عند تسجيل الدخول عبر SSH، لاحظت فورًا مجموعة الأوامر والخيارات المحدودة المتاحة. أصبح واضحًا أنني محصور في بيئة شل مقيدة.

بعد استكشاف العديد من الثغرات المعروفة، قررت التعمق في البحث عن ثغرات جديدة. للبدء، قمت بتسجيل الدخول إلى البوابة الإدارية وبدأت في اختبار العديد من الوظائف التي قد تؤدي إلى حقن أوامر نظام التشغيل. داخل قائمة التشخيص، صادفت ميزة معينة تسمح لي باختبار الاتصال باستخدام أوامر ping وtraceroute.


لذا، قررت تجربة شيء خفي بإضافة الحرف ";" إلى أمري. قمت بتنفيذ "cat /etc/passwd" وتخيل ماذا؟ تم تنفيذ الأمر بنجاح.

أخذت الأمور خطوة أبعد ونفذت الأمر "sed" لاستبدال إدخال الشل المقيد في ملف "/etc/passwd" بشل تفاعلي كامل.

كما هو موضح بوضوح في الصورة أدناه، التعديلات التي أجريتها مكنتني من تسجيل الدخول وتنفيذ الأوامر بحرية مثل "uname" و"cat"

بما أنني حصلت على صلاحيات إدارية كاملة، لم أستطع مقاومة التعمق أكثر للكشف عن المكون المعرض للخطر. أثناء فحص طلبات المتصفح، لاحظت شيئًا مثيرًا للاهتمام. كان هناك ملفا CGI، "ping.cgi" و"DiagGeneral.cgi"، يتم استهدافهما بواسطة الطلبات.

بعد الحصول على الملفات، قضيت وقتًا ممتعًا في الهندسة العكسية باستخدام Ghidra. إليك الجزء المثير للاهتمام: في ملف "ping.cgi"، لاحظت أن معامل PingIPAddr كان يؤخذ مباشرة من إدخال المستخدم دون أي تنقية مناسبة. تم تخزين معامل PingIPAddr المأخوذ من إدخال المستخدم للاستخدام المستقبلي باستخدام الدالة tcapi_set.

أخيرًا، في ملف DiagGeneral.cgi، تم استرداد معامل PingIPAddr باستخدام الدالة tcapi_get ثم استخدامه مباشرة في الدالة system دون أي تنقية. هذا الخلل يخلق ثغرة حقن أوامر، مما يتيح تنفيذ أوامر عشوائية غير مصرح بها على النظام.
