AntoineViau Posté 3 Avril 2006 Partager Posté 3 Avril 2006 Hello tous, Je me suis fait hacké (détourné serait plus juste) mon site (www.pieces-motos.com) de façon assez classique. Ils ont utilisé la page de contact pour envoyer du spam. Pas plus dérangeant que ça puisque la page de contact permet simplement aux visiteurs de rentrer en contact avec moi. Le code PHP (qui utilise phpmailer) envoie simplement le message sur mon adresse à moi, uniquement. Donc, que je reçoive du spam par là, c'est très normal. En revanche, ce qui est plus douloureux c'est que d'autres reçoivent du spam par ce système !!! Et je ne vois pas comme ils ont fait ! En gros, mon code donne ça : $mailer = new phpmailer(); $mailer->AddAddress($site["email_contact"]); $mailer->Subject = "Message venant du site"; $mailer->Body = $_POST["msg"]; etc. On voit donc que je suis bien le seul destinataire du site. Si encore c'était du POST je comprendrais, mais là... Et chose étonnante, les spams envoyé gardent le subject que j'ai fixé ("Message venant du site"). Ils arrivent donc à changer le destinataire et même à en mettre plusieurs mais à toucher au sujet. Bizarre. Quelqu'un aurait une idée ? Antoine PS : Bien évidemment, les variables-paramètres sont désactivées dans PHP. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 3 Avril 2006 Partager Posté 3 Avril 2006 Si tu colles ton body trop près du header, alors le programme pense que le body n'est qu'une suite (logique) du header, et l'execute comme un entete classique. la solution serait à mon avis de mettre une ligne blanche, entre le body et le header : $mailer->Body = "\n"\n".$_POST["msg"]; essaies déjà comme ca Lien vers le commentaire Partager sur d’autres sites More sharing options...
Leonick Posté 3 Avril 2006 Partager Posté 3 Avril 2006 J'utilise cette fonction pour vérifier si le contenu des champs envoyés par le visiteur ne contiennent pas de code malveillant function isHack($Xstring) {return eregi( "from:|subject:|bcc:|To:|CC:|mime-version:|base64|content-type:|content-transfer-encoding:|content-disposition:| content-location:|include|<script|'</script|javascript|embed|iframe|refresh|onload|onstart|onerror| onkey|onmouse|document\.cookie|jscript|vbscript|pearlscript|'||||'i| <style|<body|<object|<\?php|<\?|\?\>|<\%|\%\>", $Xstring);} Si la réponse est oui, je n'envoi pas le mel et retourne sur le formulaire de saisie Lien vers le commentaire Partager sur d’autres sites More sharing options...
AntoineViau Posté 3 Avril 2006 Auteur Partager Posté 3 Avril 2006 (modifié) Ok, je pense que j'ai pigé. C'est de l'injection de header au sein du contenu du message. Néanmoins, en regardant le code de phpmailer, je vois que à priori il passe par la fonction mail de php qui prend en paramètres : bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] ) Le header et le body sont donc séparés... Y a une gruge que j'ai loupé ? Ca voudrait dire que les serveurs STMP lisent les données en "raw" sans faire de réelle distinction entre header et body ? Antoine Modifié 3 Avril 2006 par AntoineViau Lien vers le commentaire Partager sur d’autres sites More sharing options...
Leonick Posté 3 Avril 2006 Partager Posté 3 Avril 2006 Même séparé, l'injection de header est malheureusement possible. Avant de mettre, entres autres, cette vérification, j'y ai été confronté. Maintenant, en plus je conserve les différents éléments du mel pour renforcer la protection si nécessaire, et je m'aperçois que l'injection peut arriver par le nom et mel du visiteur, ou bien le body. On se retrouve avec plusieurs fois les en-têtes, BCC, CC et To et toutes, ou la dernière fonctionnent. Tu n'as qu'à de faire un essai dans ton script, de redéfinir ces en-têtes et voir que le message est bien transmis. Lien vers le commentaire Partager sur d’autres sites More sharing options...
AntoineViau Posté 3 Avril 2006 Auteur Partager Posté 3 Avril 2006 Bon aller hop, c'est parti pour une grande session de blindages supplémentaires... Pffff. Le pire étant que je suis blacklisté chez OVH, qui est aussi l'hébergeur de mon dédié. J'ai signalé aux RBL que je suis de nouveau "propre" et j'ai envoyé un mail au support OVH. J'espère qu'ils vont faire vite... Antoine Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant