Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pyrocms-ssti-fix — Una correzione pronta all'uso per CVE-2023-29689 - SSTI in PyroCMS, tramite un'implementazione personalizzata del Sandbox di Twig | Kitploit
Strumenti/GitHubGitHub/ysaxon/pyrocms-ssti-fix
Strumenti DifensiviAnalisi delle VulnerabilitàAnalisi del CodiceSfruttamento di Applicazioni WebSicurezza WebConfigurazione Errata
GitHubysaxon/pyrocms-ssti-fix

pyrocms-ssti-fix

Una correzione pronta all'uso per CVE-2023-29689 - SSTI in PyroCMS, tramite un'implementazione personalizzata del Sandbox di Twig

Vedi Repository
28 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Packagist Version

🛡️ Correzione SSTI per PyroCMS

Correzione di sicurezza immediata per CVE-2023-29689 - Iniezione di template lato server che porta all'esecuzione di codice remoto in PyroCMS 3.9.

Il Problema

PyroCMS consente agli utenti amministratori di modificare i template memorizzati nel database. Senza sandboxing, gli aggressori con accesso admin possono iniettare codice Twig dannoso:

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

Questo esegue comandi di sistema arbitrari. I manutentori a monte considerano questo comportamento come "funzionante come previsto" poiché gli utenti admin sono considerati affidabili - ma in ambienti multi-tenant o aziendali, "admin" non significa "affidabile per l'accesso alla shell".

La Soluzione

Questo pacchetto applica automaticamente il sandboxing ai template modificabili dall'utente, lasciando illimitati i template legittimi di temi/plugin. Utilizza SourcePolicyInterface di Twig (contribuito a monte dall'autore di questo pacchetto) per applicare selettivamente le restrizioni.

Installazione

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

Purtroppo, a causa della disattivazione dell'autodiscovery da parte di PyroCMS, dovrai aggiungere tu stesso il serviceProvider.

Puoi farlo con

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

Requisiti

  • PHP 7.4+ o 8.0+
  • Twig 2.16+ o 3.9+ (per il supporto a SourcePolicyInterface)
  • Laravel 6.0+ / PyroCMS 3.x

Come Funziona

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

Configurazione (Opzionale)

Le impostazioni predefinite sono sicure e funzionano per la maggior parte delle installazioni. Per personalizzare:

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

Questo 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
    ],
];

Cosa è Bloccato

La politica di sicurezza predefinita blocca queste funzionalità pericolose nei template con sandbox:

Filtri (vettori RCE)

  • map - {{['cmd']|map('system')}} esegue comandi di shell
  • filter - Può chiamare funzioni PHP arbitrarie
  • reduce - Può chiamare funzioni PHP arbitrarie

Tag (attacchi di inclusione)

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

Funzioni

  • source - Legge il contenuto di file arbitrari
  • include - Include altri template
  • template_from_string - Crea template da stringhe

Cosa è Consentito

Le operazioni sicure rimangono disponibili nei template con 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']) }}

Estendere la Whitelist

Se i tuoi template admin necessitano legittimamente di funzionalità aggiuntive:

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'],
    ],
],

Testare la Correzione

Dopo l'installazione, verifica che l'exploit sia bloccato:

  1. Vai a PyroCMS admin → Users → Roles
  2. Modifica il campo descrizione di un ruolo
  3. Inserisci: {{['id']|map('system')|join}}
  4. Salva e visualizza

Prima della correzione: Mostra l'output del comando id (o crash) Dopo la correzione: Mostra un errore o [rendering failed: Filter "map" is not allowed.]

Risoluzione dei Problemi

"Twig non trovato nel container"

Il pacchetto non è riuscito a trovare Twig. Questo di solito significa:

  • PyroCMS/streams-platform non è ancora completamente caricato
  • Non stai eseguendo in un ambiente PyroCMS

Abilita la modalità debug per vedere i dettagli:

root@kitploit:~
PYROCMS_SSTI_FIX_DEBUG=true

Template legittimi che si rompono

Se i template modificabili dagli admin utilizzano funzionalità ora bloccate:

  1. Controlla i log per vedere quale funzionalità è stata bloccata
  2. Aggiungila alla whitelist nella configurazione (se sicura)
  3. Oppure rifattorizza il template per usare funzionalità consentite

Preoccupazioni sulle prestazioni

Il pacchetto memorizza nella cache tutti i controlli dei percorsi e le ricerche di metodi/proprietà. In modalità auto, solo i template nel percorso di storage subiscono l'overhead del sandbox.

Note sulla Sicurezza

  • Questo pacchetto non risolve il problema architetturale sottostante (Twig che elabora input utente)
  • Mitiga lo sfruttamento limitando ciò che i template con sandbox possono fare
  • Gli utenti admin possono ancora creare template fastidiosi; semplicemente non possono raggiungere RCE
  • Considera ulteriori rafforzamenti (regole WAF, CSP, ecc.) per una difesa a più livelli

Crediti

  • Yaakov Saxon - Autore del pacchetto, contributore di SourcePolicyInterface a Twig
  • Twig PR #3893 - Contributo a monte che abilita il sandbox selettivo

Licenza

Licenza MIT - vedi file LICENSE.

Correlati

  • CVE-2023-29689 - voce NVD
  • GHSA-w7vm-4v3j-vgpw - Advisory GitHub
  • Documentazione del Sandbox di Twig
Scarica lo strumento