**Les failles Upload** La faille upload consiste à uploader un fichier au format inattendu dans un formulaire. Un formulaire standard non sécurisé est développé comme ceci :
Fichier :
Ici le fichier sera envoyé vers la page upload.php qui le traitera ou non. Ici aucune extension n'est contrôlée. **Exploitation : ** Le but est d'uploader un fichier php qui sera interprété par le serveur. Le fichier que nous uploaderons : exploit.php Dans notre exploitation le formulaire n'acceptera que les fichiers en .pdf et en .doc __Première méthode : La double extension__ Le but est de rajouter une deuxième extension pour passer la validation. Nous renommons notre fichier : exploit.php en exploit.php.pdf Quand nous visualiserons notre fichier sur le serveur nous pourrons voir : Best Hacker __Deuxième méthode : Mime type__ MIME est un identifiant de format de données sur internet en deux parties. exemple : image/jpeg pour les photos en jpeg text/csv pour les fichiers en csv Il en existe une multitude que vous pourrez trouver ici : [[http://www.freeformatter.com/mime-types-list.html]] Certains développeurs pensent que la validation du fichier peut se réaliser par une simple comparaison du type MIME. FAUX ! Il faut modifier les paramètre envoyé en POST au serveur : Pour cela l’add-on firefox "Tamper Data" est très pratique. Nous allons altérer les données pendant l’upload de notre fichier .php ce qui nous donne dans la valeur du paramètre post : Content-Disposition: form-data; name="file"; filename="exploit.php"\r\n Content-Type: application/x-php\r\n\r\n\n\r\n Il suffit donc de modifier "Content-Type : application/x-php" par "Content-Type : application/msword" Cela fera croire au serveur qu'il reçoit un fichier .doc au lieu du fichier .php. __Troisième méthode : Le null byte__ Le null byte est un caractère qui signifie la fin de chaîne. C'est une notion utilisé en C. Le PHP étant écrit en C il fait fasse au même problèmes. Une fin de chaîne est signifié par le caractère \0 Pour l'exploiter nous utiliserons la technique suivante : Renommer notre fichier exploit.php en exploit.php%00.pdf source : [[http://www.acunetix.com/websitesecurity/upload-forms-threat/]]