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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
joomla-media-override — Joomla 6.1.3 - عالي - عن بُعد - استبدال - استبدال متبقٍّ في مدير الوسائط | Kitploit
أدوات/GitHubGitHub/abraxas/joomla-media-override
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالمحاكاة الافتراضية للأمانأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubabraxas/joomla-media-override

joomla-media-override

Joomla 6.1.3 - عالي - عن بُعد - استبدال - استبدال متبقٍّ في مدير الوسائط

عرض المستودع
منذ 3 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - joomla-media-override

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  joomla-media-override

joomla-media-override

الفئة: صلاحية متبقية الوصول: عن بُعد

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

CVE-2026-48947 علّم واجهة برمجة وسائط خدمة الويب أن تطلب core.edit عند تعيين override. لكن واجهة JSON API الخاصة بالموقع لا تزال لا تفعل ذلك. المستخدم الافتراضي Author لديه core.create على com_media وليس لديه core.edit. يعتبر موزّع الموقع أن core.create كافٍ ويحمّل ApiController الخاص بالمسؤول. ثم تمرّر postFiles() قيمة override مباشرة إلى createFile().

يمكن لمستخدم Author عادي استبدال ملف موجود بالفعل على القرص. يستمر الزوار في الوصول إلى نفس الرابط العام ويحصلون على البايتات الجديدة.

المعرّفلا يوجد CVE بعد
الفئةصلاحية متبقية / سلامة
الوصولعن بُعد (Author افتراضي، بدون رمز API)
CWECWE-863، CWE-639
CVSSمتوسط: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
المنتجJoomla CMS
المتأثر6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)، واجهة JSON API الخاصة بـ com_media في الموقع
المصادقةAuthor افتراضي (المجموعة 3). بدون رمز API.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

تسجيل الدخول كمستخدم Author عادي واستبدال ملف موجود بالفعل على الموقع. هذا تشويه / تبديل خادع للوسائط المخزّنة، وليس استيلاءً على الموقع. قائمة حظر الامتدادات لم تتغير، لذا هذا ليس رفع ملف .php.

الصلاحيةالطريقة / المسارالنوعمُثبت مختبريًا أو مُستنتج
الكتابة فوق ملف وسائط موجود (شعار، صورة مقال)الموقع POST /index.php?option=com_media&task=api.files&format=json&path=local-images:/ مع JSON override: trueسلامةمُثبت مختبريًا. HTTP 200، تغيّر SHA على القرص، طلب GET العام /images/joomla_black.png قدّم ملف PNG الجديد الذي يحمل JOOMLA-MEDIA-OVERRIDE-WITNESS
تشويه أي شيء لا يزال يشير إلى ذلك الرابطنفس المسار العام، بدون كسر التخزين المؤقتسلامةمُثبت مختبريًا أن البايتات العامة تغيّرت. مُستنتج لمحولات أخرى تحت images/
إنشاء ملف مسموح جديدنفس POST بدون overrideمقصودAuthor لديه core.create على com_media
التعديل عبر PUTPUT لنفس المهمة، المسار يتضمن اسم الملفلا ينطبقمُثبت مختبريًا مغلق. HTTP 403. putFiles() تتطلب بالفعل core.edit
الإنشاء عندما يكون الاسم موجودًا، بدون overridePOST override: false (افتراضي)لا ينطبقمُثبت مختبريًا مغلق. HTTP 409، SHA الأصلي لم يتغير حتى POST الـ override
رفع .php أو أنواع مرفوضة أخرىقائمة حظر createFile / isMediaFileلا ينطبقمُستنتج مغلق. هذا المختبر يرسل PNG فقط
استدعاء واجهة برمجة وسائط خدمة الويب مع override/api/index.php/v1/media/filesلا ينطبقمُستنتج مغلق. MediaController::allowAdd تتحقق من core.edit عند تعيين override (CVE-2026-48947)
Super User / RCEلا ينطبقلا ينطبقمغلق. Author يبقى Author

كيف وجدته

ثبّتّ 6.1.3 بعد موجة JSST في 2026-07/08. واجهة Groups API تتطلب بالفعل core.admin. وسائط خدمة الويب تتطلب بالفعل core.edit عند override. لكن المتحكم الداخلي لا يزال لا يفعل ذلك.

المستخدم الافتراضي Author لديه core.create على com_media ولا شيء في core.edit:

{"core.admin":{"7":1},"core.manage":{"6":1},"core.create":{"3":1},"core.delete":{"5":1}}

موزّع الموقع Dispatcher يسمح بمرور core.create ويحمّل ApiController الخاص بالمسؤول. ثم postFiles():

if (!$this->app->getIdentity()->authorise('core.create', 'com_media')) {
    throw new \Exception(Text::_('JLIB_APPLICATION_ERROR_CREATE_RECORD_NOT_PERMITTED'), 403);
}
$override     = $content->get('override', false);
if ($mediaContent) {
    $name = $this->getModel()->createFile($adapter, $name, $path, $mediaContent, $override);

خدمة الويب المُصلحة (api/.../MediaController.php):

if ($this->input->json->get('override', false)) {
    return $user->authorise('core.edit', 'com_media');
}

المنعطفات الخاطئة المسجّلة بالفعل: اعتبار PUT هو الصلاحية المتبقية (PUT بالفعل 403)؛ اعتبار مسار خدمة الويب لا يزال مفتوحًا (CVE-2026-48947 أغلقه)؛ قراءة 409 بدون override كخطأ (هذا هو مسار الإنشاء-إذا-غاب المقصود). مسرحية: reverse shell. الدليل هو POST override 200 بالإضافة إلى PUT 403 بالإضافة إلى GET العام لملف PNG الشاهد.

نفس بقايا التثبيت: levels API، menu items API، articles catid.

المختبر

python3 joomla-media-override-Abraxas-Labs.py

أو

cd lab
./run.sh

الهدف فقط http://127.0.0.1:19540. الصورة joomla:6.1.3-php8.3-apache بالإضافة إلى mariadb:11.4.

SUCCESS joomla-media-override post-http=200 override=yes bytes-changed=yes put-http=403 no-edit=yes conflict-http=409 JOOMLA-MEDIA-OVERRIDE-WITNESS

الإصلاح

نفس فحص override -> core.edit كما في MediaController::allowAdd داخل ApiController::postFiles() قبل createFile(). أبقِ PUT على core.edit.

المراجع

  • github.com/joomla/joomla-cms وسم 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
  • ApiController.php postFiles
  • قريب مُرقّع (ليس هذا المتحكم): CVE-2026-48947
  • نفس الوسم: joomla-levels-api · joomla-menu-items-api · joomla-articles-catid
  • CWE-863 · CWE-639

الترخيص

GNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. بدون ضمان.

تنزيل الأداة