Nettoyer malware WordPress : protocole de désinfection sans récidive
Vouloir nettoyer malware WordPress en un clic, c’est souvent préparer la prochaine infection. Le scanner efface trois fichiers suspects, le site semble guéri, puis le même code réapparaît une semaine plus tard, parce qu’une porte dérobée est restée en place dans les médias, la base de données ou une tâche planifiée.
L’agence Référenceur accompagne les indépendants, PME et ASBL de Bruxelles, de Wallonie et du reste de la Belgique dans une désinfection complète et documentée, menée à distance du premier diagnostic jusqu’à la remise en ligne. Ce guide détaille le protocole, les contrôles que vous pouvez faire vous-même et les étapes à confier à un professionnel ou à votre hébergeur.
Analysez la sécurité de votre site WordPress : lancez dès maintenant une première analyse gratuite avec notre outil ci-dessous.
Vous venez de constater l’attaque ? Parcourez d’abord la page sur les réflexes à adopter quand un site WordPress est piraté. Pour une vision d’ensemble des menaces et des protections, notre dossier complet sur la sécurité WordPress reste la référence. Une analyse gratuite de sécurité de votre domaine est aussi disponible sur cette page.
Supprimer virus WordPress commence par conserver les preuves
Le premier réflexe, effacer tout ce qui paraît anormal, détruit aussi les indices. Avant de supprimer virus WordPress, réalisez une copie intégrale du site infecté (fichiers et base), rangez-la hors du serveur et nommez-la sans ambiguïté. Elle servira à l’analyse, jamais à une restauration.
Réclamez ensuite à votre hébergeur, belge ou européen, les journaux d’accès web et les traces de connexion FTP, SFTP ou SSH. Croisés avec les dates de modification des fichiers, ils indiquent souvent quand et comment l’intrus est entré : extension obsolète, mot de passe réutilisé, compte d’un ancien prestataire jamais supprimé.
Renouvelez enfin tous les secrets depuis un poste de travail sain : panneau d’hébergement, FTP, base de données, comptes WordPress et adresses e-mail liées au site. Un pirate qui lit encore votre boîte de réception pourrait réinitialiser ces mots de passe à votre insu.
Diagnostic WP-CLI : ce que révèlent les sommes de contrôle
Avec un accès SSH, WP-CLI, l’interface officielle en ligne de commande de WordPress, livre un premier état des lieux fiable. Selon la documentation de WP-CLI, la vérification du cœur compare chaque fichier installé aux sommes de contrôle publiées par WordPress.org pour votre version.
wp core verify-checksums --include-root
wp plugin verify-checksums --all
wp user list --role=administrator
wp cron event list
L’option --include-root élargit le contrôle aux fichiers étrangers posés à la racine. Les extensions du répertoire WordPress.org sont comparées à leur version officielle ; une extension premium ou développée sur mesure échappe à ce test et doit être retéléchargée chez son éditeur ou relue.
Les deux dernières lignes affichent les comptes administrateurs et les événements cron. Un administrateur que personne ne reconnaît ou un événement au nom incohérent se traite avant toute réinstallation, sinon il recréera le problème.
Six recoins où le code malveillant survit
Les sommes de contrôle ignorent les médias, la configuration et les extensions « must-use ». Ce sont justement les emplacements préférés des attaquants pour revenir après un nettoyage superficiel.

