___ __ _ _ _ _ ____ _____ ______ _______ ________ _____ / /| | / / | | | | | | | | / __| | ___| / ____| |__ __| / _____ \ | __ \ / / | | / / | | | | | | | | ___ | |__ | |___ | | | | | | | | | |__| | / / | | / / | | | | | | | | |___| \___ \ | ___| | | | | | | | | | ___/ / / | | / / | |___| | | |__ | |__ __| | | |___ | |____ | | | |____| | | \ \ /_/ |_|/_/ |_______| |____| |____| |____/ |_____| \______| |_| \________/ |_|\_\ _______________________________________________________________________________________________________ | Inhalt: Local File Inclusion | | Autor: Penguin | | www.null-sector.info | |_______________________________________________________________________________________________________| [Inhalt] [0x01] ........................ Was ist eine LFI? [0x02] ........................ Wie nutze ich eine LFI aus? [0x03] ........................ Wie kann ich eine LFI verhindern? [0x01] Eine LFI ist eine Sicherheitslücke die vermehrt in Webseiten auftritt. Betroffen sind die Skriptsprachen, z.B. PHP In diesem Paper werde ich versuchen euch zu erklären was eine LFI ist. Als Beispielsprache werde ich PHP verwenden. Mithilfe der Local File Inclusion kann man z.B. unter Linux-Systemen die passwd Datei auslesen (Falls safe_mode=Off). Die Local File Inclusion includiert ungewollt wichtige Dateien, mit denen man Webseiten oder ganze Server "hacken" kann. Außerdem ist es mit manchen Local File Inclusions möglich Konfigurationsdateien von Skripten zu öffnen/lesen. Mit dieser Konfigurationsdatei kann man z.B. auf den MySQL Server zugreifen. [0x02] Ich werde in diesem Abschnitt die Local File Inclusion anhand von einem Beispiel in PHP erklären. Wir haben folgendes PHP-Script (test.php): Außerdem noch 2 weitere Dateien: 1.php Test hacked.1337 Hacked, Congratulations! Fangen wir mal an, die "korrekte" Weise das Skript aufzurufen wäre test.php?site=1 Testen wir dies mal. Als Ausgabe bekommen wir den Inhalt der Datei 1.php und den Vollen Namen der Datei (1.php). Nun, da wir wissen dass das Skript nicht geschützt ist versuchen wir mal unser Glück mit test.php?site=hacked.1337 Nichts mit hacked, oder? Der Grund dafür ist, dass an den Parameter site noch ein .php angehängt wird. Dies umgehen wir mit test.php?site=hacked.1337%00 Jetzt sehen wir das hacked :) %00 ist das Null-Byte und Symbolisiert das Ende eines String. Deswegen wird das .php ignoriert. [0x03] Eine LFI kann man verhindern, indem man z.B. den Paramater für die zu Inkludierende Datei überprüft. Wenn man z.B. immer Integrale Werte für jede Seite hat sollte man überprüfen ob der Parameter nur Zahlen enthält oder nicht. Außerdem sollte der safe_mode in der php.ini IMMER auf On stehen.