Retour au blog
Supprimer un malware WordPress : guide de nettoyage etape par etape
WordPress

Supprimer un malware WordPress : guide de nettoyage etape par etape

ElevaSEO21 mars 202617 min de lecture
wordpressmalwaresecuritenettoyagewp-clipiratage

Votre site WordPress a ete pirate. Les symptomes sont la : redirections vers des sites malveillants, pages de spam injectees dans l'index Google, fichiers PHP inconnus dans wp-content, alertes de securite dans la Search Console, ou pire, une page rouge "Ce site est dangereux" qui accueille vos visiteurs. La panique est comprehensible, mais la solution exige methode et rigueur, pas de la precipitation.

Selon le rapport Sucuri 2025, 95,6 % des infections de CMS detectees concernaient WordPress. Ce chiffre ne signifie pas que WordPress est fondamentalement moins sur que ses concurrents -- il reflete sa part de marche dominante (43 % des sites web) qui en fait la cible la plus rentable pour les attaquants. Le meme rapport revele que 61 % des sites infectes n'avaient pas mis a jour leur CMS au moment de la compromission.

Ce guide vous accompagne a travers le processus complet de nettoyage, du diagnostic initial a la protection post-nettoyage. Chaque etape inclut les commandes CLI exactes a executer. Pour les fondamentaux de la securite WordPress, consultez notre guide de securite. Si votre site vient d'etre pirate, consultez egalement notre guide pour securiser WordPress apres un piratage.

Comment supprimer un malware de WordPress (8 etapes)
  1. 1

    Isoler le site et creer un backupMettez le site en maintenance, sauvegardez tous les fichiers et la base de donnees dans un emplacement deconnecte pour preservation forensique.

  2. 2

    Scanner et identifier l'infectionUtilisez WP-CLI, Wordfence CLI et des commandes de recherche pour localiser les fichiers infectes, les injections de code et les backdoors.

  3. 3

    Reinstaller le core WordPressSupprimez et reinstallez les fichiers du core WordPress avec WP-CLI pour eliminer toute modification du systeme de base.

  4. 4

    Nettoyer les plugins et themesReinstallez tous les plugins et themes depuis des sources officielles. Supprimez les extensions inactives et non reconnues.

  5. 5

    Nettoyer la base de donneesRecherchez et supprimez les injections SQL, les comptes administrateurs frauduleux, les options malveillantes et les contenus spam.

  6. 6

    Verifier et nettoyer wp-config.php et .htaccessInspectez ces fichiers critiques pour detecter les modifications malveillantes et restaurez-les a un etat propre.

  7. 7

    Changer tous les identifiantsModifiez tous les mots de passe, cles de securite WordPress, cles API et acces FTP/SSH/base de donnees.

  8. 8

    Deployer la protection post-nettoyageInstallez un WAF, configurez le monitoring des fichiers, durcissez la configuration et soumettez une demande de reexamen a Google si necessaire.

Phase 1 : Diagnostic -- Identifier l'Infection

Symptomes courants d'une infection WordPress

Avant de nettoyer, il faut comprendre ce que vous affrontez. Les infections WordPress se manifestent de plusieurs manieres, et le type de symptome oriente le diagnostic. Pour un catalogue des malwares les plus repandus, consultez notre guide des malwares WordPress courants en 2026.

Redirections malveillantes : le visiteur est redirige vers un site tiers (casino, pharma, malware). La redirection peut etre conditionnelle (mobile uniquement, premier visiteur uniquement, referrer Google uniquement), ce qui la rend difficile a detecter par l'administrateur.

Injection de spam SEO (SEO spam / Japanese keyword hack) : des centaines ou des milliers de pages sont injectees dans l'index Google, ciblant des mots-cles en japonais, chinois ou des termes pharmaceutiques. L'administrateur ne voit rien sur le site mais les pages apparaissent dans la Search Console.

Backdoors : des fichiers PHP dissimules permettent a l'attaquant de reprendre le controle du site meme apres un nettoyage partiel. Les backdoors sont souvent encodees en base64 ou obfusquees avec des fonctions eval/gzinflate.

Miners de cryptomonnaie : du code JavaScript est injecte pour miner de la cryptomonnaie en utilisant les ressources CPU des visiteurs. Le symptome principal est un ralentissement significatif du site et une utilisation CPU anormale.

Phishing : des pages imitant des sites bancaires ou des services populaires sont hebergees sur votre serveur. Ces pages sont souvent placees dans des sous-repertoires discrets de wp-content.