| Recoin à inspecter | Symptôme fréquent | Contrôle conseillé |
|---|---|---|
| Dossier wp-content/uploads | Script PHP au nom d’image ou de cache | Lister les fichiers .php : aucun ne devrait s’y trouver |
| Chaque fichier .htaccess | Réécriture vers un script caché ou un domaine tiers | Confronter au bloc WordPress standard, dossier après dossier |
| wp-config.php | Ligne include inconnue ou code ajouté tout en haut | Relecture intégrale, en ne gardant que les réglages identifiés |
| wp-content/mu-plugins | Extension active mais absente de la liste habituelle | Ouvrir le dossier et justifier chaque fichier |
| Thème parent et thème enfant | Ajouts dans functions.php, header.php ou footer.php | Comparaison avec l’archive d’origine de l’éditeur |
| Événements cron | Tâche qui réécrit le malware chaque nuit | Liste WP-CLI, suppression des hooks inconnus |
find wp-content/uploads -type f -name "*.php"
D’après la documentation WordPress, les fichiers placés dans wp-content/mu-plugins se chargent automatiquement, ne peuvent pas être désactivés depuis l’administration et n’affichent pas de notification de mise à jour. Une cachette idéale pour qui veut rester discret.
Dans ces fichiers, guettez les longues chaînes illisibles associées à base64_decode, eval ou gzinflate. Ces fonctions ont aussi des usages légitimes : mettez le fichier en quarantaine plutôt que de le supprimer sans comprendre son rôle.
Assainir la base de données sans casser le site
Des fichiers impeccables ne suffisent pas si la base réinjecte le code. Dans la table wp_options, vérifiez que siteurl et home correspondent exactement à votre domaine et qu’aucune option ne charge un script venu d’ailleurs.
Passez ensuite wp_posts au crible : balises script ou iframe, liens vers des casinos, des pharmacies en ligne ou des pages en caractères japonais. Sur un site trilingue français, néerlandais et allemand, contrôlez chaque version linguistique, car l’injection ne touche parfois qu’une seule langue.
Pour les comptes utilisateurs, notez la date de création de chaque compte suspect avant de le supprimer : elle aide à dater l’intrusion. La démarche complète est décrite dans notre article sur un compte administrateur WordPress compromis.
Remonter le site sur des fondations saines
Une fois l’inventaire bouclé, on remplace plutôt que de réparer fichier par fichier. L’ordre a son importance : chaque étape suppose que la précédente est propre.
- Cœur : écrasez wp-admin et wp-includes par une copie officielle de WordPress.org, dans la version installée.
- Extensions : effacez chaque dossier et réinstallez depuis WordPress.org ou l’éditeur, sans jamais recourir à une version « nulled ».
- Thème : réinstallez le thème parent d’origine et relisez le thème enfant ligne par ligne.
- Superflu : retirez thèmes et extensions désactivés, anciennes copies du site et sous-dossiers de test oubliés.
- Clés de sécurité : régénérez les salts avec
wp config shuffle-salts, ce qui ferme toutes les sessions, y compris celle de l’intrus. - Vérification finale : relancez les contrôles WP-CLI, puis testez le site en navigation privée, sur mobile et dans chaque langue.
Avertissez l’équipe que chacun devra se reconnecter. Si le site est trop ancien ou trop bricolé pour une réinstallation fiable, une refonte du site WordPress demande parfois moins d’efforts qu’un nettoyage répété.
Ensuite, fermez la faille : mises à jour du cœur, des extensions, du thème et de PHP (notre article sur la version PHP de WordPress explique l’enjeu), double authentification, define( 'DISALLOW_FILE_EDIT', true ); dans wp-config.php. Les autres réglages figurent dans notre guide de durcissement WordPress.
RGPD, APD et CCB : les démarches à ne pas oublier en Belgique
Si le site collecte des données personnelles (formulaire de contact, réservations d’un restaurant, espace membres d’une ASBL, commandes), le RGPD s’applique. L’article 33 prévoit la notification d’une violation à l’Autorité de protection des données (APD) dans les 72 heures après en avoir pris connaissance, sauf si elle est peu susceptible d’engendrer un risque pour les personnes.
En cas de risque élevé, l’article 34 impose aussi d’informer les personnes concernées, et toute violation doit être consignée dans un registre interne. L’APD reçoit les notifications via son portail en ligne ; notre page sur une fuite de données d’un site WordPress détaille ces étapes. Ce guide ne constitue pas un conseil juridique.
Côté cybersécurité, le Centre pour la Cybersécurité Belgique (CCB) reçoit les signalements d’incidents via son CSIRT national, et sa plateforme Safeonweb diffuse des conseils au grand public. Une plainte auprès de la police locale reste une démarche distincte, utile en cas de préjudice ou d’extorsion.
Un chantier mené à distance, en visioconférence
Intervenir sur un WordPress infecté ne nécessite aucun déplacement : tout passe par la visioconférence et des accès délégués. Un appel de cadrage permet de dresser la liste des accès, de décider ce qui doit être conservé comme preuve et de répartir les rôles avec votre hébergeur.
Le nettoyage se déroule ensuite en partage d’écran si vous voulez suivre chaque étape, ou de façon autonome avec des accès temporaires que vous révoquez à la fin. Vous recevez un rapport des fichiers retirés, des comptes supprimés et de la faille la plus probable.
Une formation enregistrée montre ensuite à votre équipe les bons réflexes, et un point mensuel peut suivre mises à jour et sauvegardes. De Liège à Mons, d’Eupen à Bruxelles, la méthode reste la même ; notre page intervention sur un site WordPress piraté décrit l’offre en détail.
Nettoyer malware WordPress : questions fréquentes
Restaurer la sauvegarde d’hier ne suffit-il pas ?
Rarement. Un code malveillant peut dormir plusieurs semaines avant de se manifester, et la sauvegarde d’hier contient alors la même porte dérobée. Même avec une copie antérieure à l’intrusion, la faille d’origine reste ouverte et les identifiants volés restent valables. Restaurer n’a de sens qu’après avoir daté l’attaque, corrigé la faille et changé tous les accès.
Mon hébergeur belge peut-il s’en charger ?
Certains hébergeurs analysent les fichiers ou suspendent un site infecté pour protéger leurs autres clients, mais le contenu WordPress relève en général de votre responsabilité. Demandez-leur au minimum les journaux, une sauvegarde côté serveur et la liste des fichiers récemment modifiés. Ces éléments rendent beaucoup plus précis le travail pour nettoyer malware WordPress en profondeur.
Une extension de sécurité peut-elle supprimer virus WordPress seule ?
Elle détecte les signatures connues, mais pas forcément un code inédit, un script injecté dans la base ou un administrateur qui paraît légitime. Pour supprimer virus WordPress de façon durable, combinez scanner, sommes de contrôle WP-CLI, relecture des recoins sensibles et réinstallation propre. L’extension devient ensuite un outil de surveillance, pas une solution complète.
Dois-je prévenir l’APD si mon site a été infecté ?
Tout dépend des données exposées. Si l’intrus a pu accéder à des données personnelles et qu’un risque pour les personnes ne peut être exclu, le RGPD prévoit une notification à l’Autorité de protection des données dans les 72 heures. Un site vitrine sans formulaire ni compte client présente un autre profil qu’une boutique en ligne. Faites-vous conseiller sur votre cas.
À qui signaler l’attaque en Belgique ?
Le Centre pour la Cybersécurité Belgique accepte les signalements d’incidents via son CSIRT national, ce qui l’aide à suivre les campagnes en cours. Si l’attaque vous cause un préjudice financier ou s’accompagne d’une demande de rançon, une plainte auprès de votre zone de police locale est une démarche séparée. Conservez la copie infectée et vos notes pour ces deux démarches.
Pourquoi le site est-il réinfecté après chaque nettoyage ?
Presque toujours parce qu’un élément a échappé à l’inventaire : script dans les médias, fichier must-use, tâche cron, compte administrateur ou mot de passe FTP inchangé. La faille d’origine, souvent une extension non mise à jour, peut aussi être toujours ouverte. Pour nettoyer malware WordPress sans récidive, l’inventaire complet doit précéder la réinstallation.
Plusieurs sites partagent mon hébergement : que faire ?
Considérez-les comme un seul incident. Sur un même compte d’hébergement, un malware passe facilement d’une installation à l’autre, par exemple de votre site principal à une ancienne version de test oubliée. Supprimez les installations inutiles, nettoyez les autres en parallèle et attribuez un mot de passe distinct à chaque base de données.
Un doute sur l’état de votre site ? Lancez une analyse de sécurité gratuite de votre site WordPress :
Un code malveillant revient sur votre site WordPress ? Réservez un appel visio de 20 minutes : nous passons en revue les symptômes, les accès disponibles et le protocole de désinfection adapté à votre installation.