Vigil@nce - PHP : filtrage incomplet de _FILES
juin 2011 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsqu’une application PHP autorise l’upload de fichier, un
attaquant peut employer un nom de fichier spécial, qui n’est pas
correctement filtré.
Gravité : 2/4
Date création : 13/06/2011
PRODUITS CONCERNÉS
– PHP
DESCRIPTION DE LA VULNÉRABILITÉ
La RFC 1867 décrit l’upload de fichier via HTTP, en utilisant le
type MIME "multipart/form-data".
Lorsqu’un client a envoyé une requête "multipart/form-data", PHP
stocke le nom du fichier dans la variable $_FILES. L’application
peut alors utiliser cette valeur afin de traiter le fichier
uploadé. PHP garantit que le nom du fichier ne contient pas de ’/’
ni de ’\’.
Cependant, si le ’/’ ou ’\’ est situé au début du fichier (par
exemple "/fichier" ou "\fichier"), il n’est pas supprimé.
Lorsqu’une application PHP autorise l’upload de fichier, un
attaquant peut donc employer un nom de fichier spécial, qui n’est
pas correctement filtré. Si l’application n’emploie pas basename()
pour filtrer ce caractère, elle pourrait (selon son code) alors
accéder à un fichier situé sous la racine du système de fichiers.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/PHP-filtrage-incomplet-de-FILES-10727