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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-25265-25266 — إثبات مفهوم لاستغلال يوضح CVE-2020-25265 و CVE-2020-25266، باستخدام ملف MP3 معد لتحقيق تنفيذ تعليمات برمجية عشوائية عبر libappimage و appimaged، متجاوزًا تطبيقات النظام. | Kitploit
أدوات/GitHubGitHub/refi64/cve-2020-25265-25266
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالحركة الجانبيةتطوير الحمولاتاستغلال الملفات الثنائية
GitHubrefi64/cve-2020-25265-25266

CVE-2020-25265-25266

إثبات مفهوم لاستغلال يوضح CVE-2020-25265 و CVE-2020-25266، باستخدام ملف MP3 معد لتحقيق تنفيذ تعليمات برمجية عشوائية عبر libappimage و appimaged، متجاوزًا تطبيقات النظام.

عرض المستودع
2112منذ 5 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2020-25265 / CVE-2020-25266

  • CVE-2020-25265
  • CVE-2020-25266

هذا هو إثبات مفهوم (PoC) لاستغلال ثغرات libappimage و appimaged.

باستخدام مزيج من الثغرتين، يمكن للمرء إنشاء ملف لا يبدو كصورة AppImage، ومع ذلك يتم التقاطه ضمنيًا بواسطة appimaged وتثبيته، متجاوزًا الإصدار المثبت نظاميًا من نفس التطبيق.

في هذه الحالة، تم استخدام ملف MP3 كحمولة، وكان Nautilus هو التطبيق الذي تم تجاوزه.

الإصدارات المتأثرة

يؤثر هذا على جميع إصدارات appimaged وجميع إصدارات libappimage الأقدم من 1.0.3.

ما يحدث

  • لا يحتوي ترميز MP3 على رأس ملف، وبالتالي يجب على برامج الوسائط المسح عبر الملف بحثًا عن رأس إطار. هذا يعني أنه يمكننا وضع رؤوس ELF و AppImage من النوع 2 في مقدمة الملف، وسيظل MP3 قابلاً للتشغيل. هذا يجعل MP3 هدفًا رئيسيًا لاستخدامه في إثبات المفهوم هذا.

  • يتم تعديل ملف MP3 لاحتواء حمولة ثنائية بعد الوسائط المشغلة، مع استخدام سكريبت Dart لوضع بيانات MP3 بين الملف التنفيذي للحمولة ورأس ELF. (لاحظ أنني لم أعدّل مواقع الرموز في جدول الرموز، لأن ذلك كان سيستغرق جهدًا أكبر ولم يكن ضروريًا لإثبات المفهوم هذا.) الحمولة الثنائية أقل من 1 ميجابايت، وبالتالي لا تسبب زيادة ملحوظة في حجم الملف. في نهاية الملف، يتم إلحاق نظام ملفات squashfs، يحتوي على ملف سطح المكتب المزيف لـ Nautilus والأيقونة.

    لاحظ أنه على الرغم من أن إضافة MP3 إلى نهاية squashfs كانت ستعمل تقنيًا، إلا أن لديها فرصة أعلى لإرباك مشغلات الوسائط بسبب ظهورها متأخرًا جدًا في الملف، بينما بعد رأس ELF مباشرة هي بضعة عشرات من البايتات فقط داخل الملف.

  • يقوم appimaded بمسح جميع الملفات في جميع الدلائل المتعقبة، بغض النظر عن امتداد الملف. عندما يلتقط MP3، يكتشف رؤوس ELF و AppImage، ويشرع في استخراج ملف سطح المكتب الموجود بداخله.

  • يتم الآن كتابة ملف سطح المكتب المارق ويشير إلى MP3 الخبيث. عندما يقوم المستخدم بعد ذلك بتشغيل "الملفات" (Files)، سيبدأ تشغيل الملف التنفيذي ELF المضمن في MP3 بدلاً من التثبيت النظامي.

  • عادةً، سيتم تسمية ملف سطح المكتب باسم "appimagekit_...desktop"، وبالتالي لن يكون قادرًا على تجاوز أي تطبيقات نظامية بالكامل. ومع ذلك، فإن Integrator.cpp في libappimage يلتقط حقل الاسم بدون التحقق أو الهروب، وبالتالي يمكننا إضافة هذا إلى ملف سطح المكتب المارق:

    Name=/../org.gnome.Nautilus
    Name[en]=Files
    

    وسيتم كتابة الملف إلى ~/.local/share/applications/org.gnome.Nautilus.desktop، مما يؤدي إلى إخفاء Nautilus المثبت نظاميًا.

التخفيف

تأكد من أن إصدار libappimage المثبت لديك هو على الأقل 1.0.3، الذي يصلح التحقق من حقل Name. من الجدير بالذكر أن هذا لا يشمل libappimage الخاص بدبيان في الوقت الحالي، وهو قديم جدًا.

جميع إصدارات appimaged معرضة للخطر، وتم إهمال المشروع. go-appimage يتجنب مشكلة اسم الملف عن طريق التقاط صور appimage المسماة *.AppImage فقط. AppImageLauncher يتجنب مشكلة اسم الملف عن طريق طلب الإذن من المستخدم للتثبيت قبل تنفيذ التثبيت.

الاختبار

ضع ملفًا صوتيًا عشوائيًا في audio.mp3 وقم بتشغيل dart bin/write_mp3.dart لبناء الحمولة وكتابة ملف MP3 المعدل. تحتاج إلى تثبيت Dart SDK و FreePascal لكي يعمل هذا.

ملاحظات التنفيذ

تم استخدام Pascal للثنائي لأنه أنتج أصغر الملفات التنفيذية المرتبطة بشكل ثابت من بين اللغات الأخرى التي تم اختبارها (C مرتبطة بشكل ثابت باستخدام musl، Go) عند استخدام وظائف العمليات الفرعية.

أثناء الاختبار، تم استخدام world.execute(me) كملف صوتي، لأنه بدا مناسبًا.

تنزيل الأداة