Accueil · Guides de dépannage · Site piraté

Site WordPress piraté : nettoyer sans se faire réinfecter

Fenêtre de navigateur affichant un avertissement, le site que vous consultez est trompeur

Votre site redirige vers une boutique inconnue, le navigateur affiche un avertissement rouge, ou Google vous a envoyé un message. Le réflexe est de nettoyer au plus vite pour que ça s'arrête.

C'est exactement là que la plupart des gens perdent leur site une deuxième fois. Google écrit sur son propre forum d'assistance que 20 % des sites piratés le sont à nouveau dans les vingt-quatre heures. Pas parce que le nettoyage a été bâclé, mais parce que nettoyer ne ferme pas la porte par laquelle on est entré.

Ce guide donne la procédure dans l'ordre qui évite ça, et il vous montre deux endroits que personne ne vous dira de regarder.

D'abord, ne faites pas ces trois choses

Ne restaurez pas une sauvegarde tout de suite. Si la porte d'entrée était déjà ouverte à la date de la sauvegarde, vous restaurez le problème avec le site. Et vous effacez au passage les traces qui auraient dit par où c'est arrivé.

Ne supprimez pas les fichiers suspects avant de les avoir listés. Leur date de modification, leur nom et leur emplacement sont votre seule enquête. Une fois effacés, vous nettoyez à l'aveugle et vous ne saurez jamais si vous avez tout eu.

Ne demandez pas de réexamen à Google avant d'avoir fini. Un réexamen refusé vous fait repartir en bout de file, et rien n'oblige Google à vous répondre vite la seconde fois.

En trente secondes

1. Notez comment vous l'avez appris. Par un visiteur, par Google, par votre hébergeur, ou en le voyant vous-même. Chacun de ces canaux voit une chose différente, et ce que vous ne voyez pas compte autant que ce que vous voyez.

2. Regardez votre site depuis un autre appareil et un autre système. Le masquage est la règle, pas l'exception. Un cas documenté montre une page piégée visible uniquement sous Windows : sur Mac, sur Linux et sur téléphone, le site paraissait sain. Le propriétaire ne voyait jamais le problème depuis son propre poste.

3. Tapez site:votre-domaine.fr dans Google. Si des pages que vous n'avez jamais écrites apparaissent, souvent dans une langue étrangère, l'infection est indexée. Ces pages renvoient parfois une erreur quand on les visite directement, et n'existent que pour Google.

À quoi ça ressemble, selon ce que vous voyez

Un piratage ne se présente pas de la même façon selon ce que l'attaquant cherchait. Reconnaître la forme oriente la suite, parce que chacune dit quelque chose sur la manière dont on est entré et sur ce qu'il faut aller regarder en premier.

Votre page d'accueil a été remplacée. Un message, une signature, parfois une revendication. C'est la seule forme où l'attaquant veut être vu, et c'est paradoxalement la plus simple à traiter : il n'a pas cherché à se cacher, donc les fichiers modifiés sont récents et faciles à repérer par leur date. Attention toutefois, une page d'accueil défigurée ne veut pas dire que le reste est intact.

Le navigateur affiche « Le site que vous consultez est trompeur ». Ce message ne vient pas de WordPress ni de votre hébergeur, il vient de la liste de navigation sécurisée de Google. Chrome, Firefox et Safari s'appuient tous les trois dessus, ce qui explique que l'alerte apparaisse partout en même temps. Conséquence importante pour la suite : nettoyer le site ne fait pas disparaître l'alerte, il faut ensuite demander un réexamen, et c'est l'objet de deux sections plus bas.

Le site renvoie ailleurs. Vers une boutique, un site de paris, une page dans une autre langue. La redirection est presque toujours conditionnelle : seulement depuis les résultats de Google, seulement au téléphone, seulement pour un visiteur qui n'est pas connecté à l'administration. C'est exactement pour ça que le propriétaire, lui, ne voit rien. Le deuxième geste des trente secondes, regarder depuis un autre appareil, sert d'abord à ça.

Des pages ou des liens que vous n'avez pas écrits sont apparus. Souvent des blocs de liens vers des produits, parfois dans une langue que vous ne parlez pas, glissés en bas des articles ou dans des pages entières. Cette forme est faite pour les moteurs, pas pour vos visiteurs, donc elle reste longtemps invisible depuis le site. Le test site:votre-domaine.fr la révèle.