Scanner avec WP-CLI et la ligne de commande

Le diagnostic commence par la ligne de commande. Connectez-vous a votre serveur via SSH et executez ces commandes :

Verifier l'integrite des fichiers du core :

wp core verify-checksums

Cette commande compare chaque fichier du core WordPress avec la version officielle. Tout fichier modifie ou ajoute est signale. Si cette commande echoue, le core est compromis.

Rechercher les fichiers PHP suspects dans wp-content/uploads :

find wp-content/uploads -name "*.php" -type f

Le repertoire uploads ne devrait contenir aucun fichier PHP. Tout fichier PHP dans ce repertoire est presque certainement malveillant.

Rechercher les fonctions dangereuses :

grep -rn "eval(" wp-content/ --include="*.php"
grep -rn "base64_decode(" wp-content/ --include="*.php"
grep -rn "gzinflate(" wp-content/ --include="*.php"
grep -rn "str_rot13(" wp-content/ --include="*.php"
grep -rn "assert(" wp-content/ --include="*.php"

Ces fonctions sont utilisees legitimement dans certains plugins, mais leur presence dans des fichiers inconnus ou dans des emplacements inhabituels est un indicateur d'infection.

Lister les fichiers modifies recemment :

find . -name "*.php" -mtime -7 -type f

Cette commande liste les fichiers PHP modifies dans les 7 derniers jours. Comparez cette liste avec vos modifications legitimes recentes.

Verifier les taches cron malveillantes :

wp cron event list

Les malwares installent souvent des taches cron pour se re-telecharger automatiquement apres suppression.

Scanner avec Wordfence CLI

Si Wordfence est installe, utilisez ses capacites de scan :

wp wordfence scan --type=full

Wordfence compare les fichiers avec les versions officielles du repository WordPress.org, detecte les signatures de malwares connues, identifie les URL malveillantes dans la base de donnees et signale les fichiers suspects en dehors des emplacements attendus.

Phase 2 : Isolation et Backup

Mettre le site en maintenance

Avant de commencer le nettoyage, isolez le site pour empecher la propagation de l'infection et proteger les visiteurs :

wp maintenance-mode activate

Alternativement, creez un fichier .maintenance a la racine :

echo '<?php $upgrading = time(); ?>' > .maintenance

Sauvegarder l'etat infecte

Contre-intuitivement, il faut sauvegarder le site infecte avant de le nettoyer. Cette sauvegarde sert a l'analyse forensique (comprendre comment l'attaque s'est produite), a la recuperation de contenu si le nettoyage est trop agressif, et aux eventuelles procedures legales ou d'assurance.

# Backup des fichiers
tar -czf ~/backup-infected-$(date +%Y%m%d).tar.gz /var/www/html/
 
# Backup de la base de donnees
wp db export ~/backup-infected-$(date +%Y%m%d).sql

Stockez ces backups dans un emplacement deconnecte du serveur web (stockage externe, machine locale).

Phase 3 : Nettoyage des Fichiers

Reinstaller le core WordPress

La methode la plus fiable pour nettoyer le core est de le reinstaller completement :

# Telecharger une copie propre du core
wp core download --force --skip-content

Cette commande telecharge et ecrase tous les fichiers du core WordPress (wp-admin, wp-includes, fichiers racine) sans toucher a wp-content. Apres la reinstallation, reverifiez l'integrite :

wp core verify-checksums

Le resultat doit etre "WordPress installation verifies against checksums" sans aucune erreur.

Nettoyer wp-content

Le repertoire wp-content est la zone la plus sensible car c'est la que resident vos contenus personnalises et la plupart des infections. Pour comprendre les emplacements d'infection typiques, consultez notre guide sur les fichiers WordPress infectes.

Reinstaller les plugins depuis les sources officielles :

# Lister tous les plugins
wp plugin list
 
# Pour chaque plugin, le reinstaller depuis le repository
wp plugin install nom-du-plugin --force
 
# Supprimer les plugins inactifs et non reconnus
wp plugin delete nom-du-plugin-suspect

Reinstaller les themes :

# Reinstaller le theme actif depuis le repository
wp theme install nom-du-theme --force
 
# Supprimer les themes inactifs
wp theme delete theme-inactif

Nettoyer le repertoire uploads :

# Supprimer tous les fichiers PHP dans uploads
find wp-content/uploads -name "*.php" -type f -delete
 
# Rechercher les fichiers suspects par extension
find wp-content/uploads -name "*.php5" -o -name "*.phtml" -o -name "*.shtml" -type f

