[Hack Email] Injecter des formulaires de contact

sexy-computer-girl-robot

 

Coucou à tous,

 

ça faisait un petit paquet de temps que je voulais vous en parler, mais chaque fois j'ai eu d'autres sujets sur la table ..

 

  • Et puis c'est long à expliquer ....
  • Et puis je suis un feignant ...
  • Mais là je m'y mets vraiment !

 

Votre site envoie du spam à la terre entière ?
Vous vous êtes fait blacklister ...
Tous vos mails finissent en indésirables ;)

 

Je vais vous montrer une petite ruse de sioux qui est peut-être à l'origine de votre problème !

Tout d'abord ... un contexte ...

Un vilain Hacker, se baladant sur votre site, tombe nez à nez avec un formulaire de contact !

Capture

Aussi lorsqu'il remplit et valide ce formulaire de contact ...
Automatiquement quelqu'un reçoit le message ...

 

Capture2

 

Mais notre Hacker a de la suite dans les idées !
Il se doute bien que les formulaires sont rarement protégés contre "L'injection d'entête" !

 

Pour vous donner un ordre d'idées :
L'entête d'un mail (partie qui est souvent caché par logiciel de messagerie), ça ressemble à ça :

 

Capture4

 

Aussi on voit bien que notre entête contient un "from", un "to", un "subject", ...

L'attaque ressemble beaucoup à la méthodologie appliquée pour les injections SQL

Sauf qu'au lieu d'envoyer un :
' union select ...
Pour une requête SQL :
SELECT .... WHERE ID=1 ' union select ...

On va appliquer le même principe pour l'entête de notre mail !

 

Admettons que notre webmaster envoie un mail de cette manière-là :

mail(
"webmaster@domain.com",
"Sujet du contact",
"message de contact",
"from : Internaute <adresse_fourni_par_linternaute>"
);

Si notre hacker envoie :

Email       adresseBidon@hotmail.fr>
to: AutreAdresseBidon@yahoo.fr
Sujet  Coucou
Message Comment ça va

 

Le code de notre webmaster deviendra :

 

mail(
"webmaster@domain.com",
"Coucou",
"Comment ça va",
"from : Internaute <adresseBidon@hotmail.fr>
to: AutreAdresseBidon@yahoo.fr>
"

);

Notre hacker aura ainsi biaisé notre code !!!!

Aussi, cette technique peut s'appliquer dans divers contextes et sur divers champs, mais vous aurez compris le principe.

Bref, après la théorie, expérimentons un peu tout ça dans la pratique ;)

 

Notre hacker se rend sur le formulaire de contact, il modifie un peu le code du formulaire, pour  transformer le champ texte en textarea ( ce qui lui permet de faire des retours à la ligne )

Capture5

 


Pour finir, il injecte un retour à la ligne suivie d'un To  pointant vers toto1@hotmail.fr....

Que ce passe t-il lorsqu'il valide ?

 

Capture6

 

Hop ... le mail est envoyé .... à qui ???
Notre Webmaster , mais lorsque l'on regarde de plus près ... on remarque ....  toto1@hotmail.fr ....

 

Voilà ...

 

Pour sécuriser ça ?

  • Contrôler l'adresse email avec des REGEX coté frontale (Javascript) , mais aussi coté backend (PHP) ...
  • Supprimez les retours chariots là où il n'y a pas lieu d'en avoir
  • Supprimez les caractères spéciaux du sujet
  • ...

Bref c'est vraiment au cas par cas, mais tester un peu formulaire en faisant des moulinettes qui envoient n'importe quoi dans vos champs ;)

Partagez ce contenu

2 comments

  • Bravo, c est clair et net !

  • Comment forcer un champ à accepter des caractères spéciaux ?
    J’ai parfois réussi en balançant des balises tronqués ou en doublant triplant les conversions ascii, mais je me pose vraiment la question de comment forcer un formulaire ou Bypasser sa protection en trompant les guillemets d’échappement, il y’a bien une faille exploitable, comme a pu le faire le mec qui a vérolé wathsapp en bluffant la conversion des caractères spéciaux. Je suis buter sur ce défi depuis des lustres.
    Une piste ?

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *