Qu’est-ce que l’inclusion de fichiers à distance ?

L’inclusion de fichiers à distance (RFI) est une vulnérabilité Web qui permet à un pirate malveillant de forcer l’application à inclure des fichiers de code arbitraires importés d’un autre emplacement, par exemple, un serveur contrôlé par l’attaquant.


Gravité: très sévère
Prévalence:découvert très rarement
Portée:apparaît principalement dans les anciennes versions de PHP
Impact technique : exécution de code à distance
Conséquences dans le pire des cas : compromis complet du système
Solution rapide: désactiver l’inclusion à distance dans les paramètres du serveur Web

Comment fonctionne l’inclusion de fichiers à distance ?

De nombreux langages de programmation, y compris ceux utilisés côté serveur pour développer des applications Web, permettent au développeur d’inclure le code source d’autres fichiers. Certaines fonctions utilisées pour inclure le code source permettent uniquement d’inclure des fichiers locaux, mais dans certaines langues, elles permettent également l’inclusion par URL. Ceci est utile pour inclure, par exemple, des fichiers de code source situés sur d’autres serveurs dans une application multiserveur complexe.

Cette inclusion est souvent statique, c’est-à-dire que l’URL du fichier est définie dans le code source et ne peut pas être modifiée. Cependant, dans certaines applications, le développeur peut souhaiter inclure dynamiquement un fichier à partir d’un emplacement distant. Si tel est le cas, l’URL du fichier distant peut être transmise dans un paramètre d’entrée utilisateur.

Les vulnérabilités d’inclusion de fichiers distants se produisent lorsqu’un acteur malveillant peut modifier l’entrée de l’utilisateur pour inclure ses propres fichiers distants. Cette vulnérabilité se produit le plus souvent dans les applications et les API écrites dans les anciennes versions de PHP avec l’ expression include . Dans le cas d’autres langages de programmation d’applications Web courants, l’inclusion de fichiers de la même manière nécessite des constructions de programmation beaucoup plus complexes.

Notez que la possibilité d’inclure des fichiers distants est obsolète depuis PHP 7.4.0, publié en novembre 2019.

Inclusion de fichiers distants vs inclusion de fichiers locaux

Si l’attaquant ne peut inclure un fichier malveillant qu’à partir du même serveur, il s’agit d’une vulnérabilité d’inclusion de fichier local (LFI) . Les vulnérabilités LFI sont beaucoup plus courantes pour plusieurs raisons :

  • LFI inclut non seulement les cas où le développeur inclut un fichier de code source, mais tous les cas où l’attaquant peut accéder à un fichier local auquel il ne devrait pas pouvoir accéder.
  • LFI se produit dans la plupart des langages de programmation Web, pas seulement PHP, car d’autres langages permettent également aux développeurs d’ouvrir et/ou d’inclure des fichiers locaux.
  • Les développeurs ont souvent besoin d’inclure du code source local ou de lire et d’afficher le contenu de fichiers locaux, ce qui peut entraîner une LFI. Ils ont rarement besoin d’inclure des codes sources provenant d’emplacements distants, ce qui est nécessaire pour RFI.

L’inclusion de fichiers locaux va souvent de pair avec la traversée de répertoires . RFI, d’autre part, par définition, ne peut pas conduire à une traversée de répertoire car le fichier est inclus par URL, et non par chemin/nom de fichier.

Vous pouvez également considérer RFI comme une attaque similaire au cross-site scripting . Dans les deux cas, une application vulnérable prend du code non fiable d’une source externe et l’exécute. Cependant, dans le cas de RFI, les attaquants abusent du includemécanisme PHP au lieu d’une

Notre expertise, à votre service, dans le domaine de la cyber sécurité.