Comment nettoyer un WordPress infecté : procédure complète étape par étape
Votre WordPress est compromis ? Cette procédure méthodique vous guide du diagnostic au nettoyage complet, en passant par la suppression des backdoors et la prévention de la réinfection.
Découvrir que votre WordPress est infecté est stressant, mais paniquer est votre pire ennemi. Un nettoyage précipité sans méthode risque de manquer des backdoors qui permettront une réinfection rapide. Cette procédure pas à pas vous guide à travers chaque étape pour nettoyer complètement votre site et éviter que l'histoire se répète.
Avant de commencer : évaluer la situation
Confirmer l'infection
Ne partez pas d'une hypothèse. Vérifiez concrètement :
- Sucuri SiteCheck :
sitecheck.sucuri.net— scan externe gratuit - Google Safe Browsing :
transparencyreport.google.com/safe-browsing/search?url=votresite.fr - Wordfence : Lancez un scan complet depuis le tableau de bord
- Symptômes visibles : Contenu étrange dans les pages, redirections vers des sites tiers, avertissements navigateur
Identifier le type d'infection
Différentes infections nécessitent des approches différentes :
| Type d'infection | Symptôme principal | Guide dédié |
|---|---|---|
| Pharma hack | Contenu médicament dans Google | Guide pharma hack |
| Casino hack | Liens casino dans les pages | Guide casino hack |
| Redirections malveillantes | Visiteurs redirigés | Guide redirections |
| Défacement | Page remplacée par un message pirate | Guide défacement |
| Backdoor seule | Aucun symptôme visible mais présence confirmée | Ce guide |
Phase 1 : Isolation et sauvegarde de l'infecté
Isoler le site
- Activez une page de maintenance (503 + Retry-After 7200)
- Notifiez votre hébergeur — il peut avoir des alertes sur votre compte
- Isolez le site du reste de votre hébergement si vous en gérez plusieurs
Sauvegarder le site infecté
Oui, sauvegardez le site infecté. Cette archive servira à :
- Analyse post-incident pour comprendre le vecteur d'entrée
- Point de référence pour mesurer l'efficacité du nettoyage
- Documentation pour votre déclaration CNIL si nécessaire
Stockez cette sauvegarde hors du serveur compromis.
Phase 2 : Analyse des fichiers compromis
Trouver les fichiers modifiés récemment
```bash
# Fichiers PHP modifiés dans les 30 derniers jours
find /var/www/html -name "*.php" -newer /var/www/html/wp-config.php -mtime -30
# Fichiers PHP dans des répertoires qui ne devraient pas en avoir
find /var/www/html/wp-content/uploads -name "*.php"
find /var/www/html/wp-content/cache -name "*.php"
```
Rechercher les patterns malveillants
``bash
# Code encodé et fonctions dangereuses
grep -rl "eval(base64_decode" /var/www/html/
grep -rl "gzinflate(str_rot13" /var/www/html/
grep -rl "create_function" /var/www/html/wp-content/plugins/
grep -rl "\$_POST\['pass'\]" /var/www/html/
``
Vérifier les fichiers système WordPress
Comparez votre wp-admin/ et wp-includes/ avec une installation WordPress fraîche de la même version. Toute différence est suspecte.
Phase 3 : Nettoyage
Option A : Restauration depuis backup propre (recommandée)
Si vous disposez d'une sauvegarde antérieure à l'infection (vérifiez la date avec les logs d'accès) :
- Vérifiez d'abord que la sauvegarde est propre (scan Sucuri sur la sauvegarde)
- Restaurez les fichiers via FTP
- Restaurez la base de données via phpMyAdmin
- Changez immédiatement tous les mots de passe (suite au point suivant)
Option B : Nettoyage manuel
1. Réinstaller WordPress core :
Téléchargez WordPress depuis wordpress.org, remplacez les dossiers wp-admin/ et wp-includes/ en conservant wp-content/ et wp-config.php.
2. Réinstaller les plugins :
Supprimez tous les plugins et réinstallez-les depuis wordpress.org ou depuis les sites officiels des développeurs. Ne réinstallez jamais depuis une source tierce.
3. Réinstaller le thème :
Même procédure pour le thème actif.
4. Nettoyer la base de données :
```sql
-- Chercher du contenu injecté dans les posts
SELECT ID, post_title, post_content FROM wp_posts
WHERE post_content LIKE '%eval(%'
OR post_content LIKE '%base64_decode%'
OR post_content LIKE '%casino%'
OR post_content LIKE '%viagra%';
-- Chercher des options suspectes
SELECT option_name, LEFT(option_value, 100) FROM wp_options
WHERE option_value LIKE '%eval(%' OR option_value LIKE '%base64%';
```
5. Supprimer les utilisateurs inconnus :
Vérifiez tous les comptes administrateurs dans WordPress. Supprimez ceux que vous ne reconnaissez pas.
Phase 4 : Durcissement post-nettoyage
Changer tous les accès
- Mot de passe WordPress (tous les comptes)
- Mot de passe FTP et SFTP
- Mot de passe base de données MySQL (et mettre à jour
wp-config.php) - Mot de passe cPanel / hébergement
- Clés secrètes WordPress dans
wp-config.php
Activer les mesures préventives
Consultez notre guide de sécurisation WordPress pour les mesures complètes : 2FA, WAF, blocage XML-RPC, changement URL de connexion.
Surveillance renforcée pendant 4 semaines
Une réinfection dans les jours suivants est fréquente si le vecteur d'entrée n'a pas été colmaté. Mettez en place un monitoring actif de votre contenu pour détecter immédiatement toute réinfection.
Articles connexes : Pharma hack | Site blacklisté Google | Sécuriser WordPress