Annonce ToutSurTout

Bienvenue sur toutsurtout.biz

Radio TST

Si vous souhaitez participer vous aussi aux discussions sur le forum, il faut vous inscrire ou vous identifier.

Le Thème TST Printemps est maintenant en place.

Les inscriptions sont actuellement OUVERTES.

Message 1 Discussion postée le 17-01-2011 à 16:50:08

Loic
Avatar de Loic


Titre: Administrateur d'élite
Avancement: Niveau 5
Lieu: Avec Solenne
Date d'inscription: 26-09-2009
Messages: 104 840
Site web

Faille include

Sécuriser les failles de type d'inclusion de fichier.

C'est une vulnérabilité très vieille, mais ça n'empêche pas de la trouver encore aujourd'hui.

Voici un exemple de code vulnérable :

<?php
   
        if (isset($_GET['p']) && !empty($_GET['p']))
            include ($_GET['p'].'.php');
           
        else
            include('home.php');
           
?>

Donc là c'est simple, la variable $_GET['p'] n'est pas vérifiée ni même traitée avant inclusion.
A partir de là, il est donc possible d'exécuter, de lire & d'écrire du code sur la machine vulnérable.

Pour remédier à ce problème il existe pas mal de méthode, certaines mieux que d'autre.
La meilleurs d'après moi reste la white liste.
Ça consiste à déclarer un array, et l'on y ajoute toutes les pages qu'on accepte de passer en paramètre à l'include.

Par exemple :

<?php
   
        $page_allowed = array('home','membre','faq','contact');
       
        if (isset($_GET['p']) && !empty($_GET['p']))
        {
            if (in_array($_GET['p'], $page_allowed))
            {
                include($_GET['p'].'.php');
            }
            else
            {
                include('404.php');
            }
        }
        else
        {
            include('home.php');
        }
       
?>

Donc là il n'y a plus aucun problème. C'est une méthode simpliste, mais ça a le mérite de marcher.
La fonction in_array se charge de confirmer que le fichier que l'on souhaite d'include à été décider part l'administrateur.


http://www.toutsurtout.biz/img/UserBarTST.gif
http://www.toutsurtout.biz/img/Sign-Loic.gif
Loic DL un jour, Loic DL toujours ...