Article SEO SEO Technique

Comment nettoyer un site WordPress piraté (guide complet 2024–2025)

Introduction

Nettoyer un site WordPress piraté peut sembler une tâche intimidante, surtout si vous n’êtes pas administrateur système ou expert en sécurité. Pourtant, avec une approche méthodique, des sauvegardes bien gérées et quelques bons réflexes, il est possible de restaurer la sécurité et l’intégrité de votre site sans tout perdre.

Ce guide détaillé explique étape par étape comment :

  • diagnostiquer un piratage WordPress,
  • isoler et sauvegarder votre site avant toute action,
  • nettoyer les fichiers et la base de données,
  • réinstaller proprement WordPress, thèmes et extensions,
  • supprimer les portes dérobées (backdoors),
  • sécuriser durablement le site pour éviter une nouvelle attaque,
  • réparer l’impact sur votre référencement et rassurer vos utilisateurs.

En suivant ce tutoriel complet, vous disposerez d’une procédure structurée en plusieurs grandes étapes, comparable à ce que mettrait en œuvre un spécialiste en 3 à 4 heures de travail intensif sur un site de taille moyenne.

Concepts clés à comprendre avant de commencer

Avant de passer à l’action, il est essentiel de bien comprendre quelques notions de base. Cela vous aidera à prendre de meilleures décisions et à ne pas aggraver la situation par erreur.

  • Infection par un malware : les pirates injectent du code malveillant dans vos fichiers PHP, JavaScript, dans votre base de données (articles, options, widgets), voire dans des fichiers système comme .htaccess. Ce code peut servir à envoyer du spam, rediriger vos visiteurs, miner des cryptomonnaies ou voler des données.
  • Backdoor : une backdoor (porte dérobée) est un morceau de code qui permet au pirate de revenir même après un nettoyage partiel. C’est souvent un fichier PHP discrètement déposé dans wp-content, uploads ou un sous-répertoire oublié, mais cela peut aussi être une tâche cron ou une option cachée dans la base de données.
  • Sauvegarde (backup) : une sauvegarde propre (fichiers + base de données) réalisée avant l’attaque ou avant une nouvelle vague d’infection est essentielle. Elle permet de restaurer un état sain du site ou d’analyser comment et quand le piratage a commencé.
  • Sécurité des identifiants : les comptes administrateurs WordPress, l’accès FTP/SFTP, la base MySQL, le compte d’hébergement (cPanel, Plesk, etc.) et les e-mails associés doivent être protégés par des mots de passe forts et, si possible, une double authentification.
  • Logs et diagnostic : les journaux du serveur (logs HTTP, logs d’erreurs PHP, logs de sécurité) aident à identifier le vecteur d’attaque (extension vulnérable, thème obsolète, formulaire non protégé, mot de passe compromis, etc.). Cette étape est cruciale pour éviter une rechute.

Étape 1 : Identifier les signes d’un site WordPress piraté

Avant de lancer un nettoyage, vérifiez que vous êtes bien face à un piratage et, si oui, de quel type. Quelques signes fréquents :

  • Redirections vers des sites douteux (casino, phishing, contenus pour adultes) depuis certaines pages ou seulement pour les visiteurs mobiles.
  • Apparition de pages inconnues dans les résultats Google avec des titres étranges (pharmacie, contenus adultes, spam SEO).
  • Modifications non autorisées du contenu : articles ajoutés sans raison, liens sortants vers des sites suspects, formulaires modifiés.
  • Baisse soudaine et inexpliquée du trafic organique ou avertissements dans Google Search Console (« site piraté » ou « contient des logiciels malveillants »).
  • Alertes de votre hébergeur signalant un envoi massif d’e-mails, une surcharge du serveur ou la présence de fichiers malveillants.
  • Impossibilité de se connecter à l’administration, mot de passe rejeté malgré une tentative de réinitialisation, ou nouveaux comptes administrateurs inconnus.

Étape 2 : Sauvegarder et isoler le site avant toute intervention

Avant toute modification, même si le site est déjà infecté, créez une sauvegarde complète. Cette sauvegarde, même « sale », servira :

  • de filet de sécurité en cas d’erreur de manipulation,
  • de base d’analyse pour comprendre l’attaque.

Actions à réaliser :

  • Exporter la base de données via phpMyAdmin, Adminer ou l’outil fourni par l’hébergeur.
  • Télécharger tous les fichiers du site (y compris les répertoires supérieurs à WordPress si accessibles) via FTP/SFTP ou le gestionnaire de fichiers.
  • Noter la configuration actuelle : version de PHP, version de WordPress, liste d’extensions et de thèmes, paramètres clés du site.

Parallèlement, isolez le site pour protéger les visiteurs :

  • Activez un mode maintenance au niveau du serveur ou via un fichier .htaccess qui limite l’accès par adresse IP ou affiche une page temporaire sobre.
  • Si votre hébergeur le propose, utilisez une fonctionnalité de « quarantaine » ou de blocage temporaire.

Étape 3 : Sécuriser immédiatement les accès