Votre hébergeur a coupé le site. Vous n'avez rien vu venir, la panne est totale, et le message parle d'activité anormale ou d'envoi de courrier. Le site sert alors à autre chose qu'à lui-même, à envoyer du spam ou à attaquer d'autres serveurs.

Ces formes se cumulent plus souvent qu'elles ne s'excluent. En trouver une ne dispense jamais de chercher les autres.

Les deux endroits que personne ne regarde

Nous avons vérifié vingt pages du top 10 de neuf pays et douze vidéos en quatre langues. Aucune ne cite ces deux emplacements. Ils sont pourtant les premiers à regarder, et ça prend trente secondes.

Le dossier des extensions indispensables

Ouvrez votre tableau de bord, allez dans Extensions, et regardez la ligne de filtres tout en haut. À côté de « Toutes », vous verrez peut-être un onglet « Indispensable » avec un chiffre.

L'onglet Indispensable de la page des extensions, listant un fichier sans aucune case à cocher ni action possible
L'onglet Indispensable de la page des extensions, listant un fichier sans aucune case à cocher ni action possible

C'est le contenu du dossier wp-content/mu-plugins. Un fichier déposé là s'exécute à chaque chargement de page, avant toutes les autres extensions, et il n'a pas besoin d'être activé.

Voilà pourquoi c'est une cachette de choix, et nous l'avons mesuré : dans cet onglet, il n'y a aucune case à cocher, aucun lien d'action, aucun menu d'actions groupées. Rien.

L'onglet Toutes de la même page, où chaque extension a sa case à cocher et ses actions
L'onglet Toutes de la même page, où chaque extension a sa case à cocher et ses actions

Comparez avec l'onglet ordinaire ci-dessus : des cases, des liens, un menu. Le conseil universel « désactivez toutes vos extensions » ne peut donc pas atteindre ce dossier. Ce n'est pas que WordPress le cache, il l'affiche même. C'est que l'interface ne vous donne aucune prise dessus. Et renommer le dossier plugins, l'autre geste réflexe, ne le touche pas non plus : ce sont deux dossiers différents.

Si vous voyez un onglet « Indispensable » et que vous n'avez jamais rien installé de tel, ouvrez le dossier par FTP et regardez ce qu'il contient.

Le troisième onglet, celui des fichiers avancés

Toujours sur la même ligne de filtres, un onglet « Avancée » apparaît parfois.

L'onglet Avancée listant un fichier db.php, lui aussi sans case à cocher ni action
L'onglet Avancée listant un fichier db.php, lui aussi sans case à cocher ni action

Il liste les fichiers déposés directement dans wp-content que WordPress charge très tôt : db.php, advanced-cache.php, object-cache.php. Là encore, aucune action possible depuis l'interface.

Le fichier db.php mérite une attention particulière. Il se place entre WordPress et votre base de données, ce qui veut dire qu'il voit passer absolument tout. Sur les trente-cinq fils de forums lus et les vingt pages du top 10, il n'est mentionné nulle part. C'est l'angle mort le plus complet du sujet.

Trouver la porte d'entrée avant de nettoyer

C'est l'étape que 19 pages sur 20 sautent. Elles diagnostiquent ce qui est infecté, jamais comment on est entré. La conséquence est dans les fils de forums : un cas de neuf sites sur douze réinfectés des mois après un nettoyage payant, un autre de six réinfections en trois mois.

Regardez les dates

Par FTP ou par le gestionnaire de fichiers, triez les fichiers par date de modification, du plus récent au plus ancien. Vous cherchez une grappe de fichiers modifiés le même jour, à la même heure, alors que vous n'avez rien publié ce jour-là. Cette date est votre point de départ.

Regardez qui s'est connecté

Dans Utilisateurs, cherchez un compte administrateur que vous ne reconnaissez pas. Attention : cette liste peut mentir, plusieurs fils documentent des comptes masqués de l'affichage tout en restant actifs. Si vous avez accès à la base, la table wp_users dit la vérité, la page d'administration dit ce qu'on lui laisse dire.

Regardez ce qui n'était pas à jour

Une extension abandonnée par son auteur, un thème inutilisé jamais mis à jour, une extension de gestion de fichiers laissée installée. C'est ce qui revient le plus souvent dans les fils quand la cause finit par être identifiée.

