Comment vérifier si votre site WordPress a été compromis par un plugin malveillant : 8 étapes
TL;DR
- •Les attaques supply chain via plugins WordPress sont en hausse. Savoir vérifier rapidement si votre site est compromis est devenu une compétence essentielle.
- •Ce guide couvre 8 étapes concrètes : logs de mise à jour, mu-plugins, fichiers modifiés, comptes suspects, connexions réseau, wp-config.php, code obfusqué et scanners automatisés.
- •Chaque étape inclut les commandes exactes à exécuter et les indicateurs de compromission (IoC) à rechercher.
- •En cas de doute, faites appel à un professionnel. Un faux négatif sur une vérification incomplète peut avoir des conséquences graves.
Pourquoi cette vérification est urgente en avril 2026
L’écosystème WordPress traverse une période de turbulences en matière de sécurité. La récente compromission de Smart Slider 3 Pro a rappelé brutalement que même les plugins de confiance peuvent devenir des vecteurs d’attaque. Avec plus de 800 000 installations potentiellement exposées en seulement 6 heures, la question n’est plus de savoir si votre site sera ciblé, mais quand.
Ce guide vous propose une méthodologie structurée en 8 étapes pour vérifier méthodiquement si votre site WordPress a été compromis par un plugin malveillant. Que vous ayez des soupçons concrets ou que vous souhaitiez effectuer un contrôle préventif, ces vérifications couvrent les vecteurs d’attaque les plus courants observés dans les compromissions récentes.
Avant de commencer, munissez-vous d’un accès SSH ou FTP à votre serveur, d’un accès à phpMyAdmin ou WP-CLI, et idéalement d’une sauvegarde saine de référence. Si vous n’avez que l’accès au tableau de bord WordPress, certaines étapes seront limitées mais restent réalisables.
Vue d’ensemble des 8 étapes de vérification
Étape 1 : Vérifier les logs de mise à jour WordPress
La première étape consiste à identifier quels plugins ont été mis à jour récemment et à quelles versions. WordPress conserve un historique des mises à jour accessible depuis le tableau de bord.
Via le tableau de bord : Rendez-vous dans Tableau de bord > Mises à jour et consultez la section « Mises à jour récentes ». Notez la date, l’heure et la version de chaque mise à jour de plugin. Si vous utilisez les mises à jour automatiques, vérifiez les e-mails de notification envoyés par WordPress.
Via WP-CLI (recommandé) : Si vous avez accès en SSH, utilisez la commande suivante pour obtenir un historique précis :
wp plugin list --format=table --fields=name,status,version,update_version
Comparez les versions installées avec les versions officielles publiées par chaque éditeur. Toute divergence mérite une investigation. Pour les plugins premium, vérifiez directement sur le site de l’éditeur que la version installée correspond bien à la dernière release légitime.
Ce qu’il faut rechercher : des mises à jour de plugins que vous n’avez pas initiées, des versions qui ne correspondent pas aux changelogs officiels, ou des plugins mis à jour à des heures inhabituelles (nuit, week-end).
Étape 2 : Inspecter le répertoire mu-plugins
Les must-use plugins (wp-content/mu-plugins/) sont un vecteur de persistance privilégié des malwares WordPress. Ces plugins sont chargés automatiquement avant tous les autres et, point critique, ne sont pas visibles dans l’interface standard de gestion des plugins. C’est exactement la technique utilisée lors de la récente compromission de Smart Slider 3 Pro.
Via SSH :
ls -la wp-content/mu-plugins/
stat wp-content/mu-plugins/*.php
Si le répertoire mu-plugins n’existe pas, c’est normal pour la plupart des installations. S’il existe et contient des fichiers que vous n’avez pas créés ou qu’un plugin légitime n’a pas installés de manière documentée, c’est un indicateur fort de compromission.
Ce qu’il faut rechercher : tout fichier PHP dans ce répertoire dont vous ne connaissez pas l’origine. Les noms courants utilisés par les malwares incluent loader.php, updates.php, health-check.php ou des noms aléatoires.
Étape 3 : Analyser les fichiers récemment modifiés
Un plugin malveillant modifie ou crée souvent des fichiers en dehors de son propre répertoire pour assurer sa persistance. Rechercher les fichiers PHP récemment modifiés permet de détecter ces artefacts.
Via SSH :
# Fichiers PHP modifiés dans les 7 derniers jours
find /var/www/html/ -name "*.php" -mtime -7 -ls
# Fichiers PHP créés dans les 3 derniers jours
find /var/www/html/ -name "*.php" -ctime -3 -ls
Comparez cette liste avec vos mises à jour légitimes. Les fichiers modifiés dans le core WordPress (wp-includes/, wp-admin/) ne devraient jamais être modifiés en dehors d’une mise à jour officielle de WordPress lui-même.
Méthode avancée : Si vous disposez d’une sauvegarde saine, utilisez diff -rq pour comparer les deux arborescences :
diff -rq /var/www/html/ /backup/clean-site/ --exclude="*.log" --exclude="cache"
Ce qu’il faut rechercher : des fichiers PHP dans des répertoires inattendus (uploads, cache), des fichiers avec des noms aléatoires ou mimant des fichiers système (wp-tmp.php, class-wp-widget.php dans un mauvais répertoire), et des fichiers core WordPress modifiés.
Étape 4 : Auditer les comptes administrateurs
Les malwares WordPress sophistiqués créent souvent des comptes administrateurs pour maintenir l’accès même après la suppression du plugin compromis. Ces comptes utilisent généralement des noms génériques qui se fondent dans l’interface.
Via WP-CLI :
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
Via phpMyAdmin / SQL :
SELECT u.ID, u.user_login, u.user_email, u.user_registered
FROM wp_users u
INNER JOIN wp_usermeta m ON u.ID = m.user_id
WHERE m.meta_key = ’wp_capabilities’
AND m.meta_value LIKE ’%administrator%’
ORDER BY u.user_registered DESC;
Ce qu’il faut rechercher : des comptes administrateurs que vous ne reconnaissez pas, des comptes créés récemment (surtout autour de la date de la compromission suspectée), des comptes avec des adresses e-mail suspectes (domaines jetables, combinaisons aléatoires), et des noms d’utilisateur comme « updater », « maintenance », « support_admin » ou « wp_service ».
Ces vérifications vous semblent complexes ?
Nos experts réalisent un audit complet de votre site WordPress en moins de 24 heures, avec rapport détaillé et plan de remédiation.
Demander un audit gratuitÉtape 5 : Scanner les connexions réseau sortantes
Un plugin malveillant communique presque toujours avec un serveur externe (C2, ou Command & Control) pour envoyer les données volées et recevoir des instructions. Détecter ces connexions est un indicateur fiable de compromission.
Analyser les logs d’accès :
# Rechercher les appels wp_remote_post/get dans les logs PHP
grep -r "wp_remote_post\|wp_remote_get\|file_get_contents\|curl_exec" wp-content/plugins/ --include="*.php"
# Vérifier les connexions sortantes actives
netstat -tulpn | grep php
ss -tp | grep php
Surveiller le trafic en temps réel : Si vous avez accès root, utilisez tcpdump pour capturer le trafic PHP sortant :
tcpdump -i eth0 -w capture.pcap port 80 or port 443 &
# Puis déclenchez un chargement de page et analysez avec Wireshark
Ce qu’il faut rechercher : des requêtes HTTP/HTTPS vers des domaines inconnus, des communications sur des ports non standard, des requêtes POST régulières (heartbeat du malware vers le C2) et des résolutions DNS vers des domaines récemment enregistrés.
Étape 6 : Vérifier l’intégrité du fichier wp-config.php
Le fichier wp-config.php est la cible prioritaire de tout malware WordPress car il contient les credentials de la base de données et les clés d’authentification. Même si le malware n’a pas modifié ce fichier, il a probablement lu et exfiltré son contenu.
Vérifier la dernière modification :
stat wp-config.php
md5sum wp-config.php # Comparez avec votre sauvegarde
Actions recommandées même sans modification détectée : si vous suspectez une compromission via plugin, considérez que les credentials de wp-config.php ont été lus. Changez immédiatement le mot de passe de la base de données et régénérez les salts WordPress via l’API officielle.
Pour approfondir la sécurisation de votre configuration WordPress, consultez notre guide complet sur comment sécuriser votre site WordPress.
Étape 7 : Rechercher du code obfusqué dans les fichiers PHP
Le code malveillant est presque toujours obfusqué pour échapper aux scans basiques. Les techniques courantes incluent l’encodage base64, la concaténation de chaînes, l’utilisation de variables dynamiques et l’obfuscation par rotation de caractères.
Rechercher les fonctions dangereuses :
# Fonctions d’exécution de commandes
grep -rn "eval\s*(" wp-content/ --include="*.php" | grep -v "node_modules"
grep -rn "base64_decode\s*(" wp-content/ --include="*.php"
grep -rn "exec\s*(\|shell_exec\|system\s*(\|passthru\|proc_open" wp-content/ --include="*.php"
# Variables dynamiques suspectes
grep -rn "\$_\(GET\|POST\|REQUEST\|COOKIE\|SERVER\)\[" wp-content/ --include="*.php" | grep -v "wp-admin"
# Chaînes encodées longues
grep -rn "[A-Za-z0-9+/=]\{100,\}" wp-content/ --include="*.php"
Attention aux faux positifs : certains plugins légitimes utilisent eval() ou base64_decode() pour des raisons légitimes (templates, licences). L’objectif n’est pas de supprimer aveuglément tout usage de ces fonctions, mais d’identifier les usages suspects — notamment ceux combinés avec des entrées utilisateur ($_GET, $_POST) ou des chaînes encodées qui, une fois décodées, révèlent du code d’exécution.
Patterns de code malveillant PHP courants
Étape 8 : Effectuer un scan avec des outils spécialisés
Les vérifications manuelles sont essentielles mais ne suffisent pas toujours. Des outils spécialisés automatisent la détection et s’appuient sur des bases de signatures constamment mises à jour.
WP-CLI avec le package de vérification d’intégrité :
# Vérifier l’intégrité du core WordPress
wp core verify-checksums
# Vérifier l’intégrité des plugins du répertoire officiel
wp plugin verify-checksums --all
Wordfence CLI (gratuit pour les scans manuels) :
# Installation via Composer
composer global require wordfence/wordfence-cli
# Scan complet du répertoire WordPress
wordfence-cli malware-scan /var/www/html/
PHP Malware Finder (open source) :
git clone https://github.com/jvoisin/php-malware-finder.git
php php-malware-finder/phpmalwarefinder /var/www/html/wp-content/
ClamAV : Bien que principalement conçu pour les virus traditionnels, ClamAV détecte de nombreux malwares PHP courants. Si votre hébergeur l’a installé :
clamscan -r /var/www/html/wp-content/ --infected --no-summary
Ce qu’il faut rechercher : les rapports de ces outils classent les résultats par sévérité. Concentrez-vous d’abord sur les résultats critiques et élevés. Les résultats de niveau moyen ou bas peuvent être des faux positifs mais méritent quand même une vérification visuelle rapide.
Que faire si vous détectez une compromission
Si une ou plusieurs de ces étapes révèle des indicateurs de compromission, voici la marche à suivre recommandée par notre équipe :
1. Ne paniquez pas, mais agissez vite. Mettez votre site en mode maintenance immédiatement pour limiter l’exposition des visiteurs. Un simple fichier .maintenance à la racine de WordPress suffit.
2. Documentez tout avant de nettoyer. Capturez une copie complète du site compromis (fichiers + base de données) avant toute modification. Cette copie servira à l’analyse forensique et pourra être nécessaire en cas de procédure légale ou de notification RGPD.
3. Identifiez le vecteur initial. Déterminez quel plugin (ou thème) est à l’origine de la compromission. Désactivez-le immédiatement et vérifiez s’il existe un correctif. Consultez les bases de vulnérabilités comme WPScan ou Patchstack. Pour comprendre en profondeur les mécanismes d’une attaque supply chain, lisez notre analyse sur les attaques supply chain en entreprise.
4. Nettoyez systématiquement. Supprimez les mu-plugins malveillants, les comptes administrateurs créés par le malware, les fichiers PHP déposés, et tout code modifié. Si possible, restaurez les fichiers core WordPress depuis une source officielle.
5. Faites tourner tous les secrets. Changez le mot de passe de la base de données, régénérez les salts WordPress, réinitialisez les mots de passe de tous les administrateurs, et révoquez toutes les clés API tierces (passerelles de paiement, services d’e-mail, etc.).
6. Mettez en place une surveillance. Après le nettoyage, installez un plugin de monitoring d’intégrité des fichiers et surveillez les logs pendant au moins 30 jours pour détecter toute réinfection.
Questions fréquentes
Besoin d’aide pour vérifier votre site WordPress ?
Notre équipe certifiée OSCP et CISSP peut auditer votre site en profondeur et vous livrer un rapport complet sous 24 heures.
Demander un audit gratuit