Wissen › Unsicherer Datei-Upload → Code-Ausführung
Unsicherer Datei-Upload → Code-Ausführung
Eine hochgeladene, ausführbare Datei im Webroot wird zur Hintertür (Webshell).
Erlaubt eine Anwendung das Hochladen von Dateien ohne ausreichende Prüfung und sind diese anschließend im Webroot ausführbar, kann ein Angreifer eine Webshell platzieren und Code auf dem Server ausführen.
Wie der Angriff funktioniert
- Es wird eine ausführbare Datei hochgeladen (z. B. .php, .phar) — ggf. mit getarntem Dateinamen oder Doppel-Endung.
- Die Datei landet in einem per Web erreichbaren, ausführbaren Verzeichnis.
- Der direkte Aufruf der Datei führt serverseitigen Code aus.
Beispiel
Entscheidend sind Allowlist, Umbenennung und ein nicht-ausführbares Zielverzeichnis:
// Prinzip einer sicheren Annahme
// 1) Typ gegen ALLOWLIST prüfen (Inhalt, nicht nur Endung/MIME)
// 2) neutralen, zufälligen Dateinamen vergeben
// 3) außerhalb des Webroots bzw. in nicht-ausführbarem Verzeichnis ablegen
// 4) Ausführung per Serverconfig unterbinden
Mögliche Auswirkungen
- Vollständige Server-Kompromittierung (Remote Code Execution).
- Persistente Hintertür, Ausbreitung auf andere Seiten des Servers.
- Datenabfluss, Defacement, Missbrauch als Spam-/Mining-Host.
Worauf du in TYPO3 achten musst
TYPO3 bringt mit dem fileDenyPattern und FAL (File Abstraction Layer) wirksame Schutzmechanismen mit. Risiken entstehen durch Aufweichen dieser Defaults oder eigene Upload-Handler.
fileDenyPattern nicht aufweichen
[BE][fileDenyPattern] blockt standardmäßig ausführbare und gefährliche Dateien (php, phar, .htaccess …). Diese Vorgabe nicht lockern; eigene Uploads daran orientieren.
FAL + Dateiendungs-Allowlist
Uploads über FAL abwickeln und erlaubte Endungen per Allowlist einschränken ([GFX]/Mime-Prüfung, nicht nur Client-MIME vertrauen).
Extbase FileUpload sauber validieren
Bei eigenen Upload-Formularen Typ/Größe serverseitig validieren, Dateinamen neutralisieren und Ziel außerhalb ausführbarer Pfade wählen.
fileadmin/uploads nicht ausführbar
Sicherstellen, dass Upload-Verzeichnisse serverseitig kein PHP ausführen (Webserver-Konfiguration). Das begrenzt den Schaden einer durchgerutschten Datei.
SVG & 'harmlose' Formate
Auch nicht-PHP-Formate können gefährlich sein (SVG mit Script → XSS). TYPO3 sanitized SVG; Vorsicht bei eigener Verarbeitung.
Schutzmaßnahmen
- Allowlist der Dateitypen (Inhalt prüfen), neutrale Dateinamen, nicht-ausführbares Ziel.
- fileDenyPattern und FAL-Mechanismen nutzen, nicht aufweichen.
- Upload-Verzeichnisse serverseitig von der Code-Ausführung ausnehmen.