Réinstaller le cœur de WordPress proprement
Remplacer les fichiers du cœur de WordPress par une version saine élimine une bonne partie d'une infection. Voici comment le faire sans toucher à votre contenu ni vos réglages.
Réinstaller le cœur de WordPress, c’est remplacer les fichiers système du CMS par une copie officielle et propre. Quand un site est piraté, une partie de l’infection se loge souvent dans ces fichiers : un xmlrpc.php modifié, un faux wp-blog-header.php, du code injecté dans les fonctions de wp-includes. En écrasant tout le cœur d’un coup, vous nettoyez ce périmètre en quelques minutes, sans deviner fichier par fichier ce qui a été touché.
Encore faut-il savoir ce qu’on remplace et ce qu’on laisse intact. C’est là que la plupart des gens cassent leur site.
ce qu’on appelle le « cœur » de WordPress
Le cœur, c’est le code de WordPress lui-même, identique sur tous les sites qui tournent dans la même version. Trois choses :
- le dossier
wp-admin(toute l’interface d’administration) ; - le dossier
wp-includes(les fonctions et bibliothèques internes) ; - les fichiers PHP à la racine :
index.php,wp-login.php,wp-load.php,wp-settings.php,xmlrpc.php, etc.
Ces fichiers ne contiennent rien de personnel. Vous pouvez les écraser sans réfléchir par leur version d’origine, ils seront strictement identiques à ce qu’ils devraient être.
ce qu’il ne faut surtout pas toucher
Deux éléments sont propres à votre installation. Si vous les remplacez, vous perdez le site.
wp-config.php: il contient vos identifiants de base de données, le préfixe de vos tables, vos clés de sécurité. Il ne fait pas partie du cœur. On n’y touche pas (sauf pour régénérer les salts, voir plus bas).- le dossier
wp-content: vos thèmes, vos extensions, vos médias (uploads), et parfois des fichiers de cache ou de configuration. C’est tout votre contenu et votre personnalisation. Une réinstallation du cœur ne doit jamais le toucher.
Retenez la frontière : wp-admin et wp-includes se remplacent les yeux fermés, wp-config.php et wp-content restent en place.
méthode 1 : avec wp-cli (la plus propre)
Si vous avez un accès SSH et wp-cli installé, c’est la voie la plus rapide et la plus fiable. Placez-vous à la racine du site, puis vérifiez d’abord la version installée :
wp core version
Réinstallez ensuite exactement cette version. La commande télécharge le cœur officiel et écrase wp-admin, wp-includes et les fichiers PHP de la racine, sans toucher à wp-content ni wp-config.php :
wp core download --version=6.5.3 --force --locale=fr_FR
Adaptez --version au numéro renvoyé par wp core version et --locale à la langue de votre site. Le --force autorise l’écrasement des fichiers existants.
Contrôlez ensuite que tous les fichiers du cœur correspondent bien aux empreintes officielles publiées par WordPress :
wp core verify-checksums
Si la commande ne signale aucune anomalie, votre cœur est sain. Si elle pointe encore des fichiers modifiés ou des fichiers en trop (souvent des fichiers PHP suspects ajoutés à la racine ou dans wp-includes), notez-les : ce sont des candidats backdoor à examiner. Pour ça, voyez comment traquer les backdoors restantes.
méthode 2 : manuellement en FTP
Pas de SSH ? La réinstallation manuelle marche partout, il faut juste être rigoureux sur la version.
- Repérez la version exacte du site. Dans le tableau de bord, elle s’affiche en bas à droite et dans Tableau de bord > Mises à jour. Sans accès admin, ouvrez
wp-includes/version.phpen FTP et lisez la ligne$wp_version. - Téléchargez l’archive officielle de cette version sur
wordpress.org. Les anciennes versions sont disponibles surwordpress.org/download/releases/(et la version française surfr.wordpress.org). Ne prenez jamais une archive depuis un autre site. - Décompressez l’archive sur votre machine. Supprimez d’abord son dossier
wp-contentpour ne pas risquer d’écraser le vôtre. - Connectez-vous en FTP/SFTP. Supprimez les dossiers
wp-adminetwp-includesdu serveur, puis envoyez les versions fraîches de l’archive à leur place. Supprimer avant d’envoyer évite de laisser traîner un fichier malveillant que l’upload ne recouvrirait pas. - Envoyez aussi les fichiers PHP de la racine présents dans l’archive (
index.php,wp-login.php, etc.) en écrasant ceux du serveur. N’envoyez pas lewp-config-sample.phpà la place de votrewp-config.php, et ne touchez pas àwp-content.
Téléchargez exactement la même version que celle installée, pas la dernière en date. Installer une version plus récente par-dessus une base de données plus ancienne peut exiger une mise à jour de la base et provoquer des incompatibilités avec vos extensions. Si vous voulez monter de version, faites-le après, proprement, depuis l’admin.
méthode 3 : depuis le tableau de bord
WordPress propose une réinstallation intégrée. Dans Tableau de bord > Mises à jour, le bouton « Réinstaller la version X.Y.Z » télécharge à nouveau le cœur et remplace les fichiers.
C’est pratique, mais deux limites :
- ça ne fonctionne que si vous avez encore accès à l’administration. Un site dont l’admin est verrouillé ou redirigé par le pirate ne vous laissera pas cliquer sur ce bouton.
- ça ne suffit presque jamais seul. Si un attaquant a un accès admin ou une backdoor active dans
wp-content, il peut réinjecter du code juste après. La réinstallation depuis l’admin nettoie le cœur, pas le reste.
Considérez cette méthode comme un dépannage rapide, à compléter par le reste du nettoyage.
après avoir réinstallé le cœur
Remplacer le cœur ne désinfecte que le cœur. Une infection vit souvent ailleurs. Trois suites indispensables.
repartir des sources officielles pour le thème et les extensions
Le code malveillant se cache fréquemment dans un thème ou une extension. Réinstallez chaque extension et votre thème depuis le dépôt officiel WordPress ou le site de l’éditeur, à la même version, plutôt que de garder les fichiers présents sur le serveur. Désinstallez tout ce que vous n’utilisez pas. Méfiez-vous des extensions et thèmes nulled (versions piratées de produits payants) : c’est une porte d’entrée classique.
régénérer les clés de sécurité (salts)
Les salts de wp-config.php signent les cookies de connexion. Si un attaquant les a récupérés, il peut rester connecté même après un changement de mot de passe. Régénérez-les. Générez un nouveau bloc sur api.wordpress.org/secret-key/1.1/salt/, puis remplacez les huit lignes correspondantes dans wp-config.php (de AUTH_KEY à NONCE_SALT). Avec wp-cli, une commande suffit :
wp config shuffle-salts
Toutes les sessions actives sont invalidées d’un coup. Profitez-en pour changer les mots de passe des comptes admin.
vérifier le site
Rechargez le site et l’administration. Contrôlez que le front s’affiche normalement, que vous vous connectez, qu’aucun avertissement PHP n’apparaît. Relancez wp core verify-checksums si vous avez wp-cli. Faites une recherche Google site:votredomaine.com pour repérer d’éventuelles pages spam encore indexées.
ce que la réinstallation du cœur ne fait pas
Réinstaller le cœur remplace des fichiers. Ça ne restaure pas du contenu. Si le pirate a supprimé ou modifié vos articles, vos pages ou vos réglages stockés en base de données, aucune réinstallation du cœur ne les ramènera : ces données ne vivent pas dans les fichiers du cœur mais dans la base. La récupération de contenu est un sujet à part, traité dans restaurer votre contenu après le piratage.
Voyez la réinstallation du cœur comme une étape du nettoyage, pas comme le nettoyage entier. Pour situer cette étape dans la marche complète, gardez sous la main le guide complet quand WordPress est piraté.
faq
Réinstaller le cœur efface-t-il mes articles et mes images ?
Non, à condition de ne toucher ni à wp-content (vos médias, thèmes, extensions) ni à la base de données. Vos articles et pages sont en base, vos images dans wp-content/uploads. La réinstallation ne concerne que wp-admin, wp-includes et les fichiers PHP de la racine.
Dois-je réinstaller la dernière version ou la même version ? La même version que celle déjà installée. Réinstaller une version identique ne déclenche aucune migration de base. Mettre à jour vers une version plus récente est une opération distincte, à faire ensuite, depuis l’administration une fois le site sain.
Une réinstallation du cœur suffit-elle à nettoyer un site piraté ?
Rarement. Elle assainit le cœur, mais l’infection se trouve souvent dans une extension, un thème, le dossier uploads ou en base. Il faut compléter par le contrôle de wp-content, la chasse aux backdoors et la régénération des accès.
Vous voulez la certitude que tout est propre, pas juste le cœur ? WP-Detox fait un scan gratuit de votre site, puis un nettoyage complet en une trentaine de minutes : cœur, extensions, thème, base et backdoors. 149 € tout compris, avec une sauvegarde prise avant toute intervention et un remboursement si on échoue à désinfecter le site.