Scanner un site WordPress contre les malwares : les méthodes
Un scan de malware ne vaut que par ce qu'il est capable de voir. Beaucoup de propriétaires de sites WordPress lancent un scanner en ligne, obtiennent un résultat vert et concluent que tout va bien, alors qu'une porte dérobée dort dans un dossier de plugin. Ce guide passe en revue les quatre grandes méthodes pour scanner un site WordPress, ce que chacune détecte réellement, et l'ordre dans lequel les combiner pour obtenir un diagnostic fiable.
Comprendre ce qu'est un scan de malware WordPress
Un malware WordPress est un morceau de code ajouté par un pirate : un fichier PHP caché, quelques lignes injectées dans un thème, un script JavaScript glissé dans la base de données, ou un compte administrateur créé en douce. Il peut se trouver à quatre endroits différents : dans les fichiers du cœur WordPress, dans les plugins et thèmes, dans le dossier des médias, ou dans la base de données.
Le problème est qu'aucun outil ne regarde partout à la fois. Un scanner externe analyse le site depuis Internet, comme un navigateur. Un plugin de sécurité lit les fichiers depuis l'intérieur de WordPress. Un antivirus serveur comme ClamAV parcourt le disque. Une vérification d'intégrité compare les fichiers à leur version officielle.
L'erreur la plus fréquente consiste à se fier à une seule méthode. Les pirates le savent : un malware moderne est souvent conçu pour rester invisible depuis l'extérieur, ne s'afficher qu'aux visiteurs venant de Google, ou se cacher dans un fichier au nom banal comme « class-cache.php ».
Les signes qui doivent déclencher un scan
Certains symptômes justifient un scan complet sans attendre :
- Redirections inattendues : des visiteurs, surtout sur mobile, arrivent sur un site de casino ou de faux antivirus.
- Avertissement du navigateur ou de Google : page rouge « site trompeur », ou mention « ce site a peut-être été piraté » dans les résultats.
- Alerte de l'hébergeur : message signalant une consommation anormale, un envoi massif d'emails ou un fichier détecté par son antivirus.
- Pages inconnues dans Google : une recherche
site:votredomaine.frfait apparaître des pages de pharmacie ou en japonais. - Comptes ou fichiers apparus sans raison : un administrateur que personne ne connaît, des fichiers PHP datés d'hier dans un dossier que vous ne touchez jamais.
- Ralentissements soudains : le serveur travaille pour le compte de quelqu'un d'autre.
Même sans symptôme, un scan régulier reste nécessaire : la plupart des infections restent discrètes pendant des jours, parfois des semaines.
Cas concrets
L'artisan dont le site « allait très bien »
Un menuisier constate une baisse des demandes de devis. Un scanner en ligne ne trouve rien. En réalité, le site ne redirige que les visiteurs arrivant depuis un moteur de recherche sur mobile, une fois par jour et par adresse IP. Le scanner externe, qui ne présentait pas ce profil, n'a rien vu. C'est un scan des fichiers du thème qui a révélé le code fautif dans le fichier functions.php.
La boutique WooCommerce et le fichier dans les médias
Une boutique de cosmétiques reçoit une alerte de son hébergeur. Le plugin de sécurité installé ne signale rien d'anormal dans les plugins. Une recherche des fichiers PHP dans le dossier des médias trouve pourtant un fichier nommé comme une image, contenant un gestionnaire de fichiers pirate. Ce dossier ne devrait jamais contenir de PHP.
Le cabinet libéral et le script en base de données
Un cabinet de kinésithérapie voit une fenêtre publicitaire s'afficher sur la page d'accueil. Les fichiers sont propres, les checksums du cœur aussi. Le script était stocké dans un widget, donc dans la table des options de la base de données. Seule une recherche en base l'a trouvé.
L'agence qui gère trente sites
Une agence web veut savoir lequel de ses sites est à l'origine d'une liste noire de son serveur d'emails. Plutôt que de lancer trente scans manuels, elle utilise un antivirus serveur sur l'ensemble des dossiers, puis cible les sites signalés avec une vérification d'intégrité.
Méthode pas à pas
Si vous n'êtes pas à l'aise avec une ligne de commande, les étapes 3 à 6 sont à confier à votre prestataire ou à votre hébergeur. Elles nécessitent un accès SSH, que tous les hébergements ne fournissent pas.
-
Faire une sauvegarde avant tout : copiez les fichiers et la base de données, même infectés. Ce sera votre point de retour si une action casse le site, et une preuve utile en cas d'enquête.
-
Lancer un scanner externe : il vous dit ce que voient vos visiteurs et Google. Consultez aussi le rapport de transparence Google Safe Browsing pour votre domaine. Un résultat positif confirme l'infection, un résultat négatif ne prouve rien.
-
Vérifier l'intégrité du cœur et des plugins : WP-CLI, l'outil en ligne de commande officiel de WordPress, compare vos fichiers aux empreintes publiées par WordPress.org. La première commande contrôle le cœur, la seconde les plugins hébergés sur le répertoire officiel (les plugins premium ne peuvent pas être vérifiés ainsi).
wp core verify-checksums wp plugin verify-checksums --all -
Chercher du PHP là où il ne doit pas être : le dossier des médias ne contient normalement que des images et des documents. La commande suivante liste tout fichier PHP qui s'y trouve.
find wp-content/uploads -type f -iname "*.php*" -
Repérer les motifs d'obfuscation et les fichiers récents : les portes dérobées utilisent souvent des fonctions qui décodent du texte illisible avant de l'exécuter. La première commande liste les fichiers qui contiennent ces fonctions, la seconde les fichiers PHP modifiés ces sept derniers jours. Attention : certains plugins légitimes utilisent aussi ces fonctions, chaque résultat doit être examiné.
grep -rlE 'eval\(base64_decode|gzinflate\(|str_rot13\(|eval\(\$_(POST|GET|REQUEST)' --include="*.php" . find . -type f -name "*.php" -mtime -7 -printf "%TY-%Tm-%Td %p\n" | sort -
Passer un antivirus serveur : ClamAV est un antivirus libre disponible sur la plupart des serveurs Linux. Sur un serveur dédié ou un VPS, il peut parcourir tout le site. Sur un mutualisé, demandez à votre hébergeur s'il propose un scan équivalent depuis son panneau.
clamscan -r -i /var/www/monsite -
Fouiller la base de données : un script injecté dans un article ou un widget n'apparaît dans aucun fichier. Ces requêtes cherchent des balises script dans les contenus et les options. Vérifiez d'abord le préfixe de vos tables avec la première commande, il n'est pas toujours « wp_ ».
wp db prefix wp db query "SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';" wp db query "SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';" wp user list --role=administrator --fields=ID,user_login,user_email,user_registered -
Consigner et mettre en quarantaine : notez chaque fichier suspect, son chemin et sa date, puis déplacez-le hors du site plutôt que de l'effacer. Si vous découvrez une infection active, suivez ensuite une procédure de nettoyage complète.
Bonnes pratiques
- Combiner au moins trois méthodes : vue externe, intégrité des fichiers et recherche en base. Chacune couvre un angle mort des autres.
- Automatiser la fréquence : un scan manuel une fois par trimestre laisse des mois de liberté au pirate.
- Garder un point de référence : une liste des fichiers et de leurs empreintes à une date saine rend chaque écart visible.
- Scanner depuis l'extérieur du site compromis quand c'est possible : un malware évolué peut tromper un plugin qui tourne sur le même WordPress que lui.
- Vérifier les comptes administrateurs à chaque scan : un compte ajouté est souvent le premier signe d'une intrusion.
Erreurs fréquentes à éviter
- Conclure qu'un site est sain parce qu'un scanner en ligne est resté vert.
- Supprimer des fichiers suspects sans sauvegarde préalable, et casser le site au passage.
- Oublier la base de données : nettoyer les fichiers sans traiter un script stocké dans un widget ou une option.
- Scanner une fois après une alerte, puis ne plus rien faire jusqu'à la suivante.
Comment V-Shield vous aide
V-Shield installe un agent sur votre WordPress et lance un scan automatique chaque jour en formule Essentiel, toutes les 6 heures en Pro et Business. Le scan recherche les portes dérobées, les fichiers suspects, les comptes administrateurs frauduleux et les injections en base de données. Les fichiers sont aussi analysés par ClamAV et des règles YARA sur nos serveurs, et non sur votre hébergement. Un fichier dangereux peut être mis en quarantaine de façon réversible. Vous pouvez comparer les fonctionnalités de scan et les formules et tarifs. Pour aller plus loin, lisez notre guide pour supprimer un malware WordPress et notre guide complet de sécurisation WordPress. Si votre site redirige déjà vos visiteurs, consultez notre article sur le site WordPress redirigé vers un autre site.
Votre scan a trouvé quelque chose et vous ne savez pas quoi en faire ? Parlez directement à un expert V-Shield avant de toucher aux fichiers.
Questions fréquentes
Un scanner en ligne gratuit suffit-il pour savoir si mon site WordPress est infecté ?
Non. Un scanner en ligne ne voit que les pages publiques, comme un visiteur. Il repère une redirection ou un script injecté visible, mais pas une porte dérobée cachée dans un fichier PHP ni un compte administrateur ajouté. Un résultat propre ne prouve donc pas que le site est sain.
Quelle est la différence entre un scan de fichiers et une vérification des checksums ?
Le scan de fichiers cherche des motifs de code malveillant connus dans tous les fichiers. La vérification des checksums compare chaque fichier du cœur WordPress à l'empreinte officielle publiée par WordPress.org. La première méthode trouve les ajouts suspects, la seconde trouve toute modification du cœur, même inédite.
Puis-je scanner mon site WordPress sans accès SSH ?
Oui, en partie. Sans SSH, vous pouvez utiliser un plugin de sécurité qui scanne depuis WordPress, un scanner externe et l'outil de recherche du gestionnaire de fichiers de votre hébergeur. Les commandes WP-CLI, ClamAV ou grep demandent en revanche un accès SSH, que certains hébergements mutualisés ne proposent pas.
À quelle fréquence faut-il scanner un site WordPress ?
Au minimum une fois par jour pour un site vitrine, et plusieurs fois par jour pour une boutique en ligne ou un site qui reçoit des comptes clients. Plus l'intervalle est court, plus vous réduisez le temps pendant lequel un pirate peut agir sans être vu, envoyer du spam ou voler des données.
Le scan a trouvé un fichier suspect : dois-je le supprimer immédiatement ?
Pas tout de suite. Faites d'abord une sauvegarde complète, puis mettez le fichier en quarantaine plutôt que de l'effacer. Certains fichiers signalés sont des faux positifs utilisés par un plugin légitime. Si le site casse après la suppression, la quarantaine permet de revenir en arrière en quelques secondes.