Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
web:injection_lfi [2016/01/30 20:22] arkinar créée |
web:injection_lfi [2016/04/15 14:55] yorin Ortho |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
L’intérêt est multiple : | 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’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) | + | - D’exécuter un script disponible sur le serveur dans un contexte non conventionnel. |
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) | 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) | ||
Ligne 22: | Ligne 22: | ||
si on le multiplie un certain nombre de fois , nous remontons jusqu'à la racine du site qui est généralement /var/www/ | 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é. | + | 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 : | Les erreurs pouvant être affichées par PHP pourraient être les suivantes : | ||
Ligne 28: | Ligne 28: | ||
Si cette erreur est affichée, la faille est avérée. | 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. | + | **2. ANGLE D'ATTAQUE** |
+ | |||
+ | __La LFI Basique :__ | ||
+ | |||
+ | Imaginons qu’il existe un fichier nommé “password.xml” dans un sous-dossier “admin”, en temps normal ce dossier est interdit aux utilisateurs. | ||
Cependant grâce à la LFI il serait possible d’afficher son contenu en appelant la ressource comme il suit : | 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 | http://localhost/lfi.php?page=admin/password.xml | ||
Ligne 51: | Ligne 53: | ||
Ce caractère est représenté en hexadécimal, dans la table ASCII, par la valeur x00. | 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. | + | Les personnes qui développent en C sont 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 | Pour stipuler la fin de notre chaine de caractère nous allons rajouter à la fin de notre url %00 | ||
Ligne 61: | Ligne 63: | ||
__Les Wrappers Php__ | __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 le code source d'une page php, en utilisant la technique basique, le serveur vous affichera la page php mais exécuté par celui-ci. |
Pour récupérer son code source il faut utiliser une autre technique : | Pour récupérer son code source il faut utiliser une autre technique : | ||
Ligne 71: | Ligne 73: | ||
Cet exemple vous permettra d’afficher le contenu du script “lfi.php” encodé en base 64, soit | Cet exemple vous permettra d’afficher le contenu du script “lfi.php” encodé en base 64, soit | ||
- | PD9waHAgDQokcGFnZSA9IGFycmF5X2tleV9leGlzdHMoJ3BhZ2UnLCAkX0dFVCkgPyAkX0dFVFsncGFnZSddIDogbnVsbCA7DQppZiAoIWlzX251bGwoJHBhZ2UpKQ0Kew0KCWluY2x1ZGUoJHBhZ2UpOw0KfQ0KZWxzZQ0Kew0KCWVjaG8gIkF1Y3VuIHBhZ2Ug4CBpbmNsdXJlLi4uIjsNCn0NCj8+DQo= | + | <code> |
+ | PD9waHAgDQokcGFnZSA9IGFycmF5X2tleV9leGlzdHMoJ3BhZ2UnLCAkX0dFVCkgPyAkX0dFVFsncGFnZSddIDogbnVsbCA7DQppZiAoIWlzX251bGwoJHBhZ2UpKQ0Kew0KCWluY2x1ZGUoJHBhZ2UpOw0KfQ0KZWxzZQ0Kew0KCWVjaG8gIkF1Y3VuIHBhZ2Ug4CBpbmNsdXJlLi4uIjsNCn0NCj8+DQo=</code> | ||
Pour récupérer le code source en clair, il suffit seulement d’effectuer le traitement inverse. | Pour récupérer le code source en clair, il suffit seulement d’effectuer le traitement inverse. | ||
Ligne 77: | Ligne 80: | ||
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]] | 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 | + | __Les LFI avancées__ |
- | Certaines LFI ne se trouvent pas facilement mais une technique permet d'échapper à certain filtre : | + | Certaines LFI ne se trouvent pas facilement mais une technique permet d'échapper à certains filtres : |
- | L'encodage url , elle permet comme son nom l'indique d'encoder une url pour éviter les filtre sur certain caractère. | + | L'encodage url permet comme son nom l'indique d'encoder une url pour éviter les filtres sur certains caractères. |
Par exemple si le serveur filtre les / dans les paramètres pris par la variable page | Par exemple si le serveur filtre les / dans les paramètres pris par la variable page | ||
Ligne 89: | Ligne 92: | ||
Si nous effectuons une LFI Basique nous nous retrouverons en face d'un "FORBIDDEN ACCESS" | 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 : | + | Quoi de plus frustrant, mais si nous réessayons comme ceci : |
http://localhost/lfi.php?page=admin%2fpassword.xml | http://localhost/lfi.php?page=admin%2fpassword.xml |