Comment fixé une faille include local ?

Résolu/Fermé
MonkeyBlue - 10 août 2009 à 18:49
h1fra Messages postés 22 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 14 novembre 2010 - 10 août 2009 à 20:35
Bonjour, voici mon code:
<?php
			if(isset($_GET['p']))
			{
				$aInclure = htmlentities ($_GET['p']);
			
				if(file_exists('st/'.$aInclure.'.php'))
					include('st/'.$aInclure.'.php');	
				else
					include('accueil.php');	
			}
			else include('accueil.php');
		?>

le problème c'est que j'ai réussi a remonté dans mon serveur
p=../../../../../../../../boot.ini%00
j'ai cherché sur internet mais je comprend pas comment supprimé cette vulnérabilité
et ce que quelqu'un qui si connais en faille pourrais me corrigé mon code et m'expliqué ?
A voir également:

2 réponses

h1fra Messages postés 22 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 14 novembre 2010 1
10 août 2009 à 19:07
Personellement j'utilise une petite fonction pour nettoyer mes variables $_GET :

function CleanVar($var){
    $var = trim($var);
    $RemoveChars  = array( "([\40])" , "([^a-zA-Z0-9-])", "(-{2,})" );
    $ReplaceWith = array("-", "", "-");
    return preg_replace($RemoveChars, $ReplaceWith, $var);
}

$page      	= CleanFileName($_GET['p']);


Elle enlève tout ce qui n'est pas lettre et chiffre, donc plus de problème de ce genre !
1
Oua merci beaucoup h1fra
0
h1fra Messages postés 22 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 14 novembre 2010 1
10 août 2009 à 20:35
Ca m'a un peu intrigué cette histoire, et en faisant une petite recherche il s'agirait d'une faille relativement connut et donc le seul moyen de contrer ça, c'est d'utiliser ce type de solution!

Au moins j'aurai appris quelque chose aussi XD

ps: oublie pas de noter ça comme résolut ;)
0