# Allgemeines # Abkürzung: LFI Port: 80 Name: Local File Inclusion Beschreibung: Local File Inclusion (auch bekannt als LFI) ist der Prozess des Einbindens von Dateien, die bereits lokal auf dem Server vorhanden sind, durch die Ausnutzung von anfälligen Einbindungsvorgängen, die in einer Anwendung implementiert sind. # Kommandos # `curl 'http://{target_IP}/?file=/etc/passwd` -> Wird verwendet um den Zugriffe auf die Files zu überprüfen. `curl 'http://{target_IP}/?file=../../../etc/passwd` -> Wenn wir uns bereits in einem Register befinden. # Exkurs # Wenn sich nach dem öffnen einer Webseite die URL verändert und so aussieht: http://{target_IP}/?file=home.php dann besteht die Möglichkeit, dass wir auch auf andere Dokumente des Servers zugreifen können (siehe Kommanndos). Der PHP-Code könnte folgendermassen aussehen: if ($_GET['file']) { include($_GET['file']); } else { header("Location: http://$_SERVER[HTTP_HOST]/index.php?file=home.php"); } Im obigen Beispiel befindet sich der Code innerhalb von index.php, der verwendet wird, um dynamisch andere Seiten der Website zu laden, indem die Variable "file" als Kontrollpunkt verwendet wird. Wenn diese Variable nicht in der GET-Anfrage angegeben wurde, schreibt die Seite automatisch die URL neu und lädt home.php. Wenn der Wert angegeben wurde, versucht der Code, eine Seite aus dem Wert der Variablen zu laden. Wenn zum Beispiel die Variable "file=register.php" lautet, würde der PHP-Code versuchen, register.php aus demselben Ordner zu laden. Entsprechend können wir auch versuchen mit /etc/passwd auf die Passwd-Datei des Servers zuzugreifen. Es kann jedoch auch sein, dass die File-Variable an die Directory gebunden ist, in welcher index.php liegt (bspw. /var/www/html): if ($_GET['file']) { include( __DIR__ . $_GET['file']); } else { header("Location: http://$_SERVER[HTTP_HOST]/index.php?file=home.php"); } Um nun auf /etc/passwd zurückzugreifen, müssen wir zuerst einige ../../ einfügen, damit wir zurück navigieren. (siehe Kommandos.)