Supprimer un malware d’un site web : méthode de nettoyage complète

Mis à jour le Durée : 120 minutes

Réponse courte

Pour nettoyer un site infecté, conservez d’abord une copie de l’état infecté, puis comparez vos fichiers avec une source saine : le noyau WordPress avec wp core verify-checksums, le reste avec une sauvegarde antérieure. Cherchez les fichiers PHP récents, examinez la base de données, changez tous les secrets, mettez à jour, puis demandez un réexamen à Google si besoin.

Un malware de site web est rarement un fichier unique. Il se compose le plus souvent d’une porte dérobée, d’un ou plusieurs scripts qui la réinstallent, et d’une charge utile : redirection, pages de spam, voleur de cartes bancaires, envoi de courriers indésirables. Supprimer ce qui se voit sans trouver la porte dérobée mène à une réinfection en quelques jours.

Ce guide décrit la méthode générale, avec des exemples pour WordPress. Si vous ne savez pas encore que votre site est piraté, commencez par le guide sur le site WordPress piraté. Toutes les commandes se lancent depuis le dossier racine du site, en SSH ou depuis le terminal de votre hébergeur.

Figer l’état infecté avant d’y toucher

Compressez les fichiers du site et exportez la base de données dans un dossier daté, hors de la racine web. Téléchargez aussi les journaux d’accès et d’erreurs de la période concernée. Cette copie sert à comprendre par où le pirate est entré et à retrouver des contenus légitimes si le nettoyage supprime trop. Pendant le travail, affichez une page de maintenance statique pour ne plus exposer vos visiteurs.

Comparer le noyau et les extensions avec des fichiers sains

Avec WP-CLI, wp core verify-checksums compare chaque fichier du noyau WordPress avec la version officielle et signale ceux qui ont été modifiés ou ajoutés. wp plugin verify-checksums --all fait le même contrôle pour les extensions du répertoire wordpress.org. Pour un thème, une extension payante ou un site qui n’est pas sous WordPress, comparez avec une sauvegarde antérieure à l’infection ou avec une réinstallation propre déposée à côté, par exemple avec diff -rq.

Chercher les fichiers PHP récents ou suspects

Listez ce qui a changé depuis la date probable de l’infection : find . -type f -name "*.php" -mtime -14 affiche les fichiers PHP modifiés ces quatorze derniers jours, et find . -type f -name "*.php" -newer wp-config.php ceux qui sont plus récents que votre configuration. Contrôlez ensuite les endroits où PHP n’a rien à faire : find wp-content/uploads -type f -name "*.php". Enfin, grep -rlE "eval\(base64_decode|gzinflate\(base64" . repère les motifs d’obfuscation les plus courants. Un résultat n’est pas toujours un malware, et l’absence de résultat ne prouve rien : lisez chaque fichier avant de le supprimer.

Examiner la base de données

Les contenus injectés vivent souvent dans la base. Listez les administrateurs avec wp user list --role=administrator et supprimez les comptes inconnus. Vérifiez les adresses du site avec wp option get siteurl et wp option get home. Cherchez des scripts étrangers avec wp db search "<script" et wp db search "<iframe", ou en SQL dans les tables des articles, des options et des widgets. Exportez la base avant toute modification, et corrigez seulement les lignes dont vous êtes certain.

Remplacer plutôt que réparer à la main

Pour tout ce qui vient d’une source officielle, la réinstallation est plus sûre que l’édition. wp core download --force --skip-content remet le noyau à neuf sans toucher à wp-content. Supprimez les extensions et thèmes inutilisés, réinstallez les autres depuis leur éditeur, et bannissez les copies piratées de logiciels payants, qui sont une source d’infection fréquente. Pour vos propres fichiers, restaurez la version saine de la sauvegarde.

Changer tous les secrets

Un pirate qui a lu votre configuration connaît vos mots de passe. Depuis un ordinateur sain, changez : le compte de l’hébergeur, la messagerie associée, les accès FTP, SFTP et SSH, le mot de passe de la base (puis la ligne correspondante de wp-config.php), les comptes WordPress, et les clés API stockées dans le site. Remplacez les clés et sels d’authentification de wp-config.php par de nouvelles valeurs : toutes les sessions ouvertes sont alors invalidées. Ne transmettez jamais ces mots de passe par e-mail.

Mettre à jour et fermer la porte d’origine

Mettez à jour le noyau, les extensions, le thème et PHP si la version n’est plus maintenue. Cherchez la faille qui a servi : extension obsolète, compte faible, mot de passe réutilisé, accès FTP non chiffré. Si elle n’est pas corrigée, la réinfection est probable. Programmez ensuite une sauvegarde régulière stockée hors du serveur, décrite dans le guide sur la sauvegarde en entreprise.

Vérifier puis demander le réexamen à Google

Rejouez les contrôles des étapes 2 et 3, ouvrez le site depuis un téléphone en navigation privée, puis surveillez les journaux pendant plusieurs jours. Si Google a signalé le site, ouvrez le rapport « Problèmes de sécurité » de la Search Console et demandez un examen en décrivant ce que vous avez supprimé, corrigé et verrouillé. La marche à suivre est détaillée dans le guide sur un site blacklisté par Google.

Questions fréquentes

Comment supprimer un malware d’un site WordPress sans plugin ?

Comparez le noyau avec wp core verify-checksums, réinstallez-le, supprimez les extensions inutiles, cherchez les fichiers PHP récents ou situés dans uploads, examinez les administrateurs et la base, puis changez tous les accès. Un plugin de sécurité aide à repérer, mais il ne remplace pas la comparaison avec une source saine.

Un scanner de site gratuit suffit-il à savoir si mon site est propre ?

Non. Un scanner en ligne ne voit que les pages publiques : il ne lit ni les fichiers du serveur ni la base de données. Un résultat vierge est un indice, pas une preuve. Seule la comparaison des fichiers avec une version saine, avec le contrôle de la base et des journaux, permet de conclure.

Faut-il supprimer le site et le réinstaller entièrement ?

C’est parfois la voie la plus sûre : on installe un noyau neuf, on réimporte les contenus après vérification, et on repart d’accès renouvelés. Pour un petit site, c’est souvent plus rapide que de traquer chaque fichier. Pour un site volumineux, on nettoie en comparant, à condition de contrôler aussi la base.

Pourquoi le malware revient-il après le nettoyage ?

Il reste presque toujours une porte dérobée oubliée, un compte administrateur créé par le pirate, un mot de passe déjà volé ou la faille d’origine non corrigée. Reprenez la recherche des fichiers récents, vérifiez les utilisateurs, changez les secrets et mettez tout à jour avant de rouvrir le site.

Que faire si je n’ai aucune sauvegarde saine ?

Conservez l’état actuel, puis procédez par réinstallation du noyau et des extensions officielles, et par relecture des fichiers qui vous appartiennent. C’est plus long et le risque de porte dérobée oubliée reste plus élevé. Nous pouvons le faire à distance, après examen et sur devis écrit, en vous guidant pour l’accès nécessaire.

Sources

Voir aussi

Nos garanties

Comment se passe l’intervention