Voir soudain des bannières étranges, des popups de casinos ou des redirections douteuses sur un site WordPress, c’est un choc. Dans la plupart des cas, le propriétaire découvre le problème par un client qui se plaint, un pic de trafic inhabituel ou un blocage par Google Safe Browsing. Quand on est en pleine urgence WordPress piraté, le vrai sujet n’est pas “qui m’en veut ?”, mais “comment je coupe immédiatement ces publicités frauduleuses sans casser tout le site, puis comment je nettoie proprement ?”.
Ce type d’attaque suit souvent le même schéma : un fichier ou une option WordPress modifié, un script inséré qui charge des publicités malicieuses depuis un domaine obscur, parfois seulement pour les visiteurs mobiles ou en provenance de Google. La difficulté vient du fait que le code est souvent discret, chiffré, ou injecté à plusieurs endroits.
L’objectif de cet article est de vous guider, pas à pas, depuis la situation d’urgence jusqu’à un état propre et durci, en gardant un équilibre entre rapidité d’intervention et minimisation des dégâts pour votre SEO et vos utilisateurs.
Comprendre ce que fait réellement l’attaque
Avant toute action brutale, il faut comprendre ce que l’on a en face. Toutes les infections ne se ressemblent pas et les réflexes ne sont pas identiques.
Dans les cas d’injection de publicités, on rencontre souvent les scénarios suivants :
Un JavaScript inconnu est chargé en pied de page, qui insère des bannières, interstitiels ou redirections.
Un iframe minuscule appelle un réseau publicitaire pirate. Des snippets de code sont injectés dans des articles, des widgets, le fichier header.php ou footer.php. La page d’accueil semble normale pour l’admin connecté, mais les visiteurs anonymes voient des pubs agressives, parfois seulement sur mobile.Un détail important : beaucoup de malwares vérifient le user agent, l’adresse IP ou le référent. Il n’est pas rare que le site paraisse sain quand on le consulte depuis son bureau, alors que les visiteurs en France, sur mobile, sont bombardés de popups. D’où l’importance de tester avec un autre navigateur, en navigation privée, voire via un VPN.
Si vous avez accès à Google Search Console, regardez si des messages de type “Contenu trompeur” ou “Logiciels malveillants” apparaissent. Ce n’est pas toujours immédiat, mais si Google a déjà détecté l’infection, vous savez que le problème est sérieux et impacte la visibilité du site.
Réflexes d’urgence pour limiter la casse
Quand on gère une urgence WordPress piraté, la tentation est grande de tout éteindre d’un coup. Parfois c’est la meilleure solution, mais pas systématiquement. L’idée est de couper l’impact visible et la propagation, tout en se laissant la possibilité d’analyser.
Liste courte des actions immédiates, à faire dès que possible, dans cet ordre :
- Changer les mots de passe critiques (admin WordPress, FTP/SFTP, base de données, compte d’hébergement). Activer temporairement un mode maintenance côté serveur ou via un simple fichier index.html propre, si les publicités sont trop agressives. Sauvegarder l’intégralité du site tel qu’il est (fichiers + base de données), même infecté, pour analyse ultérieure. Noter la date et l’heure des premiers symptômes connus pour recouper avec les journaux de logs. Prévenir les parties prenantes essentielles (client, direction, équipe marketing) pour éviter des actions contradictoires.
Cette première phase permet deux choses : couper au maximum l’exposition des visiteurs au contenu frauduleux, et vous donner une “photo” technique de l’état du site au moment de l’attaque. Cette copie pourra être explorée sur un environnement isolé, sans pression.
La question du mode maintenance mérite nuance. Pour un petit site https://gardewp.fr/ vitrine, bloquer l’accès pendant quelques heures est souvent acceptable. Pour un e‑commerce qui tourne à plusieurs milliers d’euros par jour, on cherchera plutôt à neutraliser les scripts malicieux tout en gardant le catalogue accessible. Dans ces cas, une redirection temporaire du trafic vers une version statique allégée ou une landing page d’information peut être une option.
Inspecter les symptômes visibles avant de tout modifier
Beaucoup d’interventions ratées commencent par un “j’ai tout supprimé, mais les pubs reviennent”. On commence donc par observer méthodiquement.
Ouvrez la page problématique dans un navigateur, en navigation privée. Ouvrez ensuite les outils de développement (généralement touche F12), onglet Réseau, et rechargez la page. Surveillez :
Les scripts chargés depuis des domaines inconnus ou sans rapport avec votre activité.
Les iframes pointant vers des URLs suspectes. Les redirections 301 ou 302 qui ne devraient pas exister.Dans l’onglet “Éléments” ou “Inspector”, cherchez des blocs HTML qui n’ont pas lieu d’être : des div avec des classes étranges, des iframes cachées avec width:1px; height:1px;, des scripts avec du code obfusqué.
Un réflexe utile consiste à rechercher dans le code source (Ctrl+U puis Ctrl+F) des mots clés typiques de ces attaques : “adscript”, “traffic”, “onclick”, “rotator”, “popup”, ou encore des noms de domaines qui ressemblent à des régies publicitaires douteuses.
Prenez des captures d’écran et copiez les URLs suspectes. Elles vous aideront ensuite à confirmer que vous avez bien éradiqué l’attaque.

