Ghosts In The Stack

Commentaires - La faille Include

Poster un commentaire - Retour à l'article

Commentaires

Valentin, le 10/09/2009 :

Bonjour, en codant mon site j'ai lu votre article et je vous demande si pour combler la faille il ne suffit finalement pas de mettre une ultime condition à l'inclusion.

Voici le code avec la faille :

<?
if(isset($_GET['page']))
include($_GET['page']);
else
include('default.php');
?>

correction de faille :

<?
if(isset($_GET['page'])

&& substr ($_GET['page'], 0, 4)!=='http')
include($_GET['page']);
else include('default.php');
?>

il suffit juste de vérifier si la variable page n'a pas "http" au début.

Ou est-ce insuffisant ?

Cordialement.
Valentin

Réponse :

Héhé... Non, surtout pas ! Ce que tu veux faire, ça reviendrait à mettre allow_url_include à false dans php.ini. C'est une bonne chose, mais ça n'est pas du tout suffisant. En effet ça n'empêche pas d'inclure les fichiers locaux du serveur. Et il y a plein de fichiers intéressants à inclure pour obtenir plein d'informations intéressantes. Par exemple dans /proc, /boot, /etc... Et il y a même moyen d'inclure des fichiers dans lesquels on peut injecter des données directement ! Par exemple les logs d'Apache, que l'on peut injecter simplement en consultant des URLs sur le serveur, où encore pire, les fichiers de sessions PHP. Il y a peu de temps, j'ai justement rooté un serveur par ce biais. Je prévois bientôt un article à ce sujet d'ailleurs...


Donc pour résumer, NON ce n'est pas suffisant. Il faut vraiment avoir une liste de pages autorisées, ou au moins un dossier limite au delà duquel on rejette les inclusions (voir la directive open_basedir).

Symbiote, le 01/06/2007 :

Très bonne article Trancefusion, maintenant je peux securiser l'include.

Merci beaucoup !

Poster un commentaire

Les commentaires sont soummis à certaines règles, qui sont une question de bon sens.

Utilisez-les à bon escient. Vous pouvez donnez votre opinion, vos critiques, nous signaler des fautes, apporter des précisions. Vous pouvez également nous poser des questions ; nous essaierons de vous répondre dans la mesure du possible.

Ne confondez pas commentaires et forum ; votre commentaire doit être en rapport avec l'article. Si vous souhaitez donner un commentaire général sur le site, envoyez-nous plutôt un mail.

Merci de nous laisser votre adresse e-mail, afin que nous puissions vous recontacter si besoin. Le code HTML n'est pas interprété dans les commentaires.

Les commentaires sont soummis à une validation des administrateurs. S'ils ne respectent pas ces règles, ils seront systématiquement refusés. Merci de votre compréhension ;-)