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
pyrocms-ssti-fix — Un parche drop-in para CVE-2023-29689 - SSTI en PyroCMS, mediante una implementación personalizada de Twig Sandbox. | Kitploit
Herramientas/GitHubGitHub/ysaxon/pyrocms-ssti-fix
Herramientas DefensivasAnálisis de VulnerabilidadesAnálisis de CódigoExplotación de Aplicaciones WebSeguridad WebMala Configuración
GitHubysaxon/pyrocms-ssti-fix

pyrocms-ssti-fix

Un parche drop-in para CVE-2023-29689 - SSTI en PyroCMS, mediante una implementación personalizada de Twig Sandbox.

Ver Repositorio
hace 7 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

Packagist Version

🛡️ PyroCMS SSTI Fix

Solución de seguridad de integración directa para CVE-2023-29689 - Inyección de plantillas del lado del servidor que conduce a ejecución remota de código en PyroCMS 3.9.

El problema

PyroCMS permite a los usuarios administradores editar plantillas almacenadas en la base de datos. Sin sandboxing, los atacantes con acceso de administrador pueden inyectar código Twig malicioso:

root@kitploit:~
{{['id']|map('system')|join}}

Esto ejecuta comandos arbitrarios del sistema. Los mantenedores upstream consideran que esto «funciona según lo previsto» ya que los usuarios administradores son de confianza, pero en entornos multiinquilino o empresariales, «admin» ≠ «confiable con acceso al shell».

La solución

Este paquete aplica automáticamente sandbox a las plantillas editables por el usuario, mientras deja sin restricciones las plantillas legítimas de temas/complementos. Utiliza SourcePolicyInterface de Twig (contribuido upstream por el autor de este paquete) para aplicar restricciones de forma selectiva.

Instalación

root@kitploit:~
composer require ysaxon/pyrocms-ssti-fix

Desafortunadamente, debido a que PyroCMS deshabilita el autodescubrimiento, tendrás que añadir el serviceProvider manualmente.

Puedes hacerlo con:

root@kitploit:~
sed -i "/App\\\Providers\\\AppServiceProvider::class,/a \        YSaxon\\\PyroCmsSstiFix\\\SandboxServiceProvider::class," config/app.php

Requisitos

  • PHP 7.4+ o 8.0+
  • Twig 2.16+ o 3.9+ (para soporte de SourcePolicyInterface)
  • Laravel 6.0+ / PyroCMS 3.x

Cómo funciona

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                     Twig Render Request                      │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    StorageSourcePolicy                       │
│                                                              │
│  Is template from storage path (database/user-editable)?     │
│                                                              │
│     YES ──────────────────►  Enable Sandbox                  │
│      │                       - Block: map, filter, reduce    │
│      │                       - Block: dangerous tags         │
│      │                       - Whitelist safe operations     │
│                                                              │
│     NO ───────────────────►  No Sandbox                      │
│                              (Theme/addon templates work     │
│                               normally)                      │
└─────────────────────────────────────────────────────────────┘

Configuración (opcional)

La configuración predeterminada es segura y funciona en la mayoría de las instalaciones. Para personalizarla:

root@kitploit:~
php artisan vendor:publish --tag=pyrocms-ssti-fix-config

Esto crea config/pyrocms-ssti-fix.php:

root@kitploit:~
return [
    // Master switch
    'enabled' => env('PYROCMS_SSTI_FIX_ENABLED', true),

    // Override auto-detected storage path
    'storage_path' => env('PYROCMS_SSTI_FIX_STORAGE_PATH', null),

    // Customize allowed tags/filters/functions/methods/properties
    'policy' => [
        'tags' => [SecurityPolicyDefaults::INCLUDE_DEFAULTS],
        'filters' => [SecurityPolicyDefaults::INCLUDE_DEFAULTS],
        // ... see config file for full options
    ],
];

Qué está bloqueado

La política de seguridad predeterminada bloquea estas características peligrosas en las plantillas en sandbox:

