Outils pour utilisateurs

Outils du site


web:injection_lfi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

web:injection_lfi [2016/02/02 07:56]
arkinar
web:injection_lfi [2016/07/04 08:38]
Ligne 1: Ligne 1:
-**Faille Web : LFI : Local File Inclusion 
-** 
- 
-L’objet de l’attaque,​ comme son nom l’indique,​ est d’inclure un fichier local .  
-L’intérêt est multiple : 
- 
-- D’accéder au code source de fichiers privés stockés sur le serveur ciblé par l’attaque 
- 
-- D’exécuter un script disponible sur le serveur dans un contexte non conventionnel (non prévu) 
- 
-Cette faille est appelée ainsi car elle est en rapport avec le nom de la fonction PHP utilisée pour inclure un flux (include) 
- 
-Explication en pratique : 
- 
-**1.DETECTION** 
- 
-Si je tape cette url : 
- 
-http://​localhost/​lfi.php?​page=../​../​../​../​../​ 
- 
-../ signifie : remonter d'un dossier, 
- si on le multiplie un certain nombre de fois , nous remontons jusqu'​à la racine du site qui est généralement /var/www/ 
- 
-Si le script plante c’est que l’application est très probablement vulnérable ou que le paramètre est filtré. 
- 
-Les erreurs pouvant être affichées par PHP pourraient être les suivantes : 
-//“failed to open stream: No such file or directory”//​ 
- 
-Si cette erreur est affichée, la faille est avérée. 
- 
- 
-**2. ANGLE D'​ATTAQUE** 
- 
-__La LFI Basique :__ 
- 
-Imaginons qu’il existe un fichier nommé “password.xml” dans un sous-dosssier “admin”,​en temps normal se dossier et interdit au utilisateur. 
- 
-Cependant grâce à la LFI il serait possible d’afficher son contenu en appelant la ressource comme il suit : 
- 
-http://​localhost/​lfi.php?​page=admin/​password.xml 
- 
-Le contenu de la page password s'​affichera sous vos yeux. 
- 
-__La LFI avec du Null Byte__ 
- 
-Il arrive parfois que les personnes qui développent les sites utilisent la fonction include comme ceci : 
-//​include($page . “.html”);//​ 
- 
-Ce qui à pour but d'​ajouter une extension .html automatiquement à la fin du fichier inclus. 
- 
-Dans n’importe quel langage, une chaîne de caractères se termine par un caractère de fin de chaîne (ou NULL). ​ 
- 
-Ce caractère est représenté en hexadécimal,​ dans la table ASCII, par la valeur x00. 
- 
-Les personnes qui développe en C doivent être familiarisées avec ce caractère. 
- 
-Pour stipuler la fin de notre chaine de caractère nous allons rajouter à la fin de notre url %00 
- 
-Cela nous donne: http://​localhost/​lfi.php?​page=admin/​password.xml%00 
- 
- 
- 
-__Les Wrappers Php__ 
- 
-Pour récupérer le code source d'une page php, si vous utiliser la technique basique il vous affichera la page php mais exécuté par le serveur. ​ 
- 
-Pour récupérer son code source il faut utiliser une autre technique : 
- 
-Le principe consiste à afficher le code source de la page en base 64 comme ceci : 
- 
-http://​localhost/​lfi.php?​page=php://​filter/​read=convert.base64-encode/​resource=lfi.php 
- 
-Cet exemple vous permettra d’afficher le contenu du script “lfi.php” encodé en base 64, soit  
- 
-<​code>​ 
-PD9waHAgDQokcGFnZSA9IGFycmF5X2tleV9leGlzdHMoJ3BhZ2UnLCAkX0dFVCkgPyAkX0dFVFsncGFnZSddIDogbnVsbCA7DQppZiAoIWlzX251bGwoJHBhZ2UpKQ0Kew0KCWluY2x1ZGUoJHBhZ2UpOw0KfQ0KZWxzZQ0Kew0KCWVjaG8gIkF1Y3VuIHBhZ2Ug4CBpbmNsdXJlLi4uIjsNCn0NCj8+DQo=</​code>​ 
- 
-Pour récupérer le code source en clair, il suffit seulement d’effectuer le traitement inverse. 
- 
-Si vous n’avez pas les outils pour le faire en local, sachez qu’il en existe de nombreux en ligne, comme par exemple : [[http://​www.base64decode.org]] 
- 
-__Les LFI avancés__ 
- 
-Certaines LFI ne se trouvent pas facilement mais une technique permet d'​échapper à certain filtre : 
- 
-L'​encodage url , elle permet comme son nom l'​indique d'​encoder une url pour éviter les filtre sur certain caractère. 
- 
-Par exemple si le serveur filtre les / dans les paramètres pris par la variable page 
- 
-http://​localhost/​lfi.php?​page= 
- 
-Si nous effectuons une LFI Basique nous nous retrouverons en face d'un "​FORBIDDEN ACCESS"​ 
- 
-Quoi de plus frustrant mais si nous réessayons comme ceci : 
- 
-http://​localhost/​lfi.php?​page=admin%2fpassword.xml 
- 
-Nous aurons accès ! Lorsque l'on encode une url le caractère / deviens %2f 
- 
-Vous pouvez encoder des url entières grâce au site : [[http://​meyerweb.com/​eric/​tools/​dencoder]] 
- 
-Exemple réaliste : [[https://​www.exploit-db.com/​exploits/​16250/​]] 
- 
-source : [[http://​blog.clever-age.com/​fr/​2014/​10/​21/​owasp-local-remote-file-inclusion-lfi-rfi/​]] 
  
web/injection_lfi.txt · Dernière modification: 2016/07/04 08:38 (modification externe)