Qu'est-ce qu'une faille d'inclusion ?


Ce type de vulnérabilité est présente dans une application web lorsque cette dernière utilise les entrées de l’utilisateur pour fonctionner.

Exemple de code PHP :


if (isset($_GET['CITY'])) {
    $city = $_GET['CITY'];
}
include($city . '.php');

Le code est vulnérable car le fichier à inclure dépend entièrement du paramètre GET, paramètre visible dans l’URL et donc modifiable. Il n’y a aucune vérification, l’attaquant peut même saisir des chemins pour remonter l’arborescence de l’application web vulnérable. N’oublions pas que PHP et Apache sont une porte d’entrée vers l’ensemble du système puisque le port 80 est exposé.

Cette faille permet à un attaquant de lire et parfois d'exécuter des fichiers sur la machine victime. Cela peut être très dangereux car si le serveur web est mal configuré et fonctionne avec des privilèges élevés, l'attaquant peut avoir accès à des informations sensibles. Si l'attaquant est capable de placer un code sur le serveur web par d'autres moyens, il est possible qu'il puisse exécuter des commandes sur la machine de la victime.

Il existe deux types de faille d’inclusion de fichier : Local File Inclusion et Remote File Inclusion. La différence entre les deux failles réside dans la provenance du fichier inclus.


Local File Inclusion (LFI)


Dans une faille Local File Inclusion (LFI) le fichier inclus est un fichier déjà présent sur le serveur qui héberge l’application ciblée par l’attaque. L’objectif de l’attaquant sera de lire des fichiers sensibles, contenant des informations critiques comme des fichiers de configuration par exemple.

Si vous souhaitez en savoir plus ce type de vulnérabilité je vous invite à consulter l’article qui a été rédigé sur notre site.


Remote File Inclusion (RFI)


Contrairement à la faille précédente, la Remote File Inclusion (RFI) vise à inclure un fichier distant sur le serveur de la victime (remote = distant). Pour ce faire l’attaquant va inclure l’URL menant à son fichier malveillant dans un paramètre vulnérable. Le fichier sera exécuté par le serveur de la victime.


Comment se protéger contre les failles Local File Inclusion ?


La meilleure solution est de vérifier les entrées de l’utilisateur à l’aide de conditions pour s’assurer que ce qui a été saisi est bien conforme à ce que l’on souhaite.