Un cas relevé mérite d'être connu : une faille avait bien été corrigée par une mise à jour, mais le fichier déposé par l'attaquant était resté sur le serveur. Mettre à jour ferme la porte, ça n'expulse pas celui qui est déjà entré.

Regardez ailleurs que sur l'hébergement

Un cas documenté ne se réglait pas parce que la porte dérobée n'était pas sur le serveur du tout : elle était dans le compte du service qui sert le site aux visiteurs, en amont. Tous les outils de sécurité, qui n'examinent que le serveur d'origine, ne voyaient rien.

Si votre site passe par un service intermédiaire, vérifiez ses jetons d'accès, ses règles et ses sessions. Même chose pour le compte du bureau d'enregistrement de votre nom de domaine : un détournement à ce niveau n'a rien à voir avec WordPress et aucun nettoyage de fichiers n'y changera quoi que ce soit.

Le nettoyage

Dans cet ordre, et pas avant d'avoir fait ce qui précède.

Coupez l'accès. Changez les mots de passe : administrateurs WordPress, FTP et SFTP, base de données, et surtout le compte de l'hébergement lui-même. Déconnectez toutes les sessions actives. Si vous ne changez que le mot de passe WordPress, vous laissez ouvertes les trois autres portes.

Remplacez le cœur. Téléchargez WordPress depuis fr.wordpress.org et écrasez wp-admin et wp-includes. Ne touchez ni à wp-content ni à wp-config.php, vous perdriez tout votre contenu et votre configuration.

Réinstallez les extensions et le thème depuis leur source officielle, plutôt que de nettoyer les fichiers un par un. Une extension modifiée par un attaquant est plus vite remplacée que réparée. Supprimez celles que vous n'utilisez pas : une extension désactivée reste un fichier exécutable sur le serveur.

Ouvrez wp-config.php et lisez-le en entier. Il doit commencer par <?php sans un espace avant. Toute ligne que vous ne reconnaissez pas mérite une question. Un fil de forum de vingt-neuf réponses s'est conclu sur ce fichier, après que la personne ait désactivé toutes ses extensions, remplacé wp-admin, changé de thème et supprimé son .htaccess, toutes manipulations qui ne touchent jamais ce fichier.

Vérifiez le dossier des téléversements. C'est l'emplacement le plus cité par les vingt pages lues, et à juste titre : wp-content/uploads doit contenir des images, pas des fichiers .php. Un fichier PHP dans ce dossier n'a aucune raison légitime d'exister.

Puis les deux onglets du début, Indispensable et Avancée.

Les deux horloges de Google

Une seule page sur vingt fait cette distinction, et c'est la source de presque tous les malentendus.

La première horloge, c'est la sécurité. Après votre demande de réexamen dans la Search Console, Google lève l'avertissement du navigateur. Un cas documenté sur le forum officiel s'est réglé en deux jours. Ce délai n'est garanti nulle part.

La seconde, c'est le référencement, et elle n'a rien à voir. Les pages injectées qui renvoient désormais une erreur mettent, selon la documentation de Google elle-même, « des semaines, parfois des mois » à quitter l'index. Le seul témoignage précis et daté que nous ayons trouvé, sur un site de plusieurs dizaines de milliers de pages injectées, parle de six mois pour retrouver ses positions, et d'un an et deux mois plus tard il restait des pages à faire disparaître.

Ce qu'il faut en retenir : l'avertissement rouge peut disparaître en quelques jours pendant que votre trafic met des mois à revenir. Les deux ne sont pas liés, et voir l'un revenir ne dit rien de l'autre.

Demander le réexamen

Une fois le nettoyage terminé, et seulement là. Dans la Search Console, section Sécurité et actions manuelles, votre demande doit dire trois choses : ce que vous avez trouvé, comment vous l'avez fermé, et ce que vous avez mis en place pour que ça ne revienne pas. Une demande qui dit seulement que le site est propre se fait refuser.

Vérifiez avant d'envoyer que les pages injectées renvoient bien une erreur, et que le site est identique depuis plusieurs systèmes différents.

Comment éviter la deuxième fois

Le chiffre de Google sur les 20 % de réinfections en vingt-quatre heures ne concerne pas les malchanceux. Il concerne ceux qui ont nettoyé sans fermer.

