injection de code malicieux sur des fichiers images
|
12-01-2015, 22h15
Message : #3
|
|
ark
Psyckomodo! Messages : 1,033 Sujets : 48 Points: 317 Inscription : Sep 2011 |
RE: injection de code malicieux sur des fichiers images
Salut,
Difficile de repondre a ta question, mais je vais essayer de synthetiser. Alors, en fait, si tu veux te proteger de ce genre de failles, il y a deux regles tres importantes: premierement, fais attention quand tu code, et deuxiemement, ne fais jamais confiance a tout ce que l'utilisateur peut modifier. Pour faire simple, l'utilisateur peut modifier TOUS les paramettres que tu passes via tes requetes, il convient donc de verifier si ce que tu recoit reste correct. Imaginons par exemple, que tu aies un formulaire d'upload d'image, pour un avatar sur ton forum ou autre. Dans ce cas, il convient de s'assurer que le fichier est reellement une image. En effet, un utilisateur malicieux pourrait essayer de faire passer du code php pour une image. Et la precisement, tu te retrouve avec un probleme! En effet, si l'utilisateur peut upload son fichier sur ton serveur, il est donc en mesure d'executer du code php sur cette machine, et donc peut y faire tout et n'importe quoi (poser une backdoor, rooter la machine et y laisser un rootkit...) Sur ce genre de vulnerabilites, en general, la meilleure solution va etre de verifier les extensions du fichier (etablir une liste d'extension autorisees, .gif, .png, .jpg, etc) et rejeter tous les fichier ayant une autre extension que celles presentent dans la liste. Tu peux ensuite recuperer les donnees de l'image, et verifier que le header soit bien present, et que les informations y sont valides. Cependant, bien que ton formulaire soit plutot securise apres que tu aies effectues ces modifications, il se peut pour autant qu'une autre vulnerabilite soit presente, prennons l'exemple d'une page php, qui inclue une page dont le nom est passe en parametre a la requete. par exemple: www.foo.bar/?page=index.php Ici, que ce passerait-il si l'utilisateur modifie le nom de cette page dans l'url? Il pourrait acceder a n'importe quelle page du site. Pas tres important? Erreur! :p En effet, si ce parametre n'est pas verifie, l'utilisateur va pouvoir inclure tout fichier present sur le serveur, et ainsi avoir un acces en lecture sur une grande majorite des fichiers disponibles (/etc/passwd etant le favori sur les serveurs linux :p) Bon, avoir un acces en lecture, c'est genant, mais c'est pas ca le pire. Le pire, c'est que l'utilisateur, juste avant, il a uploade une jolie image pour faire son avatar, et il a mis du code php dans le code de l'image... Qu'est ce qu'il se passe si il inclue son image en modifiant le parametre? Et ben il execute son code php! Et la encore, domage pour ton serveur, mais tu peux songer a reinstaller ^^ En bref, NEVER TRUST USER INPUT !!! Penses a verifier toutes les entrees utilisateurs, meme les plus annodines, escape tout ce que tu envoi en base de donnee avec mysql_real_escape_string() ou un equivalent si tu n'utilise pas mysql. Penses a convertir les characteres speciaux en utilisant l'encodage html, etc. voili voilou :) Sinon, hesites pas a taper un peu sur les challenges (particulierement dans les sections hacking et javascript) pour mieux comprendre ce qui ne va pas avec les manques de verification. |
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 6 visiteur(s)