Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pyrocms-ssti-fix — Uma correção plug-and-play para CVE-2023-29689 - SSTI no PyroCMS, através de uma implementação personalizada do Twig Sandbox | Kitploit
Ferramentas/GitHubGitHub/ysaxon/pyrocms-ssti-fix
Ferramentas DefensivasAnálise de VulnerabilidadesAnálise de CódigoExploração de Aplicações WebSegurança WebConfiguração Incorreta
GitHubysaxon/pyrocms-ssti-fix

pyrocms-ssti-fix

Uma correção plug-and-play para CVE-2023-29689 - SSTI no PyroCMS, através de uma implementação personalizada do Twig Sandbox

Ver Repositório
há 7 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Packagist Version

🛡️ Correção de SSTI no PyroCMS

Correção de segurança plug-and-play para CVE-2023-29689 - Injeção de Template do Lado do Servidor levando à Execução Remota de Código no PyroCMS 3.9.

O Problema

PyroCMS permite que usuários administradores editem templates armazenados no banco de dados. Sem sandbox, atacantes com acesso de administrador podem injetar código Twig malicioso:

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

Isso executa comandos arbitrários do sistema. Os mantenedores upstream consideram isso "funcionando como pretendido" já que usuários administradores são confiáveis - mas em ambientes multi-inquilino ou empresariais, "admin" ≠ "confiável com acesso ao shell".

A Solução

Este pacote automaticamente coloca em sandbox templates editáveis por usuários enquanto deixa templates legítimos de temas/addons irrestritos. Ele usa a SourcePolicyInterface do Twig (contribuída upstream pelo autor deste pacote) para aplicar restrições seletivamente.

Instalação

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

Infelizmente, devido ao PyroCMS desabilitar a autodescoberta você precisará adicionar o serviceProvider manualmente.

Você pode fazer isso com

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

Requisitos

  • PHP 7.4+ ou 8.0+
  • Twig 2.16+ ou 3.9+ (para suporte a SourcePolicyInterface)
  • Laravel 6.0+ / PyroCMS 3.x

Como 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)                      │
└─────────────────────────────────────────────────────────────┘

Configuração (Opcional)

As configurações padrão são seguras e funcionam para a maioria das instalações. Para personalizar:

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

Isso cria 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
    ],
];

O que é Bloqueado

A política de segurança padrão bloqueia esses recursos perigosos em templates em sandbox:

Filtros (vetores de RCE)

  • map - {{['cmd']|map('system')}} executa comandos do shell
  • filter - Pode chamar funções PHP arbitrárias
  • reduce - Pode chamar funções PHP arbitrárias

Tags (ataques de inclusão)

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

Funções

  • source - Lê conteúdos de arquivos arbitrários
  • include - Inclui outros templates
  • template_from_string - Cria templates a partir de strings

O que é Permitido

Operações seguras permanecem disponíveis em templates em sandbox:

root@kitploit:~
{# Variáveis #}
{{ entry.title }}
{{ user.name|upper }}

{# Laços e condicionais #}
{% for item in items %}
    {% if item.active %}
        {{ item.name }}
    {% endif %}
{% endfor %}

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

{# Funções seguras #}
{{ max(a, b) }}
{{ random(['red', 'blue', 'green']) }}

Estendendo a Lista de Permissões

Se seus templates de administrador precisam legitimamente de recursos adicionais:

root@kitploit:~
// config/pyrocms-ssti-fix.php
'policy' => [
    'filters' => [
        SecurityPolicyDefaults::INCLUDE_DEFAULTS,
        'my_custom_filter',  // Adicionar filtro específico
    ],
    'methods' => [
        SecurityPolicyDefaults::INCLUDE_DEFAULTS,
        'App\Models\Post' => ['getTitle', 'getSummary'],
    ],
],

Testando a Correção

Após a instalação, verifique se o exploit está bloqueado:

  1. Vá para o admin do PyroCMS → Usuários → Papéis
  2. Edite o campo de descrição de um papel
  3. Insira: {{['id']|map('system')|join}}
  4. Salve e visualize

Antes da correção: Mostra a saída do comando id (ou trava) Após a correção: Mostra erro ou [rendering failed: Filter "map" is not allowed.]

Solução de Problemas

"Twig not found in container"

O pacote não conseguiu encontrar o Twig. Isso geralmente significa:

  • PyroCMS/streams-platform ainda não foi totalmente carregado
  • Você não está executando em um ambiente PyroCMS

Ative o modo de depuração para ver detalhes:

root@kitploit:~
PYROCMS_SSTI_FIX_DEBUG=true

Templates legítimos quebrando

Se templates editáveis por admin usam recursos que agora estão bloqueados:

  1. Verifique os logs para saber qual recurso foi bloqueado
  2. Adicione-o à lista de permissões na configuração (se seguro)
  3. Ou refatore o template para usar recursos permitidos

Preocupações com desempenho

O pacote armazena em cache todas as verificações de caminho e buscas de método/propriedade. No modo auto, apenas templates no caminho de armazenamento incorrem em overhead de sandbox.

Notas de Segurança

  • Este pacote não corrige o problema arquitetônico subjacente (Twig renderizando entrada do usuário)
  • Ele mitiga a exploração restringindo o que templates em sandbox podem fazer
  • Usuários admin ainda podem criar templates irritantes; eles apenas não conseguem obter RCE
  • Considere endurecimento adicional (regras de WAF, CSP, etc.) para defesa em profundidade

Créditos

  • Yaakov Saxon - Autor do pacote, contribuidor da SourcePolicyInterface no Twig
  • Twig PR #3893 - Contribuição upstream permitindo sandbox seletivo

Licença

Licença MIT - veja o arquivo LICENSE.

Relacionados

  • CVE-2023-29689 - entrada no NVD
  • GHSA-w7vm-4v3j-vgpw - Aviso do GitHub
  • Twig Sandbox Documentation
Baixar ferramenta