Sur le forum WPFR, l’équipe de modération est souvent interpellée pour des problèmes liés au piratage de site. Parfois, cela commence tout simplement par un site qui ne « répond » plus, ou une connexion impossible. WordPress lui-même n’est pas en cause, souvent il s’agit d’une maintenance insuffisante de votre part … ou d’un pirate qui a pris la main sur le site ! 😱
C’est inquiétant, mais pas irréparable. Nous verrons d’abord les signes qui doivent vous alerter, puis comment nettoyer et réparer le site … et si possible, éviter que cela se reproduise.
Les signes d’alerte
Voici les signes qui doivent vous alerter :
- Votre mot de passe n’est pas reconnu et vous n’avez plus accès à l’administration de votre site
Vérifiez tout de même que ce n’est pas une simple erreur ou oubli de votre mot de passe, que vous pouvez résoudre par une récupération via votre adresse mail ou éventuellement par une modification dans la base de données. (tuto sur WPChannel) - Une image ou du contenu que vous n’avez pas inséré vous-même apparaît sur le site
Si vous n’êtes pas seul·e à administrer ou éditer le site, vérifiez si une autre personne identifiée n’a pas rajouté ce contenu. - Votre site envoie des messages de spam à tous vos abonné·es
- Votre site comporte des liens non voulus ou renvoie directement vos visiteurs vers un site commercial ou porno
Si votre site n’est pas sécurisé en HTTPS (votre adresse URL commence par http:// ), les risques de piratage sont plus élevés.
De même si votre version de WordPress n’est pas à jour, ou votre thème, ou vos extensions.
Comment réparer ?
1 – Accéder à l’administration du site
Essayez de récupérer l’accès à l’administration du site :
- En passant par FTP (Filezilla ou équivalent), ou dans le gestionnaire de fichiers de votre hébergeur, désactivez vos extensions en renommant le dossier wp-content/plugins (ajoutez un -X à la fin, par exemple)
- Renommez de la même façon votre thème qui se trouve dans wp-content/themes (il ne faut renommer que votre thème, pas le dossier complet)
Si ces 2 opérations vous redonnent l’accès au site, une extension ou le thème était peut-être en cause. Renommez correctement les dossiers, puis réactivez les extensions une par une à partir de l’administration de votre site, en testant régulièrement. Si le problème réapparaît, vous avez trouvé l’extension coupable. Vérifiez si il existe une mise à jour, si ce n’est pas le cas, cherchez une autre extension qui propose les même fonctionnalités. Procédez de même pour le thème.
Si vous n’avez toujours pas récupéré l’accès à l’administration du site, passez à l’étape suivante
2 – Vérifier les utilisateurs enregistrés
Il s’agit à cette étape de vérifier si vos droits pour administrer le site ne sont pas corrompus ou usurpés.
Avant toute intervention, sauvegardez votre base de données : connectez-vous à votre espace de gestion chez votre hébergeur, accédez à la base de données par PhpMyAdmin, et procédez à une sauvegarde (tuto dont les images sont anciennes, mais déroulement à suivre)
À présent, allez dans la table wp_users de la base de données (le préfixe wp_ peut-être différent chez vous), vérifiez que votre pseudo est bien présent, et vérifiez qu’il n’y a pas d’utilisateur mystérieux. Allez ensuite dans la table wp_usermeta et vérifiez si votre pseudo est bien en “administrator” (colonne meta_value) au bout de la ligne qui contient les “capabilities” (colonne meta_key).
Si dans la base de données, vous êtes toujours reconnu comme admin, modifiez simplement votre mot de passe comme indiqué dans le tuto de WPChannel cité en début d’article. Supprimez tout administrateur inconnu.
Si vous n’êtes pas en mode admin, il faut absolument recréer un profil administrateur directement dans PhpMyAdmin (tuto), vous pourrez alors vous connecter et supprimer les utilisateurs indésirables.
Tant que vous êtes là, procédez au nettoyage de la base de données (vidéo d’Alex, WP Marmite).
3 – Modifier vos mots de passe
Changez maintenant vos mots de passe de connexion chez votre hébergeur : mot de passe pour vous connecter au panneau de gestion chez l’hébergeur, et mot de passe de connexion à la base de données (chez certains hébergeurs, c’est le même que pour le panneau de gestion). Attention, notez bien le mot de passe pour l’accès à la base de données, car il faudra le modifier dans le fichier wp-config.php situé à la racine de l’installation, accessible par FTP (Filezilla ou équivalent) ou dans le gestionnaire de fichier de votre hébergeur.
Attention, c’est différent du mot de passe de connexion au site, qu’il faut modifier aussi si vous conservez votre ancien profil, comme vu à l’étape précédente.
4 – Augmenter la version PHP
Actuellement (décembre 2020), PHP est déjà accessible en version 8. Toutefois, les thèmes et extensions ne sont pas encore tous compatibles. Mais il est fortement conseillé de passer en PHP 7.3 ou PHP 7.4 si votre installation tourne avec une version inférieure.
Accédez au panneau de gestion ou espace client chez votre hébergeur, et parcourez les options pour modifier la version PHP. Cela peut différer d’un hébergeur à l’autre (pour OVH, suivez cette doc).
5 – Sauvegarder et nettoyer le site
Par FTP (Filezilla) ou dans le gestionnaire de fichiers chez votre hébergeur, faites une sauvegarde du dossier wp-content/uploads (vous en aurez besoin pour la ré-installation). Sauvegardez aussi le fichier wp-config.php et le fichier .htaccess
De même, faites une sauvegarde de votre ou vos thèmes personnalisés dans wp-content/themes. Supprimez tous les thèmes par défaut Twenty-XX, que vous pourrez ré-télécharger plus tard. Si votre thème provenait du répertoire officiel de wp.org et que vous n’avez pas modifié les fichiers des thèmes, supprimez-le. Attention, si c’est un thème payant, vérifiez si vous avez accès à une version saine. Ne téléchargez jamais « gratuitement » un thème payant, il contient probablement du code infecté.
Notez la liste de toutes vos extensions présentes dans wp-content/plugins : supprimez toutes celles qui viennent de wordpress.org. Pour les extensions payantes, vérifiez si vous avez accès à une version saine (neuve, à jour), et supprimez-les du dossier wp-content/plugins.
Nettoyez les fichiers sauvegardés (wp-config.php et vos fichiers de thème) : pour cela, il faut les ouvrir avec NotePad++ ou SublimeText et supprimer la 1ère ligne composée d’une longue suite de chiffres et signes bizarres si c’est le cas, ou supprimez les espaces qui se trouveraient avant la balise d’ouverture <?php
Vérifiez que le dossier wp-content/uploads ne contient aucun fichier .php, à l’exception de index.php quasi vide. Si vous trouvez un autre fichier en .php, supprimez le fichier suspect.
6 – Remettre le site en place
À présent, il faut remettre en place le site avec des fichiers sains.
- Téléchargez sur votre ordi une version neuve de WP et dézippez-la. (Si vous n’aviez pas la toute dernière version de WP, voir ci-dessous)
- Par FTP (Filezilla), supprimez toute votre installation et renvoyez l’installation neuve.
A ce stade, ne touchez pas encore à votre site ! - Renvoyez par FTP votre fichier wp-config.php que vous aviez sauvegardé puis nettoyé, ainsi que vos fichiers du thème nettoyés à placer dans wp-content/themes
Attention, ne renvoyez pas de fichier sans les avoir vérifiés et nettoyés du code malicieux - Renvoyez votre dossier wp-content/uploads qui ne doit contenir que les dossiers par année/mois, et un fichier index.php (vérifiez qu’il ne soit pas infecté par le code malicieux). Ce dossier ne doit contenir aucun autre fichier .php
- Téléchargez sur votre ordi toutes vos extensions à partir de wordpress.org et dézippez-les (pour les payantes, adressez-vous à leur support). Envoyez les dossiers des extensions par FTP dans wp-content/plugins
7 – Sécuriser le site
Il reste quelques manipulations pour finir de sécuriser le site :
- Retournez sur votre admin’ de site et vérifiez qu’aucun utilisateur fantôme (sans adresse mail) ne soit inscrit, et surtout pas avec le statut administrateur (sinon, retour à l’étape de vérification des utilisateurs dans le base de données)
- Passez votre site en HTTPS avec l’extension Really Simple SSL comme expliqué ici
- Ré-enregistrez vos permaliens (Réglages > Permaliens : il suffit de cliquer sur Sauvegarder) pour générer un nouveau fichier .htaccess
(vous pourrez le comparer à celui sauvegardé en début de procédure, et rajouter les lignes supplémentaires qui vous paraissent nécessaires si besoin) - Par FTP (Filezilla), téléchargez sur votre ordi le fichier .htaccess situé à la racine du site, là où se trouvent les 3 dossiers wp-admin / wp-content / wp-includes. Ouvrez-le avec avec NotePad++ ou équivalent, pour ajouter les lignes suivantes à la fin du fichier :
- Renvoyez ensuite ce fichier .htaccess modifié par FTP à la racine du site, comme ci-dessus. Si Filezilla demande si il faut remplacer l’ancien fichier, acceptez.
L’ajout de ce code empêchera de lister le contenu des dossiers aux yeux des curieux. (inutile de faire savoir aux hackers toutes les extensions que vous utilisez, par exemple)
Encore quelques conseils
Si besoin, quelques conseils à suivre pour finir de nettoyer et sécuriser votre site :
– https://www.iceranking.com/wordpress-seo/guide-complet-pour-nettoyer-et-securiser-wordpress-apres-un-hacking/ (tuto ancien mais toujours d’actualité)
– https://wpformation.com/wordpress-pirate-hack/
– https://www.seomix.fr/securiser-wordpress-piratage/
Vous trouverez dans ces articles un certain nombre de conseils déjà appliqués en suivant ce guide, mais n’hésitez pas à suivre les conseils supplémentaires.
Et rappelez-vous qu’il faut maintenir à jour votre version de WordPress, votre ou vos thèmes, et toutes vos extensions. Des fonctionnalités récentes de WP 5.5.x et plus permettent d’automatiser ces mises à jour.
Ne téléchargez jamais une extension provenant d’un site prétendant vous fournir gratuitement une extension habituellement payante.
Nous voici à la fin de ce guide de nettoyage. Bon courage : il y a du travail, mais c’est le “prix à payer” pour être débarrassé du ou des pirates et retrouver un site fonctionnel.