Contact Form 7 et piratage : ce qui est vrai, ce qui ne l'est pas
Contact Form 7 n'est pas « le » virus. Une version ancienne, ou un add-on d'upload, l'est parfois. Coupez l'upload si vous n'en avez pas besoin, mettez à jour, et cherchez un script parallèle : le formulaire a souvent servi de rampe, pas de payload unique.
Le plugin n'est pas « le » virus. Une version ancienne ou un add-on d'upload l'est parfois. Coupez l'upload, mettez à jour, cherchez un script parallèle.
Ce qui est vrai, ce qui circule
CF7 est partout, donc souvent présent sur un site piraté. Corrélation n'est pas entrée. Les versions avec CVE d'upload ou d'injection, elles, sont des portes documentées. Lisez le numéro de version dans l'écran extensions, pas un titre Facebook « CF7 hacké ».
Un formulaire sans pièce jointe, à jour, n'explique pas un mu-plugin. Cherchez ailleurs : thème nulled, File Manager, voisin. Plugin vulnérable.
Lisez le numéro de version CF7 et la liste des add-ons avant d'accuser « le formulaire ». Un CF7 à jour sans pièce jointe n'explique pas un mu-plugin. Un add-on d'upload abandonné + des `.php.jpg` dans uploads, si. Coupez le champ fichier le temps du dossier. Les messages Flamingo montrent parfois le nom du fichier déposé : traitez-le comme un objet suspect, pas comme une pièce jointe anodine.
L'add-on d'upload, plus que le cœur
Les champs fichier (CV, photo, « joindre un devis ») écrivent dans `uploads`. Si le plugin ne restreint pas les extensions, un `cv.php.jpg` ou un `.phtml` passe. C'est le scénario n°1 autour de CF7. Coupez le champ fichier le temps du dossier, ou validez une liste blanche (pdf, jpg) côté serveur, pas seulement en JavaScript.
Les add-ons marketplace « CF7 file upload », « drag and drop » abandonnés : plus risqués que le plugin principal. Désinstallez-les après copie si plus maintenus.
Après un upload réussi, cherchez dans `uploads` les PHP et doubles extensions. PHP dans uploads.
Liste blanche pdf/jpg côté serveur, pas seulement en JavaScript. Les add-ons « drag and drop » marketplace abandonnés : plus risqués que CF7. Désinstallez-les après copie s'ils ne sont plus maintenus. Puis chasse PHP dans uploads.
Flamingo, copies, pièces jointes
Flamingo stocke les messages en base. Utile pour voir un attachement nommé `invoice.php`. Ça n'exécute pas le PHP tout seul — sauf si un autre bug sert le fichier. Traitez les pièces comme des objets suspects.
Une copie mail vers une boîte piratée : l'attaquant lit les leads. Changez SMTP et la boîte. Ce n'est pas un shell, c'est une fuite de messages.
Spam envoyé vs site pris
Un CF7 ouvert sans limiteur envoie du spam : l'hébergeur suspend pour abus mail. Le site n'est pas forcément « pris ». Journal d'envoi : le script est `wp-cron` / `admin-post` du form, pas un `radio.php`. Deux dossiers. Si le journal montre un PHP à la racine, là oui, rampe + payload.
Ne formatez pas le serveur pour du spam de formulaire. Rate-limit, captcha, puis voyez.
Un CF7 ouvert sans limiteur envoie du spam : l'hébergeur suspend pour abus mail, le site n'est pas forcément pris. Journal d'envoi : form vs `radio.php` à la racine. Deux dossiers. Ne formatez pas le serveur pour du spam de formulaire.
Chercher autour de CF7, pas seulement dedans
Un RCE dans un vieux CF7 a permis de poser un fichier. Le zip officiel CF7 remplacé ne l'enlève pas. Dates à la racine, mu-plugins, users admin. Par où commencer.
Les shortcodes CF7 dans des widgets texte : un attaquant y colle un iframe. Lisez les widgets et Elementor. Elementor.
Un RCE vieux CF7 a permis de poser un fichier. Le zip officiel remplacé ne l'enlève pas. Dates racine, mu-plugins, users. Les shortcodes dans les widgets : un iframe s'y colle. Par où commencer.
Mettre à jour sans croire que c'est fini
MAJ CF7 + add-ons après le clean, pas comme seul geste. Comparez le dossier au zip : fichiers en trop. Un `cf7-extra.php` n'est pas officiel.
Révoquez les capabilities étranges si un add-on en a créé. Users.
Captcha, SMTP, et fausse piste
Installer reCAPTCHA le soir de l'incident n'enlève pas un shell. Ça réduit le spam futur. Un SMTP (Brevo, Mailgun) mal configuré n'est pas un piratage CMS. Distinguez les tickets hébergeur « malware » et « outgoing spam ».
Quand changer de formulaire
Si CF7 n'est là que pour trois champs texte, un formulaire hébergé (ou le bloc natif + un service) réduit la surface. Si vous avez des parcours complexes, restez, à jour, sans upload inutile.
Page WordPress piraté. créer un espace.
Mettre à jour CF7 après le clean n'est pas le seul geste : comparez le dossier au zip, chassez racine et mu-plugins. Page WordPress piraté. Créer un espace.
SMTP, captcha, et données des messages
Installer reCAPTCHA le soir de l'incident n'enlève pas un shell. Ça réduit le spam futur. Distinguez ticket hébergeur « malware » et « outgoing spam ». Un SMTP (Brevo, Mailgun) mal configuré n'est pas un piratage CMS. Une copie mail vers une boîte lue : changez SMTP et la boîte — fuite de leads, pas forcément un shell.
Flamingo : données perso souvent. Si la table a pu être lue, le constat l'indique. La CNIL, si due, vous incombe. Ne demandez pas de pièces d'identité sur un form WordPress ordinaire.
Si CF7 n'est là que pour trois champs texte, un formulaire hébergé réduit la surface. Parcours complexes : restez, à jour, sans upload inutile. WordPress piraté.