Outils pour utilisateurs

Outils du site


web:faille_upload

Ceci est une ancienne révision du document !


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 :

<form method="POST" action="upload.php" enctype="multipart/form-data">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>

Ici le fichier sera envoyé vers la page upload.php qui le traitera ou non.

<?php
$target_path  =  "uploads/";
$target_path  =  $target_path  .  basename($_FILES['uploadedfile']['name']);
if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file " . basename($_FILES['uploadedfile']['name']) . " has been uploaded";
} else {
echo "There was an error uploading the file, please try again!";
}
?>

Ici aucune extension n'est controler.

Exploitation :

Le but est d'uploader un fichier php qui sera interprété par le serveur.

Le fichier que nous uploaderons :

exploit.php

<?php echo 'Best Hacker'; ?>

Première méthode : La double extension

Le but est de rajouter une deuxieme extension pour passer la validation.

Exemple si le formulaire n'autorise que les fichiers en .pdf et en .doc

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. Certains développeurs pensent que de valider le fichier en regardant uniquement est sont MIME est sécurisé . 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<?php\necho 'Best hacker'\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/

web/faille_upload.1455285603.txt.gz · Dernière modification: 2016/07/04 08:37 (modification externe)