doganddev
Accueil Blog Boutique

WordPress piraté : détecter et récupérer

DOG&DEV · 26/01/2025

Matériel Serveur Patch Management Sécurité
WordPress piraté : détecter et récupérer

WordPress piraté : détecter et récupérer

Un WordPress piraté est une situation critique qui nécessite une action rapide. Ce guide explique comment détecter un piratage, nettoyer le site, récupérer les données et sécuriser pour éviter les récidives.

Prérequis

  • Accès FTP/SFTP ou panneau d'hébergement
  • Accès à la base de données
  • Sauvegarde récente (si disponible)
  • Accès SSH (recommandé)

Signes d'un piratage

Symptômes courants

  • Redirections : site redirige vers des sites malveillants
  • Contenu modifié : pages injectées, liens suspects
  • Pop-ups : publicités ou alertes suspectes
  • Performances : site lent, CPU/RAM élevés
  • Google Safe Browsing : site marqué comme dangereux
  • Emails : notifications de connexions suspectes
  • Fichiers suspects : fichiers PHP inconnus dans wp-content

Détection

Vérifier les fichiers modifiés récemment

Via SSH :

# Fichiers modifiés dans les 7 derniers jours
find /var/www/html -type f -mtime -7 -name "*.php" -ls

# Fichiers suspects (eval, base64_decode)
grep -r "eval\|base64_decode\|exec\|system" /var/www/html/wp-content/

Scanner avec des outils

Wordfence (plugin) :

  • Scan automatique des fichiers
  • Détection de malware
  • Quarantaine des fichiers suspects

Sucuri SiteCheck :

  • Scan en ligne gratuit
  • Détection de blacklist
  • Analyse des fichiers

Vérifier la base de données

Requêtes suspectes :

-- Chercher du code injecté dans les posts
SELECT * FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%eval%';

-- Vérifier les utilisateurs admin
SELECT * FROM wp_users WHERE user_login LIKE '%admin%';

Actions immédiates

1. Mettre le site en maintenance

Créer .maintenance dans la racine WordPress :

<?php
$upgrading = time();

Ou utiliser un plugin de maintenance.

2. Changer tous les mots de passe

  • Admin WordPress : changer immédiatement
  • FTP/SFTP : changer les credentials
  • Base de données : changer le mot de passe MySQL
  • Hébergement : changer le mot de passe du panneau

3. Déconnecter toutes les sessions

Via base de données :

DELETE FROM wp_usermeta WHERE meta_key = 'session_tokens';

Ou utiliser un plugin comme "WP Security Audit Log".

Nettoyage

Méthode 1 : Restauration depuis sauvegarde

Si vous avez une sauvegarde propre :

  1. Exporter la base de données actuelle (au cas où)
  2. Restaurer les fichiers depuis la sauvegarde
  3. Restaurer la base de données depuis la sauvegarde
  4. Vérifier que tout fonctionne

Méthode 2 : Nettoyage manuel

Étape 1 : Identifier les fichiers infectés

# Chercher des backdoors courants
grep -r "eval\|base64_decode\|gzinflate" /var/www/html/wp-content/
grep -r "<?php.*eval" /var/www/html/

Étape 2 : Nettoyer wp-content

Supprimer les fichiers suspects :

# Faire une sauvegarde d'abord
cp -r wp-content wp-content-backup

# Supprimer les fichiers suspects identifiés
rm /var/www/html/wp-content/uploads/suspicious-file.php

Étape 3 : Vérifier les fichiers core WordPress

Comparer avec une installation propre :

# Télécharger WordPress propre
wget https://wordpress.org/latest.zip
unzip latest.zip

# Comparer les fichiers core
diff -r wordpress/ /var/www/html/ --exclude=wp-content --exclude=wp-config.php

Remplacer les fichiers core si modifiés :

