Nettoyer un site WordPress piraté : le guide complet pour désinfecter et sécuriser votre site
Publié le · 16 min de lecture· Par Benjamin Bueno

Sommaire
- Reconnaître un site WordPress infecté
- Avant de toucher au site : sauvegarde, maintenance et mots de passe
- Nettoyer un site WordPress piraté étape par étape
- Fermer la porte : mises à jour, comptes, clés et permissions
- Demander le réexamen à Google et lever la blacklist
- Surveiller le site après le nettoyage
- Quand faire appel à un professionnel
- Sources
En bref : pour nettoyer un site WordPress piraté, sauvegardez d'abord l'état infecté, coupez l'accès au site et changez tous les mots de passe. Remplacez ensuite le cœur de WordPress, les thèmes et les extensions par des copies propres, puis inspectez ce qui ne se réinstalle pas : wp-config.php, .htaccess, le dossier uploads, mu-plugins et la base de données. Terminez en fermant la faille, en renouvelant les clés de sécurité et en demandant le réexamen à Google. Comptez une demi-journée pour un site simple, davantage si le pirate a laissé plusieurs portes dérobées.
Un site WordPress infecté ne se répare pas en supprimant le fichier qui affiche la publicité. Le malware visible n'est presque jamais seul : d'après le rapport de Sucuri sur les sites piratés en 2023, 49,21 % des sites compromis hébergeaient au moins une porte dérobée au moment du nettoyage. Ce guide décrit la méthode que notre équipe applique depuis 2016 pour désinfecter un site WordPress, dans l'ordre, avec les commandes utiles.
Reconnaître un site WordPress infecté
La plupart des infections sont discrètes, parce que le pirate gagne de l'argent tant que le site reste en ligne : redirections, pages de spam indexées à votre insu, courriers indésirables envoyés depuis votre serveur.
Les symptômes d'un WordPress piraté
- Google affiche un avertissement sous votre résultat (site piraté ou dangereux), ou Chrome bloque la page avec un écran rouge.
- Le site redirige vers un site de spam, souvent seulement sur mobile ou pour les visiteurs venus de Google, donc sans que vous le voyiez.
- Des pages que vous n'avez jamais écrites apparaissent dans Google : mots-clés japonais, médicaments, casinos.
- Un administrateur inconnu figure dans la liste des utilisateurs, ou votre mot de passe ne fonctionne plus.
- Votre hébergeur a suspendu le compte pour envoi de spam ou charge anormale.
- Des fichiers aux noms étranges ou aux dates de modification inexplicables apparaissent à la racine ou dans
wp-content/uploads.
Les outils gratuits pour confirmer l'infection
Aucun ne suffit seul ; ensemble, ils donnent un premier diagnostic en dix minutes.
| Outil | Ce qu'il vérifie | Limite |
|---|---|---|
| Google Safe Browsing (outil « État du site ») | Si Google, dont Safe Browsing protège plus de cinq milliards d'appareils par jour, considère votre domaine comme dangereux. | Ni où est le malware, ni depuis quand. |
| Search Console, rapport « Problèmes de sécurité » | Les URL exactes où Google a détecté du contenu piraté, un logiciel malveillant ou une page trompeuse. | Propriété du site à valider. |
| VirusTotal | Soumet votre URL à plus de 70 antivirus et services de listes noires. | Une URL « propre » peut cacher une porte dérobée. |
| Sucuri SiteCheck | Le code servi par votre site : scripts injectés, redirections, iframes, listes noires, versions obsolètes. | Le scanner distant « ne détectera rien côté serveur », écrit Sucuri. |
| Wordfence (extension gratuite) | Vos fichiers de cœur, thèmes et extensions face aux originaux de WordPress.org ; malwares, portes dérobées, redirections. | Un malware installé avant lui peut le désactiver. |
Ce qu'un scanner en ligne ne voit pas
SiteCheck, VirusTotal et Safe Browsing regardent votre site comme un navigateur. Ils repèrent un script injecté ou une redirection, pas un fichier PHP dormant dans uploads ni un compte administrateur caché. Un site « propre » pour eux peut rester compromis : la vérification côté serveur est indispensable.
Avant de toucher au site : sauvegarde, maintenance et mots de passe
Supprimer tout de suite ce qui paraît suspect est l'erreur la plus fréquente : on efface des preuves, on casse le site, et on laisse la porte dérobée en place. Si vous venez de découvrir l'intrusion, notre article sur ce qu'il faut faire dans la première heure détaille l'ordre des urgences. Notez dès maintenant l'heure de découverte, les symptômes et chaque fichier supprimé : ce journal servira pour Google et l'hébergeur.
Sauvegarder l'état compromis
Une sauvegarde complète comprend, comme le rappelle la documentation WordPress, les fichiers (cœur, thèmes, extensions, uploads, wp-config.php, .htaccess) et la base de données. Sauvegardez le site tel quel, infecté : cette copie sert de référence si le nettoyage tourne mal et de preuve pour l'hébergeur ou la CNIL. Passez par l'outil de l'hébergeur, phpMyAdmin et un client SFTP, ou par WP-CLI en SSH :
wp db export sauvegarde-infectee-2026-09-06.sql
tar -czf fichiers-infectes-2026-09-06.tar.gz --exclude='*.tar.gz' .
Rangez cette archive hors du serveur et ne la restaurez jamais telle quelle : elle contient le malware.
Mettre le site hors ligne ou en maintenance
Tant que le site reste accessible, vos visiteurs continuent d'être redirigés et Google d'indexer les pages de spam. Le fichier .maintenance de WordPress n'agit que dix minutes (fonction wp_is_maintenance_mode()) ; une restriction par adresse IP dans le .htaccess est plus sûre, car elle bloque tout le monde sauf vous, robots du pirate compris. Sans aucun accès, demandez à l'hébergeur de suspendre le site.
# Tout en haut du .htaccess, avec votre propre adresse IP
<IfModule mod_authz_core.c>
Require ip 203.0.113.10
</IfModule>
Changer tous les mots de passe, pas seulement celui de WordPress
Le pirate a pu récupérer vos identifiants par un logiciel espion, un formulaire de connexion piégé ou le fichier wp-config.php. La documentation WordPress demande de changer « tous les points d'accès » : les comptes WordPress (tous les administrateurs), le FTP ou SFTP, le panneau d'hébergement, la base de données (puis reporter le mot de passe dans wp-config.php) et la boîte mail du compte administrateur. Utilisez des mots de passe longs, uniques, générés par un gestionnaire. Si le pirate a changé le vôtre, notre guide pour reprendre la main sur l'administration présente les voies de récupération.
Nettoyer un site WordPress piraté étape par étape
Tout ce qui peut être remplacé par une copie propre est remplacé, sans lire le code ; le reste (configuration, uploads, base de données) est inspecté ligne par ligne.
- Vérifier l'intégrité du cœur de WordPress.
- Réinstaller le cœur, les thèmes et les extensions depuis leur source officielle.
- Inspecter
wp-config.php,.htaccessetindex.php. - Chercher du PHP dans
wp-content/uploads. - Contrôler
wp-content/mu-plugins. - Nettoyer la base de données :
wp_options,wp_users,wp_posts. - Examiner les tâches planifiées.
- Repérer les fichiers récents et les chaînes typiques du malware.
Porte dérobée (backdoor)
Un fichier ou un fragment de code laissé par le pirate pour reprendre le contrôle du site sans repasser par la faille d'origine. Il tient souvent en une ligne, par exemple eval(base64_decode($_POST['x'])), cachée dans une extension, un thème, un fichier d'upload ou une entrée de la base. Tant qu'une seule porte dérobée subsiste, le site sera réinfecté.
Vérifier le cœur de WordPress avec wp core verify-checksums
WordPress.org publie l'empreinte de chaque fichier de chaque version. WP-CLI les compare avec vos fichiers et liste ce qui diffère ou ce qui a été ajouté :
wp core verify-checksums --include-root
# Exemples de sortie :
# Warning: File doesn't verify against checksum: wp-includes/load.php
# Warning: File should not exist: wp-admin/wp-cache.php
Chaque avertissement désigne un fichier modifié ou étranger. Sans accès SSH, l'analyse de Wordfence fait la même comparaison depuis l'administration et propose de restaurer l'original. Cette étape ne couvre pas wp-content.
Réinstaller le cœur, les thèmes et les extensions depuis l'original
Ne corrigez pas un fichier modifié : remplacez-le. Avec WP-CLI, --force réécrit les fichiers du cœur à la même version et --skip-content laisse thèmes et extensions de côté :
wp core download --version="$(wp core version)" --locale=fr_FR --skip-content --force
wp core verify-checksums
WordPress.org précise que la réinstallation depuis le tableau de bord ne suffit pas : elle écrase les fichiers existants sans supprimer ceux ajoutés par le pirate. wp-admin et wp-includes peuvent être supprimés puis remis à neuf sans risque pour vos contenus.
Même logique pour les extensions et thèmes de WordPress.org : supprimez le dossier de chacun, réinstallez à la même version, puis vérifiez les empreintes :
wp plugin list --fields=name,status,version
wp plugin install nom-de-l-extension --force
wp plugin verify-checksums --all
wp theme install nom-du-theme --force
Les extensions et thèmes premium se récupèrent chez l'éditeur, jamais sur un site de « nulled ». Supprimez tout ce qui est désactivé ou inutilisé, thèmes par défaut compris : chaque dossier en moins est un endroit de moins où se cacher.
Inspecter wp-config.php, .htaccess et index.php
Ces trois fichiers sont chargés à chaque requête. Lisez wp-config.php en entier : il ne doit contenir que les constantes de connexion, les clés de sécurité, le préfixe de table et quelques réglages. Un include ou require vers un fichier inconnu, du code encodé ou une très longue ligne en haut ou en bas sont des signes d'injection.
Le .htaccess est, d'après WordPress.org, l'un des fichiers les plus souvent modifiés lors d'une infection. Les règles de WordPress tiennent entre # BEGIN WordPress et # END WordPress. Méfiez-vous des RewriteCond sur HTTP_USER_AGENT ou HTTP_REFERER qui redirigent les visiteurs venus de Google, des directives qui rendent exécutables des .jpg ou .ico, et des .htaccess supplémentaires dans les sous-dossiers (find . -name '.htaccess'). Le plus simple : remplacer le fichier par la version standard, puis y remettre vos règles connues.
Le index.php de la racine ne fait que quelques lignes : il définit WP_USE_THEMES et charge wp-blog-header.php. Toute ligne supplémentaire est suspecte, de même dans header.php, footer.php et functions.php du thème s'ils n'ont pas été remplacés.
Chercher du PHP dans wp-content/uploads
Un fichier .php dans le dossier des médias est presque toujours une porte dérobée, déposée par une extension qui acceptait n'importe quel type de fichier :
find wp-content/uploads -type f \( -name '*.php' -o -name '*.phtml' -o -name '*.php?' \)
grep -rl '<?php' wp-content/uploads
La seconde commande révèle les fichiers déguisés : dans une enquête de février 2025, Sucuri décrit une porte dérobée dans mu-plugins qui allait chercher son code dans wp-content/uploads/2024/12/index.txt. Copiez ces fichiers dans votre dossier de preuves, supprimez-les, puis interdisez l'exécution de PHP dans uploads :
# wp-content/uploads/.htaccess
<FilesMatch "\.(php|phtml|php[0-9])$">
Require all denied
</FilesMatch>
Contrôler le dossier mu-plugins
Les extensions « must-use » placées dans wp-content/mu-plugins se chargent automatiquement, sans activation et sans apparaître dans la liste habituelle des extensions. Sucuri a documenté en mars 2025 trois variantes trouvées dans ce dossier : un redirect.php qui envoie les visiteurs vers un faux site de mise à jour en épargnant robots et administrateurs, un index.php qui télécharge et exécute du code distant, et un custom-js-loader.php qui injecte du JavaScript dans les pages. Sur la plupart des sites, ce dossier n'existe pas ou ne contient qu'un fichier posé par l'hébergeur : retirez tout ce que vous ne pouvez pas expliquer.
Nettoyer la base de données : wp_options, wp_users, wp_posts
Le remplacement des fichiers ne touche pas la base de données, où les infections modernes stockent souvent leur charge utile : d'après Sucuri, 55,2 % des sites dont la base contenait du malware avaient aussi un compte administrateur malveillant en 2023.
wp_options. Vérifiez d'abord siteurl et home, qu'un pirate peut pointer vers son domaine pour rediriger tout le site, puis cherchez les scripts injectés dans les options des extensions et des widgets :
wp option get siteurl
wp option get home
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%' OR option_value LIKE '%base64_decode%' OR option_value LIKE '%eval(%';
Regardez aussi les options qui ne correspondent à aucune extension installée et les extraits des extensions de type « snippets » : Sucuri a décrit en novembre 2024 un malware qui se recopiait dans toutes les extensions actives et dans un extrait WPCode.
wp_users et wp_usermeta. Listez tous les comptes, pas seulement ceux affichés dans l'administration, qu'un filtre peut masquer :
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
SELECT ID, user_login, user_email, user_registered FROM wp_users ORDER BY user_registered DESC;
Supprimez les comptes inconnus en réattribuant leurs contenus, et vérifiez dans wp_usermeta que la clé wp_capabilities des autres n'accorde pas un rôle indu. Un compte qui revient après suppression signale une porte dérobée.
wp_posts. Les scripts de redirection et les liens de spam se logent dans le contenu des articles, des pages et des widgets de bloc :
SELECT ID, post_title, post_type FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%<iframe%';
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'post' AND post_date > '2026-08-01';
La première requête liste les contenus à examiner un par un (certains scripts sont légitimes : vidéo intégrée), la seconde repère une injection massive d'articles. Nettoyez ligne par ligne, avec une sauvegarde avant chaque série de modifications.
Examiner les tâches planifiées
Un malware peut se réinstaller toutes les vingt-quatre heures grâce à une tâche cron WordPress : c'est ce que faisait le réinfecteur décrit par Sucuri en 2024. Listez les événements planifiés, supprimez les crochets qui ne correspondent à aucune extension, puis vérifiez les tâches cron du système en SSH, où un pirate peut avoir ajouté une ligne qui retélécharge sa porte dérobée :
wp cron event list --fields=hook,next_run_relative,recurrence
wp cron event delete nom-du-crochet-inconnu
crontab -l
Repérer les fichiers récents et les chaînes typiques du malware
Après les zones connues, un balayage général trouve ce qui reste. Premier critère, la date des fichiers modifiés dans les jours précédant les symptômes :
find . -type f -mtime -30 -not -path './wp-content/cache/*' | sort
find . -type f -newermt '2026-08-20' -name '*.php'
Un pirate peut falsifier cette date avec touch : l'absence de fichier récent ne prouve rien. Second critère, le contenu. Le guide de Sucuri liste les fonctions présentes dans la majorité des injections : eval, base64_decode, gzinflate, gzuncompress, str_rot13, preg_replace avec le modificateur /e, assert, exec, system, move_uploaded_file. Les combinaisons les plus fréquentes donnent peu de faux positifs :
grep -rlE 'eval\((base64_decode|gzinflate|gzuncompress|str_rot13)' --include='*.php' .
grep -rlE '(eval|assert|system|exec)\(\$_(POST|GET|REQUEST|COOKIE)' --include='*.php' .
Lisez chaque fichier trouvé : une extension légitime peut utiliser base64_decode pour une image, pas une ligne de trois mille caractères sans espace. L'analyse des journaux du serveur permet ensuite de dater l'intrusion et de retrouver le premier fichier appelé par le pirate, donc la faille utilisée.
Le malware qui se réinstalle
Les infections récentes sont conçues pour survivre à un nettoyage partiel. Sucuri décrit un « réinfecteur » PHP qui, à partir d'une seule copie oubliée dans une extension active ou dans la base, se recopie dans toutes les autres extensions, recrée un administrateur au nom hexadécimal et se relance par une tâche cron. Un site réinfecté quelques heures après votre intervention n'est pas une nouvelle attaque mais un reste de la précédente : reprenez toutes les étapes avant la remise en ligne.
Fermer la porte : mises à jour, comptes, clés et permissions
Un site nettoyé mais non corrigé sera repiraté par le même robot, parfois le jour même. D'après le rapport Patchstack sur l'état de la sécurité WordPress en 2026, 11 334 vulnérabilités ont été publiées en 2025, 91 % dans les extensions, 9 % dans les thèmes, six dans le cœur, et la moitié environ des failles à fort impact sont exploitées dans les 24 heures. La faille est donc presque toujours une extension non mise à jour, un mot de passe faible ou un formulaire d'envoi de fichiers mal protégé.
- Mettre tout à jour : WordPress, thèmes, extensions, puis la version de PHP proposée par l'hébergeur, avec les mises à jour automatiques pour les extensions que vous ne suivez pas.
- Refaire le tour des comptes : un administrateur par personne réelle, le rôle Éditeur ou Auteur pour les autres, suppression des comptes inactifs et des mots de passe d'application inconnus.
- Renouveler les clés de sécurité : les constantes
AUTH_KEY,SECURE_AUTH_KEY,LOGGED_IN_KEY,NONCE_KEYet leurs « salts » signent les cookies de connexion ; les changer invalide toutes les sessions ouvertes, celle du pirate comprise. Générateur officiel :api.wordpress.org/secret-key/1.1/salt/, ou la commandewp config shuffle-salts. - Remettre les permissions : « Hardening WordPress » recommande
755pour les dossiers,644pour les fichiers, et400ou440pourwp-config.php, lisible seulement par vous et le serveur web. - Désactiver l'éditeur de fichiers :
define( 'DISALLOW_FILE_EDIT', true );danswp-config.phpretire l'éditeur de thèmes et d'extensions, que les pirates utilisent pour exécuter du code dès qu'ils ont un compte administrateur. - Activer la double authentification pour tous les administrateurs, par exemple avec l'extension Two Factor publiée par WordPress.org (version 0.16.0, mars 2026) : codes par application, codes de secours, courriel.
- Changer les mots de passe une seconde fois, après le nettoyage : WordPress.org le recommande, car ceux changés pendant l'infection ont pu être interceptés.
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 440 wp-config.php
Demander le réexamen à Google et lever la blacklist
Une fois le site propre et de nouveau en ligne, Google ne retire pas l'avertissement de lui-même. Dans Search Console, rapport « Problèmes de sécurité », demandez un examen. Google exige d'avoir auparavant nettoyé le site, corrigé la vulnérabilité et remis le site en ligne, et d'expliquer ce qui a été trouvé et fait, par exemple la suppression des pages injectées et la mise à jour de l'extension vulnérable. Délais indiqués par Google : quelques jours pour un logiciel malveillant, environ un jour pour du hameçonnage, jusqu'à plusieurs semaines pour du spam injecté ; après un examen favorable, les avertissements disparaissent sous 72 heures.
Ne demandez l'examen qu'une fois le nettoyage terminé : un refus allonge la demande suivante. Vérifiez avec Safe Browsing, SiteCheck et un mobile en navigation privée que plus rien ne s'affiche. Pour les autres listes noires (antivirus, Bing), notre guide pour retirer un site de la blacklist Google détaille les procédures.
Surveiller le site après le nettoyage
Les deux premières semaines sont décisives : un reste de porte dérobée se manifeste en général dans ce délai. Lancez une analyse Wordfence ou Sucuri Security chaque jour pendant quinze jours, puis chaque semaine, et relancez wp core verify-checksums et wp plugin verify-checksums --all après chaque mise à jour. Surveillez la liste des utilisateurs, les options siteurl et home et les fichiers de la racine.
La méthode la plus efficace reste la surveillance d'intégrité des fichiers : un outil calcule l'empreinte de chaque fichier et alerte dès qu'un fichier change hors d'une mise à jour. Ajoutez des sauvegardes quotidiennes stockées hors du serveur et conservées plusieurs semaines.
Enfin, si le site collecte des données personnelles (formulaires, comptes clients, commandes), l'intrusion peut constituer une violation de données au sens du RGPD : la CNIL demande une notification initiale « dans un délai de 72 heures si possible » après le constat, et l'information des personnes en cas de risque élevé. Conservez le journal du nettoyage et la liste des fichiers touchés.
Quand faire appel à un professionnel
Le nettoyage décrit ici prend une demi-journée à un administrateur à l'aise avec SSH, la base de données et PHP. Il devient risqué quand plusieurs sites partagent le même hébergement, quand une boutique WooCommerce ne peut pas rester hors ligne, sans accès SSH ni sauvegarde exploitable, après une réinfection, ou quand l'hébergeur impose un délai.
Dans ces cas, notre service de nettoyage de site WordPress piraté intervient ainsi : diagnostic gratuit sous 12 heures, nettoyage sous 48 heures, prix fixe de 350 € annoncé avant intervention et remboursé si le nettoyage échoue. Vous recevez un rapport avec la liste des fichiers touchés et nos recommandations. Pour la suite, l'Assurance & maintenance à 50 € par mois couvre mises à jour, sauvegardes et surveillance. Vous pouvez nous joindre au +33 7 56 81 94 38 ou par le formulaire de contact.
Sources
- WordPress.org, « FAQ My site was hacked » (26 juillet 2026) : wordpress.org
- WordPress.org, « Hardening WordPress » (7 janvier 2026) : developer.wordpress.org
- WordPress.org, « WordPress Backups » (4 juin 2026) : developer.wordpress.org
- WordPress.org, « wp-config.php », Security Keys et DISALLOW_FILE_EDIT : developer.wordpress.org
- WordPress.org, référence de
wp_is_maintenance_mode(): developer.wordpress.org - WordPress.org, générateur de clés de sécurité : api.wordpress.org
- WP-CLI, documentation des commandes
core,plugin,user,cronetconfig(6 septembre 2026) : developer.wordpress.org/cli - Google, aide Search Console, « Security Issues report » : support.google.com et « Why is my site labeled as dangerous » : support.google.com
- Google, web.dev, « Request a review » : web.dev
- Google Safe Browsing : safebrowsing.google.com
- VirusTotal, « How it works » : docs.virustotal.com
- Sucuri, SiteCheck : sitecheck.sucuri.net
- Sucuri, guide « How to Clean a Hacked WordPress Site » : sucuri.net
- Sucuri, « 2023 Hacked Website & Malware Threat Report » (juin 2024) : sucuri.net
- Sucuri, P. Srivastava, « PHP Reinfector and Backdoor Malware Target WordPress Sites » (13 novembre 2024) : blog.sucuri.net
- Sucuri, P. Srivastava, « Hidden Backdoors Uncovered in WordPress Malware Investigation » (14 février 2025) : blog.sucuri.net
- Sucuri, P. Srivastava, « Hidden Malware Strikes Again: Mu-Plugins Under Attack » (28 mars 2025) : blog.sucuri.net
- Patchstack, « State of WordPress Security in 2026 » (données au 25 février 2026) : patchstack.com
- WordPress.org, fiches des extensions Wordfence Security (9.0.0, 10 août 2026), Sucuri Security (2.7.4) et Two Factor (0.16.0, 27 mars 2026) : wordpress.org/plugins
- CNIL, « Notifier une violation de données personnelles » : cnil.fr
Votre site est touché ?
Nous intervenons sur les sites WordPress piratés, nettoyage et sécurisation compris. Décrivez votre situation, nous vous répondons.
À lire aussi

Un administrateur inconnu est apparu dans WordPress : d'où il vient et comment s'en débarrasser
Un administrateur que vous n'avez pas créé est apparu dans WordPress ? D'où vient le compte, trouver les comptes cachés, fermer les accès et nettoyer.
· 8 min de lecture

Analyser les journaux pour dater et comprendre un piratage WordPress
Où trouver les logs, quoi y chercher, les commandes grep, awk et find avec exemples, et comment reconstituer la chronologie d'un piratage WordPress.
· 10 min de lecture

Faux CAPTCHA et ClickFix sur les sites WordPress piratés : détecter et supprimer la fausse vérification
Votre site WordPress affiche un faux CAPTCHA ou une fausse vérification Cloudflare (ClickFix) ? Où se cache l'injection, comment la voir et la supprimer.
· 9 min de lecture

Google Ads suspendu pour « site compromis » : comment lever la suspension
Annonces refusées ou compte Google Ads suspendu pour « site infecté » ? La règle, le nettoyage, le réexamen Search Console, l'appel et les délais.
· 8 min de lecture