NewbieContest

Divers => Hacking => Discussion démarrée par: AKO1712 le 14 Octobre 2007 à 22:15:18



Titre: methode sécurisée pour un include ???
Posté par: AKO1712 le 14 Octobre 2007 à 22:15:18
Imaginons un site sur lequel on trouve a la racine les dossiers pages/ et admin/
Le dossier admin/ est protégé par un .htaccess et .htpasswd.
Le dossier pages/ renferme les pages du site (rien de confidentiel dedans)
et a la racine se trouve un fichier index.php dans lequel on trouve un "include(pages/$_GET['pages']);"

Dans ce cas, est il neccessaire de 'parer' la faille include (en verifiant si la page existe, etc...), vu que (logiquement) il n'est pas possible de lire le contenu du dossier admin/ si on marque dans l'url : www.site.com/index.php?page=../admin/.htpasswd

Arreter moi si je me trompe mais pour moi php interpréterais : include(pages/../admin/.htpasswd)... ce qui donnerais une erreur (ou en tout cas, ne permettrais pas d'acceder au pass)

Est-ce que je me trompe, ou cette methode suffit pour 'sécuriser' un include ??


Titre: Re : methode sécurisée pour un include ???
Posté par: zours le 15 Octobre 2007 à 07:23:16
Ben oui tu te trompes. Des ".." dans un chemin, c'est tout à fait correct.


Titre: Re : methode sécurisée pour un include ???
Posté par: micka13 le 15 Octobre 2007 à 16:39:04
Les ".." signifient en gros , retour en arriere d'un dossier.
Le "." signigie repertoire courant ;
Exemple:

http://www.newbiecontest.org/forums/nimportequoi/index.php  ==> Erreur 404

http://www.newbiecontest.org/forums/./index.php ==> http://www.newbiecontest.org/forums/index.php

http://www.newbiecontest.org/forums/../index.php ==> http://www.newbiecontest.org/index.php


Titre: Re : methode sécurisée pour un include ???
Posté par: AKO1712 le 15 Octobre 2007 à 18:07:15
ok...
mais en fait, je posais cette question car j'ai trouvé un site qui est organisé comme je l'ai dit plus haut, mais j'ai essayé justement de mettre par exemple ?page=toto.php, et celui ci m'indiqué

Warning: main(pages/toto.php) [function.main]: failed to open stream: No such file or directory in /mnt/100/****.fr/*/*/************/******/index.php on line 129

Warning: main() [function.include]: Failed opening 'pages/toto.php' for inclusion (include_path='/mnt/100/*****.fr/*/*/***********/include:.:/usr/php4/lib/php') in /mnt/***/*****.fr/*/*/*********/*****/index.php on line 129


[les * sont volontaires]

J'ai donc pensé que la faille include était présente. Mais seulement en mettant ../admin/.htaccess je tombe sur la page principale. J'en deduis donc que la variable $_GET['pages'] est un minimum 'filtrée'.
Au debut je me suis dit que le fait de mettre '..' dans la variable était filtré mais j'ai remarqué qu'il y a un dossier divers/ dans pages et en faisant ?pages=divers/../toto.php  (en transformant les '/' par %2F) ...ça me donnait une erreur. Donc les '..' ne sont pas filtré comme je le pensais.
Neanmois j'ai essayé un ?page=divers%2F..%2F..%2F..%2Fadmin%2F.htaccess  mais cela n'a rien donné ! (je retombe sur la page d'accueil)

Du coup, je me pose toujours la question sur comment il fait pour se proteger de la faille include, alors que je tombe sur des 'Warning' la plus part du temps. Donc, si vous pensez savoir comment le script a été fait, ça m'interresserais bien de connaitre votre avis.  =)

[ps]Rassurrez vous, je ne compte pas du tout faire quoi que ce soit de 'méchant', mais ça m'amuse (et je pense que je ne suis pas le seul  ;) ) de traquer les failles dans les sites web. [/ps]

merci pour vos reponses...


Titre: Re : methode sécurisée pour un include ???
Posté par: Nms le 15 Octobre 2007 à 18:36:46
Ptet un filtre sur la chaine "admin" ou ".htaccess"... Fais des tests pour confirmer ou infirmer cette hypothèse. Genre teste ?page=../pages/divers/../../index.php, puis ?page=pages/divers/admin/../../../index.php etc. etc.