Supprimez ce que vous n'utilisez pas. Une extension désactivée et un thème inactif sont des fichiers exécutables sur le serveur. Ce sont eux qu'on retrouve le plus souvent dans les fils quand la cause est identifiée.

Mettez à jour, et vérifiez que l'auteur est encore vivant. Une extension dont la dernière mise à jour date de plus d'un an est une extension à remplacer, pas à surveiller.

Regardez la liste des utilisateurs une fois par mois. Trente secondes.

Testez vos sauvegardes. Vérifiez qu'elles contiennent la base et pas seulement les fichiers, et jusqu'où elles remontent. Chez plusieurs hébergeurs mutualisés, la profondeur se compte en semaines.

Si votre site n'est pas piraté mais simplement hors service, vous n'êtes pas sur le bon guide : regardez l'écran blanc ou l'erreur 500 selon ce que vous voyez.

Et si le nettoyage vous dépasse, ou si le site a déjà été réinfecté une fois, c'est précisément ce qu'on fait. Le nettoyage d'un site WordPress infecté coûte 149 € HT, remis en ligne ou remboursé.

Questions fréquentes

Comment récupérer un site piraté ?

Dans cet ordre : identifiez comment l'attaquant est entré, avant de nettoyer quoi que ce soit. Coupez tous les accès en changeant les mots de passe WordPress, FTP, base de données et hébergement. Remplacez les fichiers du cœur de WordPress par une copie officielle sans toucher à wp-content ni à wp-config.php. Réinstallez extensions et thème depuis leur source, supprimez ce que vous n'utilisez pas. Vérifiez le dossier des téléversements, le fichier de configuration, et les deux onglets Indispensable et Avancée de la page des extensions. Puis seulement, demandez le réexamen à Google. Nettoyer avant d'avoir trouvé la porte d'entrée est la cause principale des réinfections.

Combien de temps avant que l'avertissement de Google disparaisse ?

Ce sont deux délais différents et personne ne les distingue. La levée de l'avertissement après un réexamen de sécurité peut prendre quelques jours, un cas documenté sur le forum officiel s'est réglé en deux jours, mais aucun délai n'est garanti. La disparition des pages injectées de l'index prend beaucoup plus longtemps, la documentation de Google parle de semaines à plusieurs mois. Et le retour du référencement est encore autre chose : le seul témoignage précis que nous ayons trouvé parle de six mois.

Pourquoi mon site a été repiraté après le nettoyage ?

Parce que le nettoyage a retiré ce qui était visible sans fermer ce qui avait servi à entrer. Google indique que 20 % des sites piratés le sont à nouveau dans les vingt-quatre heures. Les causes qui reviennent le plus dans les témoignages : une extension abandonnée toujours installée, un fichier laissé dans un dossier que les outils ne regardent pas comme wp-content/mu-plugins, un mot de passe d'hébergement jamais changé, ou un compte tiers compromis en amont du serveur.

Comment savoir si mon site WordPress est infecté ?

Testez-le depuis un autre appareil et un autre système que le vôtre, le masquage par système d'exploitation est fréquent et un site peut paraître sain sur votre poste. Tapez site:votre-domaine.fr dans Google pour repérer des pages que vous n'avez jamais écrites. Triez vos fichiers par date de modification et cherchez une grappe de fichiers changés un jour où vous n'avez rien publié. Vérifiez la liste des administrateurs. Et regardez les onglets Indispensable et Avancée de votre page des extensions.

Faut-il payer un service de nettoyage ?

Un service fait gagner du temps mais ne remplace pas l'étape qui compte. Plusieurs témoignages décrivent des sites nettoyés par un prestataire puis réinfectés des mois plus tard, dans un cas neuf sites sur douze. La question à poser avant de payer n'est pas ce qui sera nettoyé, mais comment la porte d'entrée sera identifiée et fermée, et ce qui est prévu si le site est réinfecté.

Mon hébergeur a suspendu mon compte, que faire ?

C'est une réaction courante quand un site compromis envoie du courrier indésirable ou consomme trop de ressources. Le déblocage se fait en apportant la preuve du nettoyage, pas en attendant un délai. Demandez au support ce qu'il a détecté exactement, avec les chemins de fichiers et les dates : cette information vous fait gagner l'étape la plus longue de l'enquête.

Décrire ma panne