Bonjour,
Une grande question me tarabuste. Voila en préambule le cheminement qui m'y a amené, puis la question:
Me renseignant sur les possibles failles dont un internaute malveillant disposerait, j'ai eu pas mal de renseignements très utiles.
Cependant, je sais aussi par expérience qu'un fichier image peut très bien renfermer un script malveillant et même en PHP... fâcheux, non?
Je suis tout de même capable, j’espère, de m'assurer que cette image uploadée chez moi ne contienne pas de tels scripts. Mais c'est là que vient cette fameuse question qui concernerait ceux qui ne font pas cette vérification:
Si aucun vérification n'est faite et que le nom de l'image correspond au schéma d'un chemin de fichier, n'y a t'il pas un énorme risque?
Considérons le scenario suivant
- je suis X, novice en sécurité, je ne connais pas le regex, je ne suis même pas au courant qu'un fichier image peut être malveillant, je conserve le nom initial de l'image, je stocke ça un peu n'importe comment et je n'ai jamais entendu parlé de Rewrite...
- je suis Y, un internaute malveillant. je sais pertinemment qu'on ne peut pas mettre de slash dans un nom de fichier. Par contre je sais aussi qu'on peut très bien remplacer le slash par " urldecode('%2F') " je viens de faire le test. Je tombe sur un site d'amateur en PHP où il y a quand même pas mal d'inscrits. Plutôt que de commencer par une attaque XSS ou une injection, j'ai déjà un script tout fait dans un fichier. Je regarde la source de la page et je vois le lien de l'image du site "<img src="dossier_untel/dossier_image/monlogo.gif". je regarde un peu le profil de monsieur pierrepauljacques et je découvre que les images sont stockées dans "/dossier_user/images/pierrepauljacques.gif".
D’après vous, si Y décide d'uploader une image nommée:
"str_replace('+','',"..+urlencode('%2F')..+urlencode('%2F')+dossier_untel urlencode('%2F')+dossier_image+urlencode('%2F')+monlogo.gif")"
pourrait elle remplacer le logo initial du site par son script malveillant?
Avec mon code tout pourri, peut-être pas, mais n'est ce pas encore une faille possible pour un expert en la matière?
Partager