Failles UPLOAD
#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.
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 !
Cette faille est du au code mal coder </troll>
$_FILES[‘uploadedfile’][‘type’]
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 :')
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é.
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.
on peut également rechercher le null byte
pour les images, on peut les redimensionner, afin de tester si c'est vraiment une image.
Ouvrir un fichier et rechercher un tag
(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 :
pour vraiment s'en protéger, il suffit d'interdire à apache d'éxécuter du code php dans le repertoire utilisé pour les uploads
EDIT :
semble être plus correct
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
#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 !
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.
on peut également rechercher le null byte
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 :
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
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
InstinctHack
Posting Freak Messages : 1,366 Sujets : 184 Points: 299 Inscription : Dec 2011 |
RE: Failles UPLOAD
Bon tuto d'explication, mais les codes manquent
[Explications et rajouts insérés dans le tuto] Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!" |
InstinctHack
Posting Freak Messages : 1,366 Sujets : 184 Points: 299 Inscription : Dec 2011 |
RE: Failles UPLOAD
EDIT : autant pour moi, j'avais pas remarqué l'italique --"
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!" |
Bannis Messages : 207 Sujets : 19 Points: 17 Inscription : Oct 2012 |
RE: Failles UPLOAD
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! |