Identifier le point d’entrée le plus probable
Couper les publicités frauduleuses en surface ne suffit pas. Sans compréhension du point d’entrée, un malware réinsère son code en quelques minutes.
Les vecteurs fréquents que je rencontre en intervention :
Un plugin obsolète, en particulier des constructeurs de pages, des sliders, des plugins de formulaires ou d’upload de fichiers.
Un thème acheté sur une place de marché non maintenue, ou un thème nulled téléchargé illégalement. Un accès admin partagé ou vendu sur des forums, suite à un mot de passe faible ou réutilisé. Une faille dans l’hébergement lui‑même, notamment sur des serveurs mutualisés mal isolés.Pour avancer, vérifiez d’abord l’historique des mises à jour. Dans le tableau de bord WordPress, section “Mises à jour”, regardez depuis combien de temps les plugins et thèmes n’ont pas été mis à jour. Les éléments laissés de côté pendant plusieurs mois ou années sont des suspects prioritaires.
Côté serveur, examinez si possible les logs d’accès web autour de la date présumée du piratage. Cherchez des requêtes inhabituelles, par exemple des accès vers wp-admin/admin-ajax.php avec des paramètres étranges, des uploads sur des scripts non connus, ou des connexions FTP venant de pays où vous n’avez pas d’équipe.
Il n’est pas rare qu’on ne trouve jamais le point d’entrée exact, surtout si l’attaque est ancienne. Dans ce cas, on se concentre sur le nettoyage le plus strict possible et sur un durcissement général du site.
Sauvegardes : quand restaurer, quand s’en méfier
La solution la plus rapide peut sembler être “on restaure une vieille sauvegarde saine”. C’est parfois pertinent, mais seulement si l’on sait à peu près quand a commencé la compromission. Restaurer une sauvegarde qui contient déjà le malware, puis faire confiance à cette restauration, est l’un des pièges les plus fréquents.
Si vous disposez de sauvegardes quotidiennes sur plusieurs semaines, essayez de retrouver le dernier jour où le site ne présentait aucun symptôme, en recoupant avec les logs et les signalements d’utilisateurs. Restaurer à J‑1 ou J‑2 est rarement sûr. On vise souvent au minimum une ou deux semaines en arrière, parfois plus.
Dans les cas où le site a beaucoup évolué (nouveaux contenus, commandes, commentaires), cette restauration brutale peut faire perdre des données précieuses. On peut alors envisager une approche hybride : restaurer une sauvegarde ancienne sur un environnement de test, comparer les fichiers et la base de données avec la version actuelle, puis ne réinjecter que les différences saines. C’est plus technique, mais sur un gros site, cela fait la différence.
Nettoyage des fichiers WordPress : ce qui doit être réinstallé, ce qui doit être examiné
Pour couper net les injections de publicités, il faut assainir les fichiers PHP et JavaScript qui structurent le site.
En pratique, le noyau WordPress (“core”) est rarement modifié par l’attaquant, car cela se voit vite. Quand c’est le cas, c’est généralement sur wp-config.php ou dans le dossier wp-includes avec des fichiers aux noms très proches des fichiers légitimes. Par précaution, voici une stratégie qui fonctionne bien sur la plupart des hébergements partagés :
Télécharger une version propre de WordPress correspondant à votre version installée, depuis wordpress.org.
Remplacer intégralement les dossiers wp-admin et wp-includes par les dossiers propres, en écrasant les fichiers existants. Ne conserver que le fichier wp-config.php à partir de la version actuelle, en vérifiant qu’aucune ligne suspecte n’y a été ajoutée (inclusion de fichier inconnu, appel à base64_decode, etc.). Vérifier le contenu de wp-content, car c’est là que se cachent le plus souvent les ajouts malveillants.Le dossier wp-content contient notamment les thèmes (themes), les plugins (plugins) et les uploads (uploads). Les publicités injectées se nichent fréquemment dans un fichier de thème enfant, dans functions.php ou dans footer.php. Elles peuvent aussi être insérées dans un plugin déjà présent.
Les fichiers ajoutés récemment, aux noms aléatoires (par exemple class-wp-xyz.php ou module-temp123.php), sont des candidats évidents. Utilisez la vue “tri par date” dans votre client FTP ou sur le manager de fichiers de l’hébergeur pour repérer les modifications datant des jours ou heures précédant les symptômes.

