Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pyrocms-ssti-fix — Ein Drop-in-Fix für CVE-2023-29689 - SSTI in PyroCMS, mittels einer benutzerdefinierten Twig-Sandbox-Implementierung | Kitploit
Tools/GitHubGitHub/ysaxon/pyrocms-ssti-fix
DefensivwerkzeugeSchwachstellenanalyseCode-AnalyseWebanwendungs-ExploitationWebsicherheitFehlkonfiguration
GitHubysaxon/pyrocms-ssti-fix

pyrocms-ssti-fix

Ein Drop-in-Fix für CVE-2023-29689 - SSTI in PyroCMS, mittels einer benutzerdefinierten Twig-Sandbox-Implementierung

Repository anzeigen
vor 7 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Packagist Version

🛡️ PyroCMS SSTI Fix

Einsatzbereiter Sicherheitsfix für CVE-2023-29689 – Serverseitige Template-Injection, die in PyroCMS 3.9 zu Remote Code Execution führt.

Das Problem

PyroCMS erlaubt Admin-Benutzern, in der Datenbank gespeicherte Templates zu bearbeiten. Ohne Sandboxing können Angreifer mit Admin-Zugriff bösartigen Twig-Code einschleusen:

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

Dies führt die Ausführung beliebiger Systembefehle aus. Die Upstream-Maintainer betrachten dies als "working as intended" (absichtlich so vorgesehen), da Admin-Benutzern vertraut wird – aber in Multi-Tenant- oder Unternehmensumgebungen gilt: "Admin" ≠ "vertrauenswürdig für Shell-Zugriff".

Die Lösung

Dieses Paket sandboxt automatisch benutzerbearbeitbare Templates, während legitime Theme-/Addon-Templates uneingeschränkt bleiben. Es verwendet Twigs SourcePolicyInterface (vom Autor dieses Pakets als Upstream-Beitrag eingebracht), um selektiv Einschränkungen anzuwenden.

Installation

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

Leider müssen Sie aufgrund der Deaktivierung der Autoerkennung durch PyroCMS den ServiceProvider selbst hinzufügen.

Das können Sie tun mit

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

Anforderungen

  • PHP 7.4+ oder 8.0+
  • Twig 2.16+ oder 3.9+ (für SourcePolicyInterface-Unterstützung)
  • Laravel 6.0+ / PyroCMS 3.x

So funktioniert es

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

Konfiguration (Optional)

Die Standardeinstellungen sind sicher und funktionieren für die meisten Installationen. Zur Anpassung:

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

Dies erzeugt 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
    ],
];

Was blockiert wird

Die standardmäßige Sicherheitsrichtlinie blockiert diese gefährlichen Funktionen in gesandboxten Templates:

Filter (RCE-Vektoren)

  • map – {{['cmd']|map('system')}} führt Shell-Befehle aus
  • filter – Kann beliebige PHP-Funktionen aufrufen
  • reduce – Kann beliebige PHP-Funktionen aufrufen

Tags (Inklusionsangriffe)

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

Funktionen

  • source – Liest beliebige Dateiinhalte
  • include – Bindet andere Templates ein
  • template_from_string – Erstellt Templates aus Zeichenketten

Was erlaubt ist

Sichere Operationen bleiben in gesandboxten Templates verfügbar:

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']) }}

Erweitern der Whitelist

Wenn Ihre Admin-Templates legitimerweise zusätzliche Funktionen benötigen:

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

Testen des Fix

Überprüfen Sie nach der Installation, ob der Exploit blockiert wird:

  1. Gehen Sie zu PyroCMS Admin → Benutzer → Rollen
  2. Bearbeiten Sie das Beschreibungsfeld einer Rolle
  3. Geben Sie ein: {{['id']|map('system')|join}}
  4. Speichern und anzeigen

Vor dem Fix: Zeigt Ausgabe des id-Befehls (oder Absturz) Nach dem Fix: Zeigt Fehler oder [rendering failed: Filter "map" is not allowed.]

Fehlerbehebung

"Twig nicht im Container gefunden"

Das Paket konnte Twig nicht finden. Das bedeutet normalerweise:

  • PyroCMS/streams-platform ist noch nicht vollständig geladen
  • Sie laufen nicht in einer PyroCMS-Umgebung

Aktivieren Sie den Debug-Modus, um Details zu sehen:

root@kitploit:~
PYROCMS_SSTI_FIX_DEBUG=true

Legitime Templates brechen

Wenn admin-bearbeitbare Templates Funktionen verwenden, die nun blockiert werden:

  1. Prüfen Sie die Logs, welche Funktion blockiert wurde
  2. Fügen Sie sie zur Whitelist in der Konfiguration hinzu (falls sicher)
  3. Oder gestalten Sie das Template um, um erlaubte Funktionen zu verwenden

Leistungsbedenken

Das Paket cacht alle Pfadprüfungen sowie Methoden-/Eigenschaftsabfragen. Im auto-Modus verursachen nur Storage-Path-Templates Sandbox-Overhead.

Sicherheitshinweise

  • Dieses Paket behebt nicht das zugrundeliegende architektonische Problem (Twig rendert Benutzereingaben)
  • Es mindert die Ausnutzung, indem es einschränkt, was gesandboxte Templates tun können
  • Admin-Benutzer können weiterhin lästige Templates erstellen; sie können jedoch keine RCE erreichen
  • Ziehen Sie zusätzliche Härtung in Betracht (WAF-Regeln, CSP usw.) für eine abgestufte Verteidigung

Danksagungen

  • Yaakov Saxon – Paketautor, Beitragender von SourcePolicyInterface zu Twig
  • Twig PR #3893 – Upstream-Beitrag, der selektives Sandboxing ermöglicht

Lizenz

MIT-Lizenz – siehe Datei LICENSE.

Verwandte Links

  • CVE-2023-29689 – NVD-Eintrag
  • GHSA-w7vm-4v3j-vgpw – GitHub Advisory
  • Twig Sandbox Dokumentation
Tool herunterladen