Nettoyer malware WordPress : la méthode pour une désinfection durable
Un antivirus qui affiche « aucune menace » après trois clics ne prouve pas grand-chose. Pour nettoyer malware WordPress de façon durable, il faut retrouver chaque point d’ancrage laissé par le pirate : un fichier PHP glissé parmi les images, une option piégée dans la base, une tâche planifiée qui réécrit le code toutes les nuits. Un seul oubli, et l’infection revient.
L’agence Référenceur accompagne les commerces, fiduciaires, professions libérales et PME du Grand-Duché dans une désinfection méthodique, menée entièrement à distance. Ce guide expose l’ordre des opérations, les vérifications à votre portée et le cadre luxembourgeois à respecter lorsque des données personnelles ont pu être touchées.
Analysez la sécurité de votre site WordPress : lancez dès maintenant une première analyse gratuite avec notre outil ci-dessous.
Si l’attaque vient d’être découverte, la page sur les premières mesures après le piratage d’un site WordPress vous aide à limiter les dégâts dans l’heure. Notre guide de sécurité WordPress rassemble l’ensemble des dossiers, et une analyse gratuite de sécurité de votre domaine est proposée sur cette page.
Avant de supprimer virus WordPress, figer la scène
La tentation est forte d’effacer tout de suite ce qui paraît suspect. Pourtant, supprimer virus WordPress à l’aveugle détruit les traces qui expliquent l’intrusion. Commencez par une archive complète des fichiers et un export de la base, téléchargés sur un support séparé et étiquetés « infecté, ne pas restaurer ».
Demandez ensuite à l’hébergeur les journaux du serveur web et l’historique des connexions FTP, SFTP ou SSH des dernières semaines. Rapprochés des dates de modification des fichiers, ces relevés désignent souvent le point d’entrée : formulaire d’une extension vulnérable, identifiant d’un ancien webmaster resté actif, mot de passe déjà paru dans une fuite.
Changez enfin les secrets depuis un ordinateur dont vous êtes sûr : compte d’hébergement, accès FTP, utilisateur de la base, administrateurs WordPress et messagerie liée au domaine. Un intrus qui lit vos e-mails peut relancer la procédure de mot de passe oublié.
Trois contrôles WP-CLI pour cartographier l’infection
Sur un hébergement doté d’un accès SSH, WP-CLI fournit en quelques secondes une photographie fiable de l’installation. La commande décrite dans la documentation officielle de WP-CLI confronte les fichiers du cœur aux sommes de contrôle publiées par WordPress.org pour la version installée.
wp core verify-checksums
wp plugin verify-checksums --all
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
La première ligne signale tout fichier du cœur modifié ou ajouté. La deuxième en fait autant pour les extensions distribuées sur WordPress.org ; une extension premium ou un développement maison n’est pas couvert et doit être comparé à l’archive fournie par son éditeur.
La troisième affiche les administrateurs avec leur date d’inscription. Un compte créé la nuit de l’attaque, rattaché à une adresse inconnue, donne à la fois une piste et un horodatage.
Les recoins ignorés par les scanners
Les sommes de contrôle ne disent rien des médias, de la configuration ni du thème. Les attaquants le savent et y déposent leurs portes dérobées de secours, prêtes à réinstaller le malware après un nettoyage partiel.

| Emplacement | Ce que l’on y trouve | Vérification |
|---|---|---|
| wp-content/uploads | Fichier .php camouflé parmi les images d’un mois donné | Aucun script PHP n’a sa place dans ce dossier |
| .htaccess, racine et sous-dossiers | Règle de réécriture vers un fichier inconnu ou un domaine externe | Comparer au bloc par défaut publié par WordPress |
| wp-config.php | Instruction include ajoutée avant les réglages habituels | Ne garder que les constantes dont vous connaissez le rôle |
| wp-content/mu-plugins | Fichier chargé en permanence, absent de la liste habituelle des extensions | Justifier chaque fichier présent, écarter le reste |
| functions.php et gabarits du thème | Code injecté dans l’en-tête ou le pied de page | Comparer avec l’archive d’origine du thème |
| Tâches WP-Cron | Événement au nom aléatoire qui recrée un fichier effacé | wp cron event list, puis suppression ciblée |
find wp-content/uploads wp-content/mu-plugins -type f -name "*.php" -mtime -30
Cette recherche liste les scripts PHP modifiés depuis trente jours dans les deux dossiers les plus prisés. D’après la documentation de WordPress, les fichiers placés dans wp-content/mu-plugins se chargent automatiquement, ne se désactivent pas depuis l’administration et n’affichent aucune alerte de mise à jour : une cachette rêvée.
Dans les fichiers douteux, repérez les chaînes interminables passées à base64_decode, eval, str_rot13 ou gzinflate. Certaines extensions légitimes s’en servent aussi : isolez le fichier dans un dossier hors du site avant de trancher.
Base de données : les injections qui survivent aux fichiers
Un serveur assaini peut être réinfecté par sa propre base. Dans wp_options, les valeurs siteurl et home doivent reprendre exactement votre domaine, et aucune option ne doit appeler un script hébergé ailleurs, y compris dans les réglages des extensions d’insertion de code.
Les contenus méritent la même vigilance. La commande wp db search "<script" wp_posts repère les balises script glissées dans les articles et les pages ; cherchez aussi les iframes et les liens vers des casinos ou des pharmacies en ligne.
Sur un site multilingue en français, allemand, luxembourgeois et anglais, chaque traduction est un contenu distinct : l’injection peut ne viser que la version allemande. Pour les comptes suspects, notre dossier consacré à un administrateur WordPress piraté explique comment les neutraliser sans perdre la trace de leur création.
Réinstaller dans le bon ordre pour nettoyer malware WordPress
L’inventaire terminé, on remplace au lieu de réparer. Retoucher des fichiers un à un laisse toujours un doute. Chaque étape suppose la précédente achevée.
- Cœur : supprimez wp-admin et wp-includes, puis déposez la même version téléchargée sur WordPress.org.
- Extensions : effacez chaque dossier et réinstallez la dernière version depuis sa source officielle, en bannissant toute copie « nulled ».
- Thème : remettez le thème parent d’origine et relisez le thème enfant fichier par fichier.
- Ménage : retirez thèmes inactifs, extensions désactivées, vieilles archives stockées dans le site et dossiers de test.
- Sessions : lancez
wp config shuffle-saltspour régénérer les clés, ce qui déconnecte tout le monde, intrus compris. - Contre-vérification : relancez les contrôles WP-CLI, puis visitez le site en navigation privée, sur smartphone et dans chaque langue.
Reste à refermer la porte d’entrée : mises à jour du cœur, des extensions, du thème et de PHP (voir notre article sur la version PHP d’un site WordPress), double authentification et blocage de l’éditeur de fichiers avec define( 'DISALLOW_FILE_EDIT', true );. Les autres réglages sont réunis dans le guide de durcissement de WordPress.
Obligations au Luxembourg : CNPD, CIRCL et Police grand-ducale
Dès que le site traite des données personnelles (formulaire de contact, agenda en ligne d’un cabinet, espace client d’une fiduciaire, boutique), le RGPD s’applique. Son article 33 impose de notifier la violation à la Commission nationale pour la protection des données (CNPD) dans les 72 heures après en avoir pris connaissance, sauf si elle est peu susceptible d’engendrer un risque pour les personnes.
La CNPD publie sur son site un formulaire de notification au format Word, à lui renvoyer par e-mail. En cas de risque élevé, l’article 34 exige aussi d’informer les personnes concernées, et toute violation, même non notifiée, doit être documentée en interne. Notre page sur une fuite de données sur un site WordPress détaille ces étapes ; ce guide ne remplace pas un conseil juridique.
Côté technique, le CIRCL (Computer Incident Response Center Luxembourg) est l’équipe de réponse aux incidents du secteur privé, des communes et des entités non gouvernementales : il reçoit les signalements par e-mail ou par téléphone. GOVCERT.LU couvre, lui, les administrations de l’État et les infrastructures critiques. Une plainte auprès de la Police grand-ducale reste une démarche à part, utile en cas de préjudice ou de chantage.
Une désinfection suivie en visioconférence
Un WordPress infecté se soigne sans que personne ne se déplace. Un premier appel en visio sert à recenser les accès, décider ce qui doit être conservé comme preuve et préciser ce que l’hébergeur prend en charge.
L’intervention se déroule ensuite en partage d’écran si vous souhaitez suivre chaque manipulation, ou en autonomie avec des accès temporaires que vous supprimez à la fin. Un compte rendu liste les fichiers écartés, les comptes supprimés et la faille la plus probable.
Une courte formation enregistrée transmet ensuite les bons réflexes à votre équipe, et un point mensuel peut suivre mises à jour et sauvegardes. Que votre activité se trouve à Esch-sur-Alzette, à Ettelbruck ou à Remich, le déroulé reste identique ; voyez aussi notre page création de sites internet à Esch-sur-Alzette et l’offre de réparation d’un site WordPress piraté.
Nettoyer malware WordPress : la FAQ
Une sauvegarde récente peut-elle remplacer le nettoyage ?
Rarement à elle seule. Un script malveillant reste souvent dormant plusieurs semaines : la copie de la veille peut déjà le contenir. Même une sauvegarde antérieure à l’intrusion laisse la faille ouverte et les mots de passe volés valides. La restauration n’a de sens qu’une fois l’attaque datée, la vulnérabilité corrigée et tous les accès renouvelés.
Mon hébergeur peut-il se charger de la désinfection ?
Certains hébergeurs scannent les fichiers ou suspendent un site compromis pour protéger leurs autres clients, mais le contenu WordPress reste en général sous votre responsabilité. Réclamez-leur les journaux d’accès, une sauvegarde côté serveur et la liste des fichiers modifiés récemment. Ces éléments rendent bien plus précis le travail pour nettoyer malware WordPress jusqu’au dernier fichier.
Un plugin de sécurité peut-il à lui seul supprimer virus WordPress ?
Non. Elle repère les signatures connues, mais pas toujours un code inédit, une injection dans la base ou un administrateur d’apparence légitime. Pour supprimer virus WordPress durablement, combinez scanner, sommes de contrôle WP-CLI, inspection des cachettes et réinstallation à partir des sources officielles. L’extension sert ensuite de sentinelle, pas de remède.
Faut-il prévenir la CNPD après une infection ?
Cela dépend des données exposées. Si l’intrus a pu consulter des données personnelles et qu’un risque pour les personnes ne peut être écarté, le RGPD prévoit une notification à la CNPD dans les 72 heures. Un site vitrine sans formulaire n’a pas le même profil qu’une boutique avec comptes clients. Dans tous les cas, documentez l’incident et faites-vous conseiller.
Qui contacter au Luxembourg pour signaler l’attaque ?
Pour une entreprise, une commune ou une association, l’interlocuteur technique est le CIRCL, qui recueille les signalements d’incidents et peut orienter vos premières mesures. Si l’attaque entraîne une perte financière ou une demande de rançon, contactez également la Police grand-ducale pour déposer plainte. Gardez la copie infectée et vos notes : elles servent aux deux démarches.
Pourquoi le malware réapparaît-il quelques jours après le nettoyage ?
Presque toujours parce qu’un élément a échappé à l’inventaire : script dans les médias, fichier must-use, tâche planifiée, administrateur caché ou mot de passe FTP inchangé. La faille d’origine, souvent une extension en retard de mise à jour, peut aussi rester ouverte. Pour nettoyer malware WordPress sans rechute, l’inventaire complet précède toujours la réinstallation.
Plusieurs sites partagent le même hébergement : faut-il tous les traiter ?
Oui, traitez-les comme un incident unique. Sur un même compte, le code malveillant circule sans peine d’une installation à l’autre, par exemple d’un site de démonstration oublié vers le site principal. Supprimez les installations devenues inutiles, désinfectez les autres en même temps et donnez à chacune son propre utilisateur de base de données, avec un mot de passe distinct.
Un doute sur l’état de votre site ? Lancez une analyse de sécurité gratuite de votre site WordPress :
Votre site WordPress se réinfecte malgré vos efforts ? Planifiez un appel visio de 20 minutes pour diagnostiquer le site : nous examinons ensemble les symptômes, les accès disponibles et la marche à suivre pour une désinfection complète.