PHP-Nuke 6.7 ************ Informations : °°°°°°°°°°°°°° Langage : PHP Version : 6.7 Website : http://www.php-nuke.org Problème : Upload de fichiers Developpement : °°°°°°°°°°°°°°° Dans l'adviso de Lorenzo Hernandez Garcia-Hierro sur BugTraq (http://www.securityfocus.com/archive/1/313583), on voit deux possibilités d'utiliser la fonction copy() du fichier modules/WebMail/mailattach.php. Le code a été changé pour boucher ces deux failles, ce qui donne le code : ----------------------------------------------------------------------------------------------------------------------------- modules/WebMail/mailattach.php if (isset($userfile) AND $userfile != "none" AND !ereg("/", $userfile) AND !ereg("\.\.", $userfile) AND !ereg("%", $userfile)) { if (ini_get(file_uploads) AND $attachments == 1) { $updir = "tmp"; @copy($userfile, "$updir/$userfile_name"); @unlink($userfile); } } ----------------------------------------------------------------------------------------------------------------------------- Les différentes conditions fixées sont les suivantes : - $userfile ne doit pas être vide - $userfile ne doit pas contenir de caractère / - $userfile ne doit pas contenir de caractères .. - $userfile ne doit pas contenir de caractère % - file_uploads doit être sur ON dans le php.ini - $attachments doit valoir 1 Aucune vérification n'est faites sur la variable $userfile_name, qui est le nom du fichier. Les fichiers sont normalements copiés dans /modules/WebMail/tmp/. Mais maintenant, on peut définir le path et le nom du nouveau fichier, qui vient de notre ordinateur. En effet si on utilise par exemple le formulaire : -----------------------------------------------------------------------------------------------------------------------------