Comment réussir une local file inclusion ?
Include est une fonction très simple d’utilisation mais, qui peut être parfois dangereuse… En effet, des personnes malveillantes peuvent injecter un fichier autre que celui désiré. C’est ce qu’on appelle la local file inclusion ou LFI qui est une faille de sécurité web. HTTPCS vous montre dans cette article qu’il est nécessaire de se protéger contre ces piratages.
La plupart des sites web en php utilisent la fonction ‘include’ qui inclut et exécute le fichier passé en paramètre.
Include injecte le code (html ou php) et l’exécute à l’endroit exact où se trouve la fonction.
Nous pouvons ainsi changer le header d’un site web de plusieurs milliers de pages à partir d’un seul fichier (header.php) qui sera inclus par la suite dans les autres pages.
Alors qu’avec un site statique en html il faut ouvrir page par page pour le modifier.
Cette fonction très simple d’utilisation est parfois dangereuse.
En effet certains développeurs l’utilisent avec des paramètres d’entrées non filtrés.
Les dangers ‘d’Include’:
Le développeur prévoit ainsi des liens avec un paramètre ‘Page’ qui se concatène avec la valeur ‘pages/’ au début, et ‘.php’ à la fin.
Le dossier ‘Pages’ contient des fichiers php que notre développeur souhaite inclure selon les pages de son site.
Dans notre exemple ‘index.php ?Page=accueil’ va inclure le fichier ‘pages/accueil.php’ au début de la page.
Néanmoins une personne malveillante peut très bien changer la valeur du paramètre ‘Page’ par ‘../index’, le résultat sera donc différent et la page qui sera incluse au début sera ‘page/../index.php’.
Il est donc possible d’inclure d’autres fichiers et de remonter le dossier ‘pages’.
C’est ce qu’on appelle la local file inclusion ou LFI qui est une faille de sécurité web consistant à injecter un fichier autre que celui désiré.
Il nous est alors possible de remonter les dossiers et d’inclure n’importe quel fichier, et pas seulement les fichiers ‘.php’.
Afin d’inclure des fichiers avec d’autres extensions, il suffit de commenter la suite de l’injection avec ‘%00’ par exemple :
Une personne malveillante peut donc écrire dans les logs des commandes php, et par la suite inclure ce fichier afin de l’exécuter.
La local file inclusion est extrêmement critique.