Quand un plugin ou un thème est disponible sur un dépôt officiel ou un market fiable, le meilleur réflexe consiste à :
Supprimer complètement le dossier du plugin ou du thème sur le serveur.
Télécharger une archive propre depuis la source officielle. Réinstaller à partir de cette archive, puis reconfigurer si nécessaire.Cette approche élimine d’un coup toute modification cachée, à condition que la version propre ne soit pas elle‑même vulnérable.
Là où les pubs frauduleuses aiment se cacher
Les développeurs de malwares publicitaires savent exactement où les intégrateurs mettent les scripts de tracking ou de monétisation. Ils se calent au même endroit.
Voici une courte liste d’endroits à inspecter systématiquement quand on enquête sur une injection de publicités :
- Les fichiers header.php et footer.php des thèmes (parent et enfant). Les widgets “Texte” ou “HTML personnalisé” dans Apparence > Widgets. Le champ “Scripts de suivi” ou “Code de pied de page” dans les options du thème ou du plugin de tracking. La table wp_options, surtout les champs siteurl, home, widget_*, active_plugins et les options chargées automatiquement (autoload = yes). Les fichiers .js ajoutés dans wp-content/uploads ou dans un sous-dossier “assets” qui n’en contenait pas auparavant.
Dans un cas concret sur un site média avec plusieurs centaines de milliers de visites mensuelles, l’injection se situait uniquement dans un widget texte qui n’apparaissait que sur les articles “santé”. L’attaquant avait reproduit le style d’un bloc publicitaire légitime, mais chargeait une régie pirate sur certains navigateurs. Sans inspection fine des widgets, le code serait passé inaperçu.
Explorer et nettoyer la base de données
Les injections de publicités ne se limitent pas aux fichiers. Beaucoup d’attaquants préfèrent insérer leurs scripts dans la base de données, plus discrète et moins souvent auditée.
Connectez‑vous à votre base via phpMyAdmin, Adminer ou un outil MySQL en ligne de commande. Avant toute chose, déclenchez une sauvegarde complète de la base. Même infectée, elle vous servira de filet de sécurité si une requête de nettoyage va trop loin.
Une méthode efficace pour repérer les scripts injectés consiste à chercher des motifs suspects. Par exemple, on peut lancer des requêtes de type recherche “LIKE” sur les principales tables de contenu : wp_posts, wp_postmeta, wp_options, wp_terms, wp_termmeta.
On cherche typiquement :
Des balises
Des iframes pointant vers des domaines louches. Des chaînes obfusquées, avec beaucoup de eval(, unescape(, ou de code encodé en base64.Sur des sites d’actualité ou des blogs très actifs, il faut faire attention : tous les scripts dans le contenu ne sont pas malveillants. Certains journalistes ou éditeurs intègrent des iframes de partenaires, des widgets de réseaux sociaux, ou des codes publicitaires légitimes de Google AdSense ou d’autres régies. L’enjeu est de distinguer ces blocs autorisés des injections pirates.
Une approche raisonnable consiste à :
Lister toutes les URLs de régies publicitaires et de scripts tiers que vous utilisez volontairement (Google, partenaires, outils de tracking).
Comparer les résultats de votre recherche avec cette liste blanche. Tout ce qui n’est pas sur cette liste doit être examiné avec suspicion, puis supprimé ou neutralisé si confirmé malveillant.Quand un script malicieux est répété dans des centaines de contenus, un nettoyage manuel devient vite intenable. On peut alors s’appuyer sur des requêtes SQL de type UPDATE ... REPLACE, mais uniquement après avoir testé la requête sur un environnement de préproduction et vérifié le résultat sur un échantillon d’articles.
Faut‑il utiliser un plugin de sécurité pour nettoyer ?
Beaucoup de propriétaires de sites, en pleine urgence WordPress piraté, se ruent sur un plugin de sécurité qui promet un nettoyage automatique. Ces outils ont leur utilité, mais ils ont des limites.
Les scanners de fichiers comparent souvent les fichiers du cœur WordPress et des extensions connues contre une référence propre. Ils peuvent détecter des modifications suspectes, des fichiers ajoutés, ou du code caractéristique de certaines familles de malwares. En revanche, ils repèrent moins bien les scripts dans la base de données, les injections dans les contenus, et les attaques très spécifiques d’injection de publicités.
Sur un plan pratique, un plugin de sécurité peut vous aider à dresser une première cartographie des fichiers suspects et à durcir certains réglages (blocage de connexions par pays, limitation du nombre de tentatives de connexion, etc.). Il ne remplacera pas un audit manuel pour un nettoyage sérieux.
Par ailleurs, installer plusieurs plugins de sécurité simultanément produit souvent l’effet inverse : surcharge du serveur, conflits, faux positifs, et parfois verrouillage trop strict qui gêne aussi les utilisateurs légitimes.
Mon expérience est qu’un couple “scanner raisonnable + audit humain des zones critiques” donne un bien meilleur résultat qu’une confiance aveugle dans la promesse du “tout automatique”.
Gérer l’impact SEO et la relation avec les visiteurs
Une fois les publicités frauduleuses coupées, il reste à réparer les dégâts invisibles. Les moteurs de recherche et les navigateurs ont peut‑être déjà signalé votre site comme dangereux. Les visiteurs réguliers ont pu être redirigés vers des pages de phishing ou de scam.
Si Google Search Console affiche des avertissements de sécurité, il faut demander un examen après avoir nettoyé le site. Dans le rapport “Problèmes de sécurité”, une fois que vous êtes certain que les pages affectées sont saines, vous pouvez demander une révision. Le délai de traitement varie, en général entre quelques heures et quelques jours. Pendant ce temps, ne modifiez pas radicalement la structure du site, pour éviter de fausser l’analyse automatique.
Pour les visiteurs, une communication sobre a souvent plus d’effet qu’un silence gêné. Sur des sites à fort trafic, il n’est pas absurde de publier un court billet ou un encart informant qu’un incident a eu lieu, que la faille a été corrigée et que des mesures ont été prises pour renforcer la sécurité. Cela limite les rumeurs et montre que le problème a été pris au sérieux.
Les campagnes publicitaires légitimes peuvent être affectées aussi. Si vous utilisez une régie sérieuse (Google Ad Manager, AdSense, autre), informez‑les de l’incident si vous suspectez une contamination orpheline. Mieux vaut les prévenir en amont que découvrir un compte bloqué pour “contenu trompeur”.
Renforcer la sécurité pour éviter la rechute
Une fois l’incendie éteint, on passe à la prévention. Beaucoup de sites se font pirater une seconde fois, parfois par la même faille que la première fois, faute d’avoir traité les causes profondes.
Quelques axes concrets à prioriser :
Mises à jour. Configurez un processus clair pour maintenir WordPress, les thèmes et les plugins à jour. Sur des sites simples, l’activation des mises à jour automatiques pour les plugins courants est souvent acceptable. Sur des sites complexes, mettez en place un environnement de préproduction et un calendrier de mises à jour régulières, avec tests.
Surface d’attaque minimale. Supprimez les plugins inutilisés plutôt que de les laisser désactivés. Un plugin non utilisé mais vulnérable reste un point d’entrée. Même chose pour les thèmes : gardez le thème actif et au maximum un thème de secours, supprimez les autres.
Accès. Imposer des mots de passe robustes, activer la double authentification pour les comptes admin, limiter le nombre de comptes administrateurs au strict nécessaire. Sur certains projets, j’ai vu des dizaines de comptes admin créés pour des freelances temporaires et jamais supprimés. C’est une porte ouverte.
Hébergement. Si votre site tourne sur un vieux mutualisé sans isolation, envisagez une migration vers un hébergeur plus sérieux, avec PHP et MySQL à jour, sauvegardes automatisées et monitoring de base. Un bon hébergement ne règle pas tout, mais réduit considérablement les risques et facilite les audits.
Surveillance. Mettez en place un minimum de supervision : un outil qui vérifie régulièrement la disponibilité du site, un scanner externe qui détecte les scripts malveillants visibles, ou au moins une alerte quand les fichiers critiques changent. L’objectif est de réduire le temps entre l’infection et la détection.
Dans certains contextes très sensibles, il vaut la peine de faire réaliser un audit de sécurité complet par une équipe spécialisée, avec analyse de code, tests d’intrusion et recommandations structurées. Ce n’est pas gratuit, mais sur un site qui représente l’essentiel du chiffre d’affaires d’une entreprise, le rapport coût / risque est souvent favorable.
Quand faire appel à un professionnel
Nettoyer un WordPress piraté avec injection de publicités n’est pas toujours hors de portée d’un administrateur motivé. Mais il y a des signaux qui indiquent qu’il vaut mieux demander de l’aide.
Par exemple, si après plusieurs tentatives les publicités réapparaissent, cela signifie généralement qu’un script de réinfection persiste quelque part, ou qu’une tâche planifiée (cron) ou un accès externe continue d’injecter le code. Dans ces cas, plus on bricole, plus on risque de brouiller les pistes.
Autre cas typique : un e‑commerce ou une plateforme avec plusieurs dizaines de milliers de comptes utilisateurs. Au‑delà de la surface technique, la question légale se pose. Si des données personnelles ont été exposées, il faut parfois notifier les autorités de contrôle, prévenir les clients, documenter les mesures prises. Un prestataire habitué à gérer ce type d’incident apportera non seulement des compétences techniques, mais aussi une méthodologie de gestion de crise.
Quand un client m’appelle en panique, en parlant simplement “d’images bizarres” ou de “popups qui sortent de nulle part”, je commence presque toujours par sécuriser un périmètre minimal : copie complète, coupure des accès non essentiels, remise à zéro des identifiants. Ce sont des gestes que vous pouvez déjà appliquer de votre côté. Le reste se joue ensuite entre temps disponible, criticité du site et profondeur du problème.
Garder le contrôle, même en situation d’urgence
Un WordPress piraté avec injection de publicités frauduleuses donne l’impression que le site ne vous appartient plus vraiment. La clé, pour reprendre le contrôle, consiste à accepter qu’il s’agit d’un processus en plusieurs étapes : contenir l’attaque, observer, nettoyer, durcir.
Chaque site a ses spécificités, ses contraintes commerciales, ses héritages techniques parfois lourds. Les recettes magiques et les solutions instantanées existent rarement. En revanche, quelques principes tiennent dans la durée : ne jamais intervenir sans sauvegarde, ne jamais se contenter d’un simple “scan automatique”, et toujours chercher à comprendre où et comment le code malveillant a pu s’infiltrer.
Traiter une urgence WordPress piraté n’est jamais agréable. Mais quand on prend le temps de bien couper les publicités frauduleuses, de vérifier la base de données, de remettre au propre les fichiers clés et de renforcer la sécurité, on ressort souvent avec un site plus sain qu’avant l’attaque, et une meilleure maîtrise de son environnement technique.