Verifier les repertoires caches :

# Rechercher les fichiers dans des repertoires a noms suspects
find wp-content -type d -name ".*" | head -20
find wp-content -type d -name "cache" -o -name "tmp" -o -name "temp"

Les malwares se dissimulent souvent dans des repertoires caches (commencant par un point) ou dans des repertoires au nom anodin (cache, tmp, temp, sessions).

Inspecter wp-config.php

Le fichier wp-config.php est une cible privilegiee car il contient les identifiants de base de donnees et peut etre modifie pour executer du code malveillant :

# Verifier les fonctions suspectes
grep -n "eval\|base64_decode\|gzinflate\|str_rot13\|assert" wp-config.php

Verifiez manuellement le fichier et comparez-le avec un wp-config.php propre. Les elements a verifier :

  • Aucun code eval() ou base64_decode()
  • Les cles de securite sont presentes et au format correct (generez-en de nouvelles sur https://api.wordpress.org/secret-key/1.1/salt/)
  • Les prefixes de table sont corrects
  • Aucune inclusion de fichier suspecte (require/include vers des chemins inhabituels)
  • Le mode debug est desactive en production

Inspecter .htaccess

Le fichier .htaccess est le second fichier le plus frequemment modifie par les malwares :

cat .htaccess

Un .htaccess WordPress propre contient uniquement les regles de reecriture standard :

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Toute regle de redirection supplementaire, tout code entre les blocs # BEGIN et # END, ou tout code avant le bloc WordPress est suspect. Remplacez le fichier par une version propre et regenerez les permaliens :

wp rewrite flush

Phase 4 : Nettoyage de la Base de Donnees

La base de donnees peut contenir des injections malveillantes meme apres un nettoyage complet des fichiers.

Rechercher les injections dans les options

# Rechercher les options contenant des URL suspectes
wp db query "SELECT option_name, LEFT(option_value, 200) FROM wp_options WHERE option_value LIKE '%eval(%' OR option_value LIKE '%base64_decode(%' OR option_value LIKE '%<script%' LIMIT 50;"

Rechercher les comptes administrateurs frauduleux

# Lister tous les administrateurs
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

Examinez chaque compte administrateur. Tout compte que vous ne reconnaissez pas ou qui a ete cree recemment (apres la date presumee de l'infection) doit etre supprime :

wp user delete ID_UTILISATEUR --reassign=1

Nettoyer les posts infectes

# Rechercher du JavaScript malveillant dans les posts
wp db query "SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%eval(%' OR post_content LIKE '%<iframe%' OR post_content LIKE '%document.write(%' LIMIT 50;"

Si des posts sont infectes, vous pouvez les nettoyer en masse :

# Supprimer les balises script malveillantes
wp db query "UPDATE wp_posts SET post_content = REGEXP_REPLACE(post_content, '<script[^>]*>.*?eval\\\(.*?</script>', '') WHERE post_content LIKE '%<script%eval(%';"

Nettoyer les taches cron malveillantes

# Lister les transients suspects
wp db query "SELECT option_name FROM wp_options WHERE option_name LIKE '_transient_%' AND option_value LIKE '%eval(%' LIMIT 50;"
 
# Supprimer les transients malveillants
wp transient delete --all

Verifier les tables additionnelles

Certains malwares creent leurs propres tables dans la base de donnees :

# Lister toutes les tables
wp db query "SHOW TABLES;"

Comparez la liste avec les tables WordPress standard (wp_posts, wp_options, wp_users, wp_usermeta, wp_comments, wp_commentmeta, wp_terms, wp_termmeta, wp_term_taxonomy, wp_term_relationships, wp_links). Les tables supplementaires proviennent de plugins (verifiez la correspondance) ou sont potentiellement malveillantes.

Phase 5 : Changement de Tous les Identifiants

Apres le nettoyage, changez tous les identifiants sans exception :

Mots de passe WordPress

# Changer le mot de passe de chaque administrateur
wp user update ID_ADMIN --user_pass="NouveauMotDePasseComplexe123!@#"

Cles de securite WordPress

Regenerez toutes les cles de securite dans wp-config.php. Obtenez de nouvelles cles depuis :

curl https://api.wordpress.org/secret-key/1.1/salt/

Remplacez les 8 cles dans wp-config.php (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY et leurs variantes SALT). Ce changement deconnecte immediatement toutes les sessions actives.

Identifiants de base de donnees

Changez le mot de passe de l'utilisateur MySQL dans votre panel d'hebergement, puis mettez a jour wp-config.php avec le nouveau mot de passe.

Acces FTP/SFTP et SSH

Changez les mots de passe FTP/SFTP et les cles SSH. Si vous utilisez des cles SSH, generez une nouvelle paire de cles et revoquez les anciennes.

Phase 6 : Protection Post-Nettoyage

Deployer un WAF (Web Application Firewall)

Un WAF est votre premiere ligne de defense contre les reinfections. Il filtre le trafic malveillant avant qu'il n'atteigne votre application WordPress. Pour un guide complet sur les WAF, consultez notre article sur les WAF et pare-feu applicatifs.

Les options les plus efficaces :

Cloudflare (gratuit a 200 USD/mois) : DNS-level WAF avec des regles preconfigurees pour WordPress. La version gratuite offre une protection de base, les plans payants ajoutent des regles WAF avancees.

Sucuri Firewall (199 USD/an) : WAF cloud specialise WordPress avec des regles specifiques aux vulnerabilites WordPress connues, nettoyage inclus en cas de reinfection.

Wordfence Premium (119 USD/an) : WAF applicatif installe directement sur WordPress avec un pare-feu temps reel, un scanner de malwares et une protection contre le brute force. Consultez notre guide de protection contre le brute force pour les details d'implementation.

Configurer le monitoring des fichiers

Mettez en place un systeme qui vous alerte immediatement si des fichiers sont modifies :

# Creer une reference des checksums actuels
find /var/www/html -name "*.php" -exec md5sum {} \; > ~/checksums-reference.txt
 
# Script de verification quotidien
find /var/www/html -name "*.php" -exec md5sum {} \; > ~/checksums-current.txt
diff ~/checksums-reference.txt ~/checksums-current.txt

Les solutions professionnelles (Wordfence, Sucuri, iThemes Security) automatisent cette surveillance avec des notifications par email.

Durcir la configuration

Appliquez ces mesures de durcissement dans wp-config.php :

// Desactiver l'editeur de fichiers dans l'admin
define('DISALLOW_FILE_EDIT', true);
 
// Desactiver l'installation de plugins/themes depuis l'admin
define('DISALLOW_FILE_MODS', true);
 
// Forcer SSL pour l'admin
define('FORCE_SSL_ADMIN', true);

Mettre a jour tout

# Mettre a jour le core
wp core update
 
# Mettre a jour tous les plugins
wp plugin update --all
 
# Mettre a jour tous les themes
wp theme update --all

Activez les mises a jour automatiques pour les versions mineures de securite :

wp config set WP_AUTO_UPDATE_CORE minor

Demander un reexamen a Google

Si Google a affiche un avertissement de securite sur votre site :

  1. Connectez-vous a Google Search Console
  2. Allez dans "Problemes de securite"
  3. Examinez les problemes detectes
  4. Une fois le nettoyage termine, cliquez sur "Demander un examen"
  5. Decrivez les actions correctives effectuees

Le reexamen prend generalement 24 a 72 heures. En attendant, votre site continue d'afficher l'avertissement.

Prevention : Eviter la Prochaine Infection

Checklist de prevention

  • Mises a jour automatiques activees pour le core, les plugins et les themes
  • WAF actif avec des regles a jour
  • Monitoring des fichiers active avec alertes
  • Sauvegardes automatiques quotidiennes (fichiers et base de donnees)
  • Mots de passe forts et uniques pour tous les comptes
  • Authentification a deux facteurs (2FA) pour tous les administrateurs
  • Permissions de fichiers correctes (644 pour les fichiers, 755 pour les repertoires)
  • XML-RPC desactive si non utilise
  • Nombre de tentatives de connexion limite (brute force protection)
  • Plugins et themes inutilises supprimes (pas seulement desactives)
  • Prefixe de table personnalise (pas wp_)
  • Hebergement securise avec isolation des comptes

Plan de reponse aux incidents

Preparez un plan de reponse pour les futures infections :

Qui : designez un responsable securite (interne ou prestataire externe) avec les acces necessaires et la competence technique requise.

Quoi : documentez la procedure de nettoyage complete (ce guide peut servir de base) avec les commandes specifiques a votre environnement.

Quand : definissez les declencheurs d'alerte (notification WAF, alerte Search Console, rapport utilisateur, alerte monitoring) et les delais de reaction (critique : 1 heure, important : 4 heures, normal : 24 heures).

Comment : stockez les outils, les scripts et les procedures dans un emplacement accessible meme si le site est compromis (repository Git externe, documentation hors serveur).

Articles similaires