Site WordPress piraté : que faire, dans quel ordre

Les signes d'un piratage, les accès à couper, où chercher les portes dérobées, comment nettoyer Google et éviter la réinfection.

Un matin, Google affiche des titres en japonais sous le nom de votre site. Ou un client vous appelle : en cliquant depuis son téléphone, il atterrit sur un casino en ligne. Ou c'est Search Console qui vous écrit : « Problèmes de sécurité détectés ». Un WordPress piraté, ça arrive à des sites de toutes tailles, souvent par une extension pas mise à jour. Un des sites de notre propre portefeuille l'a été cette année. Voici la marche à suivre, dans l'ordre.

Les signes qui doivent alerter

  • Des pages inconnues dans Google (tapez site:votresite.fr) : titres en japonais, pharmacie, casino, contrefaçon.
  • Une redirection vers un autre site, souvent seulement sur mobile ou seulement pour les visiteurs qui viennent de Google. Vous, en tapant l'adresse directement, ne voyez rien.
  • Un avertissement rouge dans le navigateur (« Site trompeur », « Ce site contient des logiciels malveillants »).
  • Un administrateur WordPress que vous n'avez pas créé, une extension inconnue, des fichiers PHP dans le dossier wp-content/uploads.
  • Un message dans le rapport « Problèmes de sécurité » de Search Console.

1. Ne pas paniquer, et tout noter

Notez ce que vous voyez, quand, et ce qui a changé récemment sur le site (extension installée, mise à jour, nouvel accès donné à un prestataire). Faites une sauvegarde complète du site dans son état piraté : fichiers et base de données. Ça paraît contre-intuitif, mais c'est votre référence si le nettoyage casse quelque chose, et c'est ce qui permettra de comprendre par où l'attaque est passée.

2. Couper les accès

Changez tous les mots de passe : administrateurs WordPress, cPanel, FTP/SFTP, base de données, et la boîte mail liée au compte administrateur. Supprimez les comptes administrateurs que vous ne connaissez pas. La documentation officielle de WordPress (« My site was hacked ») recommande aussi de régénérer les clés de sécurité de wp-config.php, ce qui déconnecte toutes les sessions ouvertes, y compris celle de l'intrus. Activez la double authentification sur les comptes administrateurs.

Pensez aussi à votre ordinateur : un mot de passe volé par un logiciel espion sur le poste qui se connecte au site, et tout recommence.

3. Trouver tout ce qui a été ajouté ou modifié

C'est l'étape la plus longue, et celle qu'on bâcle le plus. Un pirate laisse presque toujours plusieurs portes dérobées : si vous n'en supprimez qu'une, il revient dans la semaine. Les endroits à fouiller :

  • Le cœur de WordPress : les dossiers wp-admin et wp-includes ne doivent contenir que les fichiers officiels. WordPress publie l'empreinte de chaque fichier de chaque version : un fichier modifié ou en trop se repère à coup sûr.
  • Les extensions et thèmes : même principe pour les extensions de wordpress.org. Pour les extensions payantes et le thème, il faut lire le code suspect.
  • Le dossier uploads : il ne devrait contenir que des images et des documents. Un fichier .php, ou un faux image.php.jpg, est presque toujours malveillant (sauf quelques fichiers de cache d'extensions connues).
  • Les fichiers .htaccess : les redirections « seulement pour les visiteurs venant de Google » s'y cachent souvent.
  • La base de données : scripts injectés dans les articles ou les widgets, adresse du site modifiée, comptes administrateurs.

Le plus sûr pour le cœur est de le remplacer entièrement par une copie neuve de la même version, en envoyant les dossiers wp-admin et wp-includes par FTP, comme le conseille WordPress. Supprimez les extensions que vous n'utilisez plus : une extension désactivée reste attaquable.

4. Mettre à jour et fermer la porte

Mettez à jour WordPress, toutes les extensions et le thème. Puis bloquez l'exécution de scripts dans le dossier uploads avec un fichier .htaccess adapté : c'est la protection la plus efficace contre le scénario classique (une faille permet d'envoyer un fichier PHP, qui sert ensuite de porte d'entrée). Changez encore une fois les mots de passe, maintenant que le site est propre.

5. Nettoyer Google

Si Search Console signale un problème, ouvrez le rapport « Problèmes de sécurité », corrigez toutes les pages listées (pas seulement quelques-unes), puis cliquez « Demander un examen » en expliquant précisément le problème et ce que vous avez fait. Google indique qu'un examen prend de quelques jours à quelques semaines. N'envoyez pas une nouvelle demande tant que la première est en cours.

Pour les pages de spam ajoutées par le pirate, faites-les renvoyer une erreur 404 ou 410 et laissez Google les retirer. Pour accélérer sur les plus visibles, l'outil de suppression temporaire de Search Console peut les masquer en attendant.

6. Surveiller ensuite

Le vrai risque est la réinfection. Après un piratage, surveillez pendant plusieurs semaines : nouveaux fichiers PHP, nouveaux administrateurs, redirections, pages inconnues dans Google. Nous avons fini par construire notre propre outil de surveillance pour les sites que nous gérons, parce que les contrôles manuels finissent toujours par être oubliés.

Prévenir plutôt que guérir

  • Mises à jour automatiques des extensions, et le moins d'extensions possible.
  • Des sauvegardes régulières, stockées ailleurs que sur le serveur.
  • Un compte administrateur par personne, avec double authentification.
  • Pas de PHP exécutable dans uploads.
  • Pour un site éditorial qui ne change pas tous les jours : se demander s'il a encore besoin de WordPress. Un site statique n'a ni base de données ni extension à pirater. C'est ce que nous avons fait pour plusieurs sites, dont galaxy-seo.com (voir création et refonte de sites).

Votre site montre un de ces signes ? Écrivez-nous : un diagnostic rapide permet de savoir s'il s'agit d'un piratage et par où il est passé.

Nicolas Framery est consultant SEO et GEO à Aix-en-Provence, fondateur de Galaxy SEO et d'Etalo. Son parcours.

Un site à faire progresser, sur Google ou dans les IA ?

Un premier échange de 30 minutes suffit pour cadrer le besoin. Sans engagement.