Filtros (vectores de RCE)

  • map - {{['cmd']|map('system')}} ejecuta comandos del shell
  • filter - Puede llamar funciones PHP arbitrarias
  • reduce - Puede llamar funciones PHP arbitrarias

Etiquetas (ataques de inclusión)

  • include, extends, block, macro, import, embed, use

Funciones

  • source - Lee el contenido de archivos arbitrarios
  • include - Incluye otras plantillas
  • template_from_string - Crea plantillas a partir de cadenas

Qué está permitido

Las operaciones seguras siguen disponibles en las plantillas en sandbox:

root@kitploit:~
{# Variables #}
{{ entry.title }}
{{ user.name|upper }}

{# Loops and conditionals #}
{% for item in items %}
    {% if item.active %}
        {{ item.name }}
    {% endif %}
{% endfor %}

{# Safe filters #}
{{ text|escape }}
{{ date|date('Y-m-d') }}
{{ items|length }}
{{ name|lower|trim }}

{# Safe functions #}
{{ max(a, b) }}
{{ random(['red', 'blue', 'green']) }}

Ampliando la lista blanca

Si tus plantillas de administración necesitan legítimamente características adicionales:

root@kitploit:~
// config/pyrocms-ssti-fix.php
'policy' => [
    'filters' => [
        SecurityPolicyDefaults::INCLUDE_DEFAULTS,
        'my_custom_filter',  // Add specific filter
    ],
    'methods' => [
        SecurityPolicyDefaults::INCLUDE_DEFAULTS,
        'App\Models\Post' => ['getTitle', 'getSummary'],
    ],
],

Probando la corrección

Después de la instalación, verifica que el exploit esté bloqueado:

  1. Ve a PyroCMS admin → Usuarios → Roles
  2. Edita el campo de descripción de un rol
  3. Introduce: {{['id']|map('system')|join}}
  4. Guarda y visualiza

Antes de la corrección: Muestra la salida del comando id (o falla) Después de la corrección: Muestra un error o [rendering failed: Filter "map" is not allowed.]

Solución de problemas

"Twig no encontrado en el contenedor"

El paquete no pudo encontrar Twig. Esto normalmente significa:

  • PyroCMS/streams-platform aún no está completamente cargado
  • No estás ejecutando en un entorno PyroCMS

Habilita el modo de depuración para ver los detalles:

root@kitploit:~
PYROCMS_SSTI_FIX_DEBUG=true

Plantillas legítimas que se rompen

Si las plantillas editables por el administrador usan características que ahora están bloqueadas:

  1. Revisa los registros para ver qué característica fue bloqueada
  2. Añádela a la lista blanca en la configuración (si es seguro)
  3. O refactoriza la plantilla para que use las características permitidas

Preocupaciones de rendimiento

El paquete almacena en caché todas las comprobaciones de rutas y las búsquedas de métodos/propiedades. En el modo auto, solo las plantillas de la ruta de almacenamiento incurren en la sobrecarga del sandbox.

Notas de seguridad

  • Este paquete no corrige el problema arquitectónico subyacente (Twig renderizando entrada del usuario)
  • Mitiga la explotación restringiendo lo que pueden hacer las plantillas en sandbox
  • Los usuarios administradores aún pueden crear plantillas molestas; simplemente no pueden lograr RCE
  • Considera endurecimiento adicional (reglas WAF, CSP, etc.) para defensa en profundidad

Créditos

  • Yaakov Saxon - Autor del paquete, contribuidor de SourcePolicyInterface a Twig
  • Twig PR #3893 - Contribución upstream que permite el sandbox selectivo

Licencia

Licencia MIT: consulta el archivo LICENSE.

Relacionados

  • CVE-2023-29689 - Entrada de NVD
  • GHSA-w7vm-4v3j-vgpw - Aviso de GitHub
  • Documentación del sandbox de Twig
Descargar herramienta