Formulaire de prise de rendez-vous détourné
Les demandes de rendez-vous partent vers une autre boîte, ou un script copie les champs. Fréquent chez médecins, artisans, garages. On vérifie l’action du formulaire, le SMTP, les notifications — pas seulement la home.
Les demandes partent vers une autre boîte, ou un JS copie les champs. Vérifiez l'action du form, le SMTP, les notifications. Fréquent chez médecins, artisans, garages.
Ce que le patient / le client voit encore
Le formulaire a l’air du vôtre. Le message « merci, nous vous recontactons » s’affiche. Vous, vous n’avez rien dans la boîte. Ou vous avez les messages, et un inconnu aussi. Le site n’est pas « down ». Le métier l’est.
Médecins, kinés, artisans, garages, auto-écoles : le RDV est le chiffre. L’attaquant n’a pas besoin d’un kit bancaire. Une adresse de notification changée suffit. Parfois c’est plus sale : un JS qui envoie une copie vers un Google Form ou un mail tiers.
Ne vous fiez pas à un test depuis l’admin (prévisualisation Elementor). Envoyez un vrai RDV test depuis le téléphone, comme un inconnu. Notez l’heure. C’est le début du constat. Un second test le lendemain, même créneau : si le To: a bougé, l’accès est encore ouvert.
- Boîte habituelle : rien / tout / trop.
- Boîte perso du gérant : des demandes « bizarres » en copie.
- Patients qui disent « j’ai envoyé, personne n’a rappelé ».
Trois détournements fréquents
1) L’email de notification du plugin (Contact Form 7, Gravity, Forminator, module Doctolib-like maison) a été changé en base ou dans l’admin. 2) Le SMTP du site (Brevo, mail() hébergeur) envoie encore, mais le To: n’est plus vous — ou une règle de transfert a été ajoutée sur la boîte (règles de transfert si vous l’avez). 3) Le front n’utilise plus votre form : iframe ou action vers un domaine tiers.
Les trois se cumulent. On les teste dans cet ordre : HTML de la page, réglages du plugin, SMTP, boîte.
Un quatrième : la page RDV est une fausse iframe (Calendly, Zenchef, Doctolib widget). Même famille visuelle, autre URL.
L’action du form : HTML, plugin, iframe
Vue source, déconnecté : `action=`, iframe `src=`. Si ce n’est pas votre domaine ou votre prestataire habituel, coupez la page (maintenance sur cette URL) et ne « corrigez » pas en remettant un shortcode par-dessus un iframe pirate.
Constructeurs : le form est dans un JSON. Comparez à une sauvegarde. Un extra Elementor globale peut injecter un second form invisible.
Doctolib / Mondossi / planing tiers : vérifiez dans leur console que le widget est toujours le vôtre. Un attaquant ne « pirate » pas toujours Doctolib ; il remplace le morceau chez vous.
SMTP et adresses de notification
WP Mail SMTP, Fluent, le SMTP de l’hébergeur : destinataires, BCC caché. Un BCC vers une boîte jetable est le vol discret. Relisez tous les forms (contact, devis, RDV, rappel).
Le From: `wordpress@` ou `contact@` peut aussi avoir servi à du spam — autre dossier (expéditeur). Ici : le To: des notifications.
Si plus aucun mail ne part, l’hébergeur a pu limiter l’envoi après un spam. Les RDV tombent dans le vide. Journaux d’envoi : les demander.
JavaScript qui copie les champs
Un listener sur submit qui POSTe ailleurs : visible dans le thème, un plugin, GTM, un fichier dans uploads. Vous le voyez parce que le réseau du navigateur (F12) montre une requête vers un domaine inconnu au moment de l’envoi. C’est un constat, pas un exploit à reproduire en masse.
Hotjar / Clarity ajoutés par l’attaquant enregistrent aussi des saisies. Audit des tags après le form.
Coupez le JS, puis le form natif. Un form « propre » avec le listener encore là continue de fuir.
Preuves : boîte, journaux, copies
Captures du HTML, du réglage To:, d’un envoi test horodaté. Copie du site. Journaux mail. La boîte pirate, vous ne l’aurez pas ; votre constat suffit à dater.
Patients déjà partis : ne les rappelez pas depuis une adresse improvisée qui ressemble à du phishing. Téléphone du cabinet, message habituel.
Panel et admin : mots de passe. Un To: remis à 3 h du matin reviendra si l’accès reste.
Remettre un canal de prise de RDV
Court terme : téléphone + bandeau, ou un lien Doctolib / Calendly vérifié depuis leur console (pas depuis le HTML actuel). La page form du site : maintenance ou 503 ciblée, pas un 301 vers la home si elle a servi de phishing (410 si kit).
Moyen terme : form relu, SMTP authentifié, destinataires documentés, moins de plugins de form (un seul). Tests hebdo : un faux RDV.
Google Business : bouton RDV. S’il pointe vers la page sale, changez temporairement — URL de fiche.
Après : moins de plugins, une phrase au standard
Le standard (secrétaire, associé) a une phrase : « le formulaire web a été coupé, rappelez-nous, ignorez tout SMS de « confirmer votre carte » ». Les cabinets se font avoir sur la comm plus que sur le PHP.
Créer un espace si le JS et le SMTP s’entremêlent. Guide WordPress si c’est un CF7 + thème nulled.
Trente jours : To: encore le vôtre, pas de BCC, un envoi test. Search Console si un kit a été posé à côté du form.