cp -r wordpress/* /var/www/html/ --exclude=wp-content --exclude=wp-config.php

Étape 4 : Nettoyer la base de données

Chercher du code injecté :

-- Posts avec code suspect
UPDATE wp_posts SET post_content = REPLACE(post_content, '<script>malicious</script>', '') 
WHERE post_content LIKE '%<script>malicious</script>%';

-- Options avec code injecté
SELECT * FROM wp_options WHERE option_value LIKE '%eval%' OR option_value LIKE '%base64%';

Supprimer les utilisateurs suspects :

-- Lister les admins
SELECT * FROM wp_users u
JOIN wp_usermeta um ON u.ID = um.user_id
WHERE um.meta_key = 'wp_capabilities' AND um.meta_value LIKE '%administrator%';

-- Supprimer un utilisateur suspect (remplacer USER_ID)
DELETE FROM wp_users WHERE ID = USER_ID;
DELETE FROM wp_usermeta WHERE user_id = USER_ID;

Méthode 3 : Utiliser un plugin de sécurité

Plugins recommandés :

  • Wordfence : scan et nettoyage automatique
  • Sucuri Security : scan et monitoring
  • iThemes Security : protection et nettoyage

Utilisation :

  1. Installer le plugin
  2. Lancer un scan complet
  3. Suivre les recommandations
  4. Nettoyer les fichiers détectés

Sécurisation

1. Mettre à jour WordPress

# Via WP-CLI
wp core update
wp plugin update --all
wp theme update --all

Ou via l'interface : Tableau de bord → Mises à jour

2. Changer les clés de sécurité

Générer de nouvelles clés : WordPress.org Secret Keys

Mettre à jour wp-config.php :

define('AUTH_KEY',         'nouvelle clé...');
define('SECURE_AUTH_KEY',  'nouvelle clé...');
define('LOGGED_IN_KEY',    'nouvelle clé...');
define('NONCE_KEY',        'nouvelle clé...');
define('AUTH_SALT',        'nouvelle clé...');
define('SECURE_AUTH_SALT', 'nouvelle clé...');
define('LOGGED_IN_SALT',  'nouvelle clé...');
define('NONCE_SALT',      'nouvelle clé...');

3. Renforcer wp-config.php

// Désactiver l'édition de fichiers
define('DISALLOW_FILE_EDIT', true);

// Limiter les révisions
define('WP_POST_REVISIONS', 3);

// Augmenter la mémoire
define('WP_MEMORY_LIMIT', '256M');

4. Sécuriser les permissions

# Permissions recommandées
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chmod 600 wp-config.php

5. Installer un plugin de sécurité

Wordfence :

  • Firewall
  • Scan de malware
  • Limitation de tentatives de connexion

Configuration :

  • Activer le firewall
  • Limiter les tentatives de login (3 max)
  • Activer 2FA pour les admins

6. Configurer un WAF

Cloudflare :

  • Protection DDoS
  • WAF (Web Application Firewall)
  • Rate limiting

Sucuri :

  • WAF cloud
  • Monitoring
  • Protection DDoS

Prévention

Bonnes pratiques

  1. Mises à jour régulières : WordPress, plugins, thèmes
  2. Mots de passe forts : utiliser un gestionnaire de mots de passe
  3. 2FA : activer l'authentification à deux facteurs
  4. Sauvegardes : sauvegardes quotidiennes automatiques
  5. Monitoring : surveiller les logs et les accès
  6. Plugins/thèmes : n'installer que depuis des sources fiables
  7. Permissions : limiter les permissions fichiers

Monitoring

Surveiller :

  • Logs d'accès : connexions suspectes
  • Fichiers modifiés : changements non autorisés
  • Nouveaux utilisateurs : création d'admins
  • Requêtes base de données : requêtes suspectes

Outils :

  • WP Security Audit Log : log de toutes les actions
  • Wordfence : monitoring en temps réel
  • Sucuri : monitoring externe

Dépannage

Problème Cause possible Solution
Site toujours infecté après nettoyage Fichiers non supprimés, backdoor restant Scan complet ; vérifier tous les fichiers
Base de données corrompue Code injecté dans la DB Nettoyer manuellement ; restaurer depuis backup
Performances dégradées Scripts malveillants actifs Identifier et supprimer les scripts
Google toujours marque comme dangereux Cache Google, site pas complètement nettoyé Demander révision Google ; s'assurer que le site est propre

Récupération post-piratage

Checklist

  • Site nettoyé (fichiers + base de données)
  • Tous les mots de passe changés
  • WordPress et plugins/thèmes à jour
  • Plugin de sécurité installé et configuré
  • Permissions fichiers corrigées
  • Clés de sécurité WordPress régénérées
  • 2FA activé pour les admins
  • Sauvegardes automatiques configurées
  • Monitoring activé
  • Site testé et fonctionnel

Demander révision Google

Google Search Console :

  1. Aller dans "Sécurité"
  2. Demander une révision
  3. Attendre la vérification (quelques jours)

Ressources


Cet article s'inscrit dans notre série de guides sécurité WordPress. Pour un site sécurisé sur-mesure, contact.

Commentaires (0)

Laisser un commentaire