Remote File InclusionRemote 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 programmationLes attaques RFI peuvent se produire avec n'importe quel langage de script (ASP, JSP, PHP...). Exemple en PHPEn 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. ExempleConsidé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 :
LFIUne attaque Local File Inclusion est semblable, mais n'a recours qu'à l'exécution de fichiers locaux et non pas distants. |
Portal di Ensiklopedia Dunia