LFI
Eine Schwachstelle, bei der eine Webanwendung die Nutzereingabe entscheiden lässt, welche Datei geladen wird. Der Klassiker ist ?seite=../../../../etc/passwd — gefährlich ist aber nicht das Lesen der Datei.
Gefährlich ist, dass eine eingebundene Datei ausgeführt wird. In PHP bedeutet include($_GET['seite']), dass jede Datei, die zufällig Code enthält, ausgeführt wird — deshalb lässt sich LFI oft zu Remote Code Execution eskalieren. Die Wege dorthin sind bekannt: eine Logdatei vergiften, indem man PHP-Code im User-Agent verschickt und die Logdatei anschließend einbindet, den Umweg über /proc/self/environ nehmen, oder Session-Dateien und hochgeladene Bilder missbrauchen. Der Nullbyte-Trick, mit dem sich angehängte Dateiendungen umgehen ließen, wurde mit PHP 5.3.4 geschlossen. Der Schutz besteht darin, niemals Nutzereingaben an Dateifunktionen zu übergeben — stattdessen eine Allowlist erlaubter Namen führen und darüber den tatsächlichen Pfad nachschlagen.