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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-100671-poc — أداة تحقق محلية فقط لإثبات المفهوم لـ CVE-2026-100671، تعيد إنتاج كشف ملف تعريف ارتباط الجلسة في ذاكرة التخزين المؤقت لصفحات Grav Twig وإعادة تشغيله ضد أهداف loopback. | Kitploit
أدوات/GitHubGitHub/canhieu/cve-2026-100671-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالمحاكاة الافتراضية للأمانأمن الويباختبار الاختراق
GitHubcanhieu/cve-2026-100671-poc

cve-2026-100671-poc

أداة تحقق محلية فقط لإثبات المفهوم لـ CVE-2026-100671، تعيد إنتاج كشف ملف تعريف ارتباط الجلسة في ذاكرة التخزين المؤقت لصفحات Grav Twig وإعادة تشغيله ضد أهداف loopback.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-100671 — تسريب ملف تعريف ارتباط جلسة Grav عبر Twig

أداة تحقق محلية بسيطة للاستيلاء على جلسة Grav content-Twig/page-cache الذي تم إصلاحه في Grav 2.0.25.

الإشعارات:

  • CVE-2026-100671
  • GHSA-pp89-h475-7gj6
  • إصدار Grav 2.0.25

النطاق

exploit.py مقيّد عمداً بأهداف loopback:

  • 127.0.0.1
  • ::1
  • localhost

يرفض المضيفين البعيدين، ويتبع فقط عمليات إعادة التوجيه إلى loopback، ويستخدم عملاء HTTP من مكتبة Python القياسية، ويطبّق مهل الطلبات، ولا يطبع أبداً رموز bearer أو ملفات تعريف الارتباط أو أجسام الاستجابة.

استخدمه فقط ضد نسخة Grav تملكها أو لديك تفويض صريح لاختبارها. ينشئ السكربت صفحة إثبات عامة في المختبر المحلي. احذف تلك الصفحة بعد الاختبار إذا كان المختبر يحتفظ بالمحتوى بين التشغيلات.

سلسلة الثغرة

  1. ينشر كاتب صفحات منخفض الصلاحيات محتوى يحتوي على Twig داخل sandbox.
  2. يقرأ get_cookie() ملف تعريف ارتباط جلسة المسؤول الزائر من جهة الخادم.
  3. يخزّن Grav مخرجات الصفحة بعد Twig في ذاكرة تخزين مؤقت دون هوية الجلسة.
  4. يتلقى طلب غير مصادق عليه قيمة ملف تعريف الارتباط المخزّنة مؤقتاً.
  5. تعيد مصادقة إعادة تشغيل تلك القيمة ضد API المحلي بصفة المسؤول.

يحتاج حساب كتابة الصفحات فقط إلى مسار الكتابة منخفض الصلاحيات الموثّق. لا يحتاج إلى api.pages.read أو admin.* أو وصول super-admin. يحتاج المسؤول الضحية فقط إلى زيارة الصفحة العامة مرة واحدة.

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

  • Grav 2.0.19 حتى 2.0.24: معرّضة للثغرة مع إعداد content-Twig الافتراضي المرفق.
  • Grav 2.0.0 حتى 2.0.18، و1.7.x: متأثرة فقط عندما كان content Twig ممكّناً صراحةً.
  • Grav 2.0.25: مُصلَح.

متطلبات المختبر

شغّل مختبر Grav محلياً مع:

  • إضافة Grav API ممكّنة؛
  • إضافة Grav Login ممكّنة؛
  • حساب كاتب واحد منخفض الصلاحيات قادر على الحصول على رمز API وإنشاء صفحات؛
  • حساب مسؤول واحد؛
  • مسار الصفحة الهدف قابل للقراءة العامة.

هذا المستودع المكوّن من ملفين لا يوفّر Grav أو PHP أو الإضافات أو الحسابات.

التشغيل

عيّن بيانات الاعتماد عبر متغيرات البيئة حتى لا تدخل أبداً إلى نظام التحكم بالمصدر:

export GRAV_BASE_URL=http://127.0.0.1:8080
export GRAV_WRITER_USERNAME=low
export GRAV_WRITER_PASSWORD='local-writer-password'
export GRAV_ADMIN_USERNAME=admin
export GRAV_ADMIN_PASSWORD='local-admin-password'

python3 exploit.py

يجب أن يبقى عنوان URL الأساسي على loopback. المسار الافتراضي عشوائي. يمكن اختيار مسار ثابت عند مقارنة التشغيلات:

python3 exploit.py --route /cookie-proof-24

النتيجة المتوقعة عند وجود الثغرة:

page_create_status=201
admin_login_status=200
victim_page_status=200
attacker_page_status=200
cached_victim_cookie_visible_to_attacker=yes
admin_cookie_value_match=yes
replayed_cookie_api_status=200
result=VULNERABLE

يخرج الأمر بالقيمة 0 عند إعادة إنتاج النتيجة المتوقعة، و1 عند عدم إعادة إنتاجها، و2 عند حدوث خطأ في الإعداد أو النقل.

فحص الإصدار المُصلَح

شغّل الأمر نفسه ضد Grav 2.0.25:

python3 exploit.py --expect fixed

السلوك المُصلَح المتوقع: لا قيمة جلسة مرئية للمهاجم ولا إعادة تشغيل ناجحة للجلسة. تخرج النتيجة المُصلَحة النظيفة بالقيمة 0 مع --expect fixed.

المعالجة

قم بالترقية إلى Grav 2.0.25 أو أحدث. بالنسبة للنشرات الأقدم، يسرد الإشعار هذه الضوابط المؤقتة:

  • عطّل content Twig باستخدام security.twig_content.process_enabled: false؛ أو
  • اضبط system.pages.never_cache_twig: true؛
  • امسح ذاكرات التخزين المؤقت الحالية لـ Grav؛
  • دوّر جلسات المسؤول.

لا تعتبر HttpOnly أو Secure أو SameSite إصلاحاً: قراءة ملف تعريف الارتباط المعرّض للثغرة تحدث من جهة الخادم أثناء عرض Twig.

الإفصاح

تم الإبلاغ بواسطة canhieu. هذا المستودع أداة مساعدة لإعادة إنتاج إشعار عام بالفعل، وليس ماسحاً بعيداً أو أداة لجمع بيانات الاعتماد.

تنزيل الأداة