Cette étape est prioritaire pour reprendre le contrôle :

  • Changer tous les mots de passe :
    • comptes administrateurs et éditeurs WordPress,
    • accès FTP/SFTP et SSH,
    • accès au panneau d’hébergement (cPanel, Plesk, interface propriétaire),
    • mot de passe de la base de données (puis mise à jour dans wp-config.php),
    • comptes e-mail liés au site.
  • Activer l’authentification à deux facteurs (2FA) au minimum pour les comptes administrateurs WordPress et, si possible, pour l’accès à l’hébergement.
  • Vérifier les comptes utilisateurs :
    • supprimer tout compte administrateur inconnu,
    • rétrograder les comptes qui n’ont pas besoin de droits élevés,
    • forcer une réinitialisation de mot de passe pour les autres admins si nécessaire.
  • Régénérer les clés de sécurité WordPress (salts) en remplaçant les constantes AUTH_KEY, SECURE_AUTH_KEY, etc. dans wp-config.php. Cela déconnecte toutes les sessions et oblige tout le monde à se reconnecter.

Étape 4 : Diagnostic initial et analyse des logs

Beaucoup de tutoriels négligent cette phase, pourtant elle est déterminante pour éviter une seconde infection.

Consultez :

  • Les logs d’accès HTTP afin d’identifier des requêtes suspectes, des scripts appelés fréquemment ou des IP exécutant des actions anormales.
  • Les logs d’erreurs PHP pour repérer des fichiers inconnus qui déclenchent des erreurs ou des scripts qui tentent d’utiliser des fonctions dangereuses.
  • Les logs de sécurité de l’hébergeur, si disponibles, pour voir si certaines IP ou actions ont été bloquées.

Objectifs :

  • identifier les fichiers ou répertoires ciblés,
  • repérer un plugin ou un thème souvent mentionné au moment de l’attaque,
  • comprendre si l’attaque vient d’une faiblesse applicative (extension, thème) ou d’un vol d’identifiants.

Étape 5 : Nettoyer ou réinstaller les fichiers du cœur de WordPress

La méthode la plus sûre pour éliminer un grand nombre d’infections est de repartir d’une copie saine du core WordPress. La bonne pratique consiste à :

  • télécharger la version officielle de WordPress correspondant à votre branche (ou la dernière version stable si vous pouvez mettre à jour),
  • décompresser l’archive en local,
  • sur votre hébergement :
    • supprimer les dossiers wp-admin et wp-includes,
    • supprimer tous les fichiers de la racine WordPress sauf wp-config.php, .htaccess (à auditer) et d’éventuels fichiers de vérification moteurs de recherche,
    • transférer les nouveaux fichiers et dossiers propres sur le serveur.

Ensuite :

  • Inspectez le fichier wp-config.php à la recherche de lignes inconnues (inclusions de fichiers bizarres, fonctions encodées ou longues chaînes illisibles).
  • Contrôlez le fichier .htaccess :
    • supprimez les redirections douteuses,
    • gardez seulement les règles nécessaires (permalinks, règles de sécurité légitimes).

Étape 6 : Réinstaller proprement thèmes et extensions

Il est fortement déconseillé d’essayer de « nettoyer à la main » un plugin ou un thème compromis si vous pouvez le remplacer par une version officielle et à jour.

Procédure recommandée :

  • Dans wp-content, supprimez entièrement le dossier plugins (après l’avoir sauvegardé) puis recréez-le vide.
  • Réinstallez chaque extension :
    • depuis le dépôt officiel WordPress pour les plugins gratuits,
    • depuis l’espace client du développeur ou du marketplace pour les versions premium,
    • en vérifiant bien que chaque plugin est activement maintenu.
  • Pour les thèmes :
    • conservez uniquement votre thème enfant si vous en avez un,
    • supprimez les thèmes inutilisés,
    • réinstallez votre thème parent à partir des fichiers d’origine,
    • conservez au moins un thème standard récent (Twenty Twenty-Three, Twenty Twenty-Four, etc.) pour les tests.

Pendant cette étape, soyez particulièrement attentif aux thèmes ou plugins :

  • non mis à jour depuis plusieurs années,
  • provenant de sources douteuses (copies « nulled » ou téléchargées hors canaux officiels),
  • dont vous n’avez plus l’utilité : mieux vaut les supprimer.

Étape 7 : Scanner et nettoyer le répertoire wp-content et les uploads

Le dossier wp-content, et en particulier wp-content/uploads, est une cible fréquente des pirates pour y placer des scripts discrets.

Actions recommandées :

  • Lancer un scan avec un plugin de sécurité comme Wordfence Security ou un autre outil sérieux capable de comparer les fichiers du core et de signaler les signatures malveillantes.
  • Supprimer les fichiers PHP suspects dans uploads et les sous-dossiers. En règle générale, ce répertoire ne devrait contenir que des médias (images, PDF, vidéos, etc.).
  • Examiner manuellement les fichiers récemment modifiés :
    • triez par date dans votre client FTP,
    • inspectez les fichiers ajoutés ou modifiés à la période de l’infection.

Pour renforcer durablement la sécurité, mettez en place une désactivation de l’exécution PHP dans uploads (par exemple via un .htaccess dédié qui bloque l’exécution des fichiers .php dans ce dossier).

Étape 8 : Nettoyer la base de données WordPress

Un site peut rester infecté même si les fichiers ont été remplacés, car du code malveillant peut résider dans la base de données.

Vérifiez notamment :

  • Les articles, pages et custom post types pour détecter des scripts