Aller au contenu

Sujets conseillés

Posté

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.

Posté

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 :)

Posté

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 :fou:

Posté (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é par AntoineViau
Posté

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. :whistling:

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...