N-PN White-Hat Project
Failles UPLOAD - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Tutoriels (https://dev.n-pn.fr/forum/forumdisplay.php?fid=15)
+--- Forum : [Tutoriel] Hacking (https://dev.n-pn.fr/forum/forumdisplay.php?fid=43)
+--- Sujet : Failles UPLOAD (/showthread.php?tid=2783)



Failles UPLOAD - Shirobi - 10-03-2013

#Tutorial taken from my blog
#J'mettrais les jolies jolies couleurs demain, j'ai un train à 6 heure demain enfin ce matin lol.

Salut à tous, nouvelle article pour ce jour qui concerne les failles de type upload.
Alors déjà pourquoi je mets un "s" à failles? car tout simplement il existe plusieurs type d'attaques pour une vulnérabilité upload, voici celles que je connais:

0x01~# Type MIME
0x02~# Double extensions
0x03~# Null bytes

Pour commencer:

L’upload permet le transfert de 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.

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.


0x01~# Type MIME

Cette vulnérabilité va permettre de <<bypasser>> la vérification MIME
Je m'explique, quand on envoie un fichier sur le serveur, un contenu POST est envoyé.
Dans ce contenu, on pourra voir de quel genre de fichier il s'agit.

Ex: Si on upload un fichier php ça nous renvoie
application/octet-stream

Pour bypasser, il nous suffira de changer la valeur de POST (dans ce cas il nous faudra changer le application/octet-stream par quelque chose qu'on nous autorise, si on nous autorise les images PNG on n'a qu'à marquer image/png)

Mais comment? Grâce à un module firefox: TemperData. Qui lui est disponible sur toutes les versions du renard comparé à http header qui est bien connu aussi.

Pour cela, quand vous envoyez le fichier, avant faites "altérer les donnés" puis uploadé, normalement une fenêtre s'ouvre, cliquez sur "Altérer" (et décoché si nécessaire la case)
Après vous n'avez qu'à faire comme je l'ai dit au dessus Smile!

Cette faille est du au code mal coder </troll>
$_FILES[‘uploadedfile’][‘type’]

0x02~# Double extensions

Comme son nom l'indique, il suffit de mettre deux extensions soit
backdoor.php.png
Cette faille est du à apache qui lit les fichiers php et png
pour sécurisé il suffit d'interdire la lecture des fichiers php (si vous ne savez pas coder :')

0x03~# Null byte

un null byte ressemble à ça on peut l'écrire de différentes facons selons la version du serveur
/0 ; ; % 00 ..

La faille est présente car le serveur lui-même l'interprète en tant que fin d'un string.

Pour l'exploité vous n'avez qu"à changer le contenu du POST; dans le nom du fichier rajouter le nullbyte (ex: shell.php%00.png) et validé. Vous pouvez aussi directement modifier le nom du fichier avant de l'uploadé.

0x04~# Sécurisation

Merci à Khaled.

Pour rigoler (cela n'est pas une véritable protection je dirais) on peut calculer le nombre d'extensions présentes dans le fichier et annuler le script si c'est supérieur à un.
Code PHP :

if(count(explode('.',$filename))>2)exit();
 


on peut également rechercher le null byte
Code PHP :

if(strpos($chaine,chr(0)) !== false)
{
echo "ca va pas etre possible...";
exit();
}
 


pour les images, on peut les redimensionner, afin de tester si c'est vraiment une image.

Ouvrir un fichier et rechercher un tag

Code PHP :

$file = fopen($local_file, "r");
while(!feof($file))
{
if (stripos(fread($file, 1000), '<?php') !== false)exit();
}
fclose($file);

(j'ai pas du tout tester ce code par contre...) et puis si la balise se trouve à cheval sur deux segments, on est mal..

Une meuilleur protection serais de renommer le fichier :
Code PHP :

echo date('Y-m-d_H:i<img src="https://dev.n-pn.fr/forum/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />'). rand(0,100).'.file';
 


pour vraiment s'en protéger, il suffit d'interdire à apache d'éxécuter du code php dans le repertoire utilisé pour les uploads
Code APACHE :

RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off
 


EDIT :
Code :
Options -ExecCGI
semble être plus correct Smile

END

à noté que vous pouvez fusionner ses techniques!
Vous êtes maintenant capable de réaliser 3 challenges de root me dans la catégorie web-serveur!

TOP RESSOURCE(s):
LINK


RE: Failles UPLOAD - InstinctHack - 10-03-2013

Bon tuto d'explication, mais les codes manquent Sad

[Explications et rajouts insérés dans le tuto]


RE: Failles UPLOAD - InstinctHack - 25-03-2013

EDIT : autant pour moi, j'avais pas remarqué l'italique --"


RE: Failles UPLOAD - Shirobi - 25-03-2013

C'est moi qui a écrit intégralement le tutoriel! seul les choses en italiques viennent de wikipedia!
Je n'ai pas posté que sur n-pn, également sur d'autres forums ainsi que mon blog!