Dans cet article
Supprimer un malware WordPress ne se résume pas à lancer un scanner et à effacer ce qu'il signale. Un nettoyage qui tient dans la durée suit un ordre précis : figer l'état du site, retrouver tout ce qui a été modifié, remplacer plutôt que corriger, puis fermer les portes. Voici la méthode que nous appliquons, en version accessible à un administrateur à l'aise avec FTP et phpMyAdmin. Pour une prise en charge directe, voyez notre page site WordPress piraté et la rubrique dépannage.
Étape 1 : figer l'état du site
Avant de toucher à quoi que ce soit :
- Téléchargez une copie complète des fichiers et un export de la base de données. Elle servira à comprendre l'attaque et à revenir en arrière si un nettoyage casse quelque chose.
- Récupérez les journaux d'accès du serveur depuis votre espace d'hébergement. Ils sont souvent conservés peu de temps.
- Changez le mot de passe de l'hébergement depuis un ordinateur sain, puis ceux du FTP et de la base de données.
Mettre le site en maintenance pendant l'opération évite d'exposer vos visiteurs, mais gardez la copie d'origine intacte.
Étape 2 : remplacer le cœur de WordPress
Les fichiers du cœur (wp-admin, wp-includes et les fichiers à la racine) ne doivent jamais être modifiés. Si vous avez accès à WP-CLI, la commande « wp core verify-checksums » compare chaque fichier à la version officielle et liste ceux qui diffèrent.
Sans WP-CLI, la méthode la plus sûre est le remplacement : téléchargez la même version de WordPress depuis wordpress.org, supprimez les dossiers wp-admin et wp-includes, puis envoyez les versions neuves. Ne touchez pas encore à wp-content ni à wp-config.php.
Profitez-en pour ouvrir wp-config.php : il ne doit contenir que des réglages. Une ligne de code illisible, un « eval » ou un « include » vers un fichier inconnu sont des signaux clairs.
Étape 3 : extensions et thèmes
Même principe : remplacer plutôt que corriger.
- Notez la liste des extensions et thèmes installés, avec leur version.
- Supprimez ceux que vous n'utilisez plus. C'est le moment.
- Réinstallez les autres depuis leur source officielle (wordpress.org ou le site de l'éditeur pour les extensions payantes). La commande « wp plugin verify-checksums --all » aide pour celles de wordpress.org.
- Méfiez-vous de toute extension ou thème « nulled », c'est-à-dire une version payante piratée : c'est l'une des portes d'entrée les plus fréquentes.
N'oubliez pas le dossier wp-content/mu-plugins : les extensions qui s'y trouvent se chargent automatiquement et n'apparaissent pas dans la liste habituelle. Notre article sur les administrateurs cachés dans mu-plugins montre comment ce dossier est détourné.
Étape 4 : le dossier uploads
wp-content/uploads ne doit contenir que des médias : images, PDF, vidéos. Cherchez :
- tout fichier .php, quel que soit son nom ;
- des fichiers aux doubles extensions, comme image.jpg.php ;
- des fichiers .htaccess placés dans les sous-dossiers ;
- des dossiers récents qui ne correspondent à aucun mois de publication.
Supprimez ce qui n'a rien à faire là, après l'avoir noté.
Étape 5 : la base de données
C'est l'étape que les scanners automatiques traitent le moins bien. Dans phpMyAdmin, vérifiez en priorité :
- la table des utilisateurs (souvent wp_users) et les rôles associés : tout administrateur inconnu doit être supprimé ;
- la table des options : les valeurs siteurl et home doivent pointer vers votre domaine, et l'option active_plugins ne doit lister que vos extensions ;
- les articles et pages : une recherche de « <script » ou d'« eval( » dans le contenu fait souvent apparaître des injections ;
- les tâches planifiées stockées dans l'option cron, qui peuvent relancer une infection.
Étape 6 : fichiers de configuration du serveur
Ouvrez le fichier .htaccess à la racine et dans les sous-dossiers. Des règles de redirection conditionnelles (selon le navigateur ou la provenance Google) sont typiques d'un piratage. Vérifiez aussi l'éventuel fichier .user.ini ou php.ini, qui peut charger un fichier malveillant avant chaque page.
Étape 7 : fermer les portes
Le nettoyage ne sert à rien si le pirate peut revenir :
- changez tous les mots de passe des administrateurs et forcez la déconnexion de toutes les sessions ;
- régénérez les clés de sécurité (les lignes AUTH_KEY, SECURE_AUTH_KEY, etc. de wp-config.php) avec le générateur officiel de WordPress ;
- mettez tout à jour : cœur, extensions, thèmes, version de PHP ;
- activez la double authentification pour les comptes administrateurs.
Étape 8 : vérifier et surveiller
Contrôlez le site depuis un téléphone en 4G et en navigation privée, en arrivant par une recherche Google : beaucoup d'infections ne se montrent que dans ces conditions. Vérifiez la Search Console pour d'éventuels problèmes de sécurité signalés. Puis gardez un œil sur les fichiers modifiés pendant plusieurs semaines : une réinfection rapide signale une porte dérobée oubliée.
Quand déléguer
Cette méthode demande du temps et de la rigueur. Si l'infection revient, si la base de données est touchée, si le site est une boutique ou si plusieurs sites partagent l'hébergement, un regard extérieur fait gagner du temps. Notre nettoyage express d'un WordPress standard est à 190 €, le nettoyage complet à 350 €, avec reprise gratuite si l'infection revient sous 30 jours (TVA non applicable). Le diagnostic est gratuit : 04 82 53 39 32 ou lois.armand@hinsight.org.
Pour une faille récente qui illustre l'importance de l'étape 7, lisez notre article sur la faille du cœur de WordPress CVE-2026-119977.