Aller au contenu
SécuritéWP — Accueil
Sécurité WordPress

Mon site WordPress redirige vers un site de spam : comment l'arrêter

Publié le · 12 min de lecture· Par

Mon site WordPress redirige vers un site de spam : comment l'arrêter
Sommaire
  1. Comment se manifeste une redirection malveillante sur WordPress
  2. Reproduire la redirection avant de chercher le code
  3. Où chercher le code de redirection, dans l'ordre
  4. Les campagnes de redirection documentées : Balada Injector, Sign1, DollyWay
  5. Nettoyer la redirection étape par étape
  6. Fermer la faille qui a permis l'injection
  7. Vérifier que la redirection a disparu
  8. Sources

En bref : si votre site WordPress redirige vers un site de spam, un code malveillant a été injecté dans vos fichiers ou dans votre base de données. Il se déclenche souvent sous conditions (mobile, visiteurs venus de Google, une seule fois par session), d'où le fait que vous ne voyiez rien en tant qu'administrateur. Pour l'arrêter : sauvegardez, cherchez le code dans l'ordre (options siteurl et home, articles et widgets, wp-config.php, .htaccess, fichiers du thème, mu-plugins, extensions), supprimez-le, fermez la faille d'entrée, puis vérifiez depuis l'extérieur.

Comment se manifeste une redirection malveillante sur WordPress

Un client vous écrit : « votre site m'envoie sur une page de paris en ligne ». Vous ouvrez le site, connecté à l'administration : tout est normal. Quelques jours plus tard, Google affiche un avertissement ou votre trafic s'effondre.

Ce décalage n'est pas un hasard. Google décrit ce piratage dans ses règles anti-spam : du code injecté « redirige certains utilisateurs vers des pages nuisibles ou de spam », et « le type de redirection dépend parfois du référent, de l'agent utilisateur ou de l'appareil ». Le code choisit ses victimes pour rester invisible : c'est une forme de cloaking. Les conditions observées se combinent souvent.

ConditionCe que fait le codeExemple documenté
RéférentNe redirige que les visiteurs venus de Google, Bing, Facebook, Instagram ou Yahoo. Le propriétaire, qui tape l'adresse, ne voit rien.Sign1 (Sucuri, 2024) : « si le référent ne correspond pas à ces grands sites, le malware ne s'exécute pas ».
AppareilNe redirige que les navigateurs mobiles, repérés par leur agent utilisateur.Règles .htaccess conditionnelles décrites par Sucuri.
CookiePose un cookie à la première visite et ne redirige plus ensuite.Sign1 pose le cookie f084 ; un functions.php analysé en janvier 2025 teste le cookie MkQQ.
Connexion et robotsIgnore les utilisateurs connectés (donc l'administrateur), Googlebot et les scanners.Même code de janvier 2025 ; le redirect.php trouvé dans mu-plugins en mars 2025 détecte les robots.
Clic ou délaiNe redirige qu'au premier clic, ou quelques secondes après l'affichage.DollyWay (GoDaddy, 2025) redirige au clic ; le faux Google Tag Manager de juillet 2025 après « environ 4 à 5 secondes ».

Un site qui semble sain depuis votre poste d'administrateur peut donc rediriger tous les visiteurs venus de Google sur mobile. Avant de chercher le code, reproduisez la redirection.

Reproduire la redirection avant de chercher le code

Sur un téléphone, en navigation privée et déconnecté de WordPress, cherchez votre site dans Google et cliquez sur le résultat, puis recommencez après avoir effacé les cookies. Depuis un terminal, simulez un mobile venu de Google : une ligne Location: vers un domaine inconnu signe une redirection côté serveur (.htaccess ou PHP).

curl -I -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) Mobile/15E148 Safari/604.1" \
  -e "https://www.google.com/" https://www.votre-site.fr/

Si les en-têtes sont propres, la redirection se fait en JavaScript : récupérez le HTML avec curl -s et les mêmes options, puis cherchez les balises <script qui n'ont rien à y faire. Complétez par un scanner externe (Sucuri SiteCheck, VirusTotal) et par le rapport « Problèmes de sécurité » de la Search Console.

Sauvegardez avant de toucher à quoi que ce soit

Faites une copie complète des fichiers et de la base, même infectés. WordPress.org le recommande : cette copie sert de preuve, permet de comparer et vous sauve si le nettoyage casse quelque chose. Si vous découvrez l'infection à l'instant, lisez d'abord site WordPress piraté : que faire dans la première heure.

Où chercher le code de redirection, dans l'ordre

Du plus fréquent au plus long à vérifier. Commandes en SSH à la racine du site ; requêtes SQL via phpMyAdmin, Adminer ou wp db query, avec votre préfixe de tables.

Les options siteurl et home dans wp_options

Ces deux options définissent l'adresse du site. Si un pirate y place un domaine tiers ou une balise script, chaque page charge son code. Sucuri cite ces « détournements de siteurl » parmi les techniques de Balada Injector.

SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');

La valeur attendue est votre adresse, sans rien d'autre. Sinon : wp option update siteurl 'https://www.votre-site.fr', puis la même commande pour home. Les constantes WP_HOME et WP_SITEURL de wp-config.php, documentées par WordPress.org, verrouillent ces valeurs.

Les articles, widgets et réglages d'extensions avec un script injecté

La base est le second lieu favori, au-delà des articles. Sign1 vivait dans des widgets HTML personnalisés ; le faux Google Tag Manager de juillet 2025 était stocké dans wp_options (option ihaf_insert_body d'une extension d'insertion de code) et dans wp_posts ; la vague tagDiv de Balada écrivait dans l'option td_live_css_local_storage, la vague Popup Builder dans la clé sg_popup_scripts de wp_postmeta ; DollyWay utilise des extraits WPCode.

SELECT ID, post_title, post_type FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%<iframe%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%' OR option_value LIKE '%eval(%' OR option_value LIKE '%fromCharCode%';
SELECT post_id, meta_key FROM wp_postmeta WHERE meta_value LIKE '%<script%';

Un script légitime (statistiques, chat) apparaîtra aussi : vérifiez le domaine chargé, et méfiez-vous d'un identifiant Google Tag Manager que vous ne reconnaissez pas.

wp-config.php

Lisez-le en entier. Une ligne include ou require ajoutée en tête, souvent vers un fichier d'uploads, un bloc eval(base64_decode(...)) ou une clé de sécurité remplacée par du code signent une infection. Comparez avec wp-config-sample.php de la même version.

Le fichier .htaccess

Le plus ancien vecteur de redirection conditionnelle. Sucuri documente des règles qui testent le référent et renvoient les visiteurs venus des moteurs de recherche vers un domaine tiers, et des directives ErrorDocument 404 pointant vers un script externe :

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*(google|bing|yahoo|msn|ask).* [NC]
RewriteRule .* http://domaine-malveillant.example/ [R,L]

Un site standard n'a besoin que du bloc # BEGIN WordPress ... # END WordPress. Cherchez aussi les .htaccess des sous-dossiers et d'uploads : find . -name ".htaccess".

WordPress.org cite ces fichiers comme cibles privilégiées : une modification y affecte toutes les pages. Le cas analysé par Sucuri en janvier 2025 était injecté dans le functions.php du thème : test du cookie, exclusion des utilisateurs connectés et des robots, puis redirection vers deux domaines.

grep -rn -E "eval\(|base64_decode|gzinflate|str_rot13|fromCharCode|header\(.Location" wp-content/themes/ wp-config.php index.php

Le dossier mu-plugins

Les extensions « must-use » se chargent sans apparaître dans la liste des extensions ni pouvoir être désactivées. Sucuri y a décrit en mars 2025 un redirect.php qui renvoyait les visiteurs vers un site tiers, un index.php qui exécutait du code distant et un injecteur JavaScript ; DollyWay s'y installe aussi. Listez le dossier (ls -la wp-content/mu-plugins/) et justifiez chaque fichier.

Les extensions inconnues et les fichiers .js modifiés

Les campagnes déposent des extensions déguisées : wp-felody.php dans la vague Popup Builder, wp-zexit dans la vague tagDiv. Comparez wp plugin list avec ce que vous avez installé. Un script obscurci ajouté à la fin d'un fichier JavaScript légitime passe aussi inaperçu ; Balada affectionne String.fromCharCode.

find wp-content -name "*.js" -mtime -30 -type f
grep -rl -E "fromCharCode|atob\(|unescape\(|document\.location" wp-content/themes/ wp-content/plugins/

Deux commandes qui font gagner des heures

wp core verify-checksums --include-root signale chaque fichier du cœur modifié (« File doesn't verify against checksum ») et les fichiers étrangers à la racine. find . -type f -newermt "2026-08-25" liste les fichiers modifiés depuis l'apparition des symptômes. Voir notre guide sur la surveillance de l'intégrité des fichiers.

Les campagnes de redirection documentées : Balada Injector, Sign1, DollyWay

Identifier la famille de votre infection aide à ne rien oublier : chaque campagne a ses cachettes et ses mécanismes de persistance.

Balada Injector

Suivie par Sucuri depuis 2017, cette campagne a compromis plus d'un million de sites WordPress (synthèse Sucuri, 2023-2024). Les visiteurs sont envoyés vers de fausses pages d'assistance, de fausses loteries et des pages de notifications avec un faux CAPTCHA (« Please Allow to verify, that you are not a robot »). Les opérateurs exploitent les failles d'extensions et de thèmes dès leur publication et testent une liste de 74 mots de passe ; ils injectent siteurl, les options, les articles et des fichiers PHP ou JavaScript, créent des comptes administrateurs et déposent des portes dérobées. En septembre 2023, Sucuri a détecté Balada sur plus de 17 000 sites, dont plus de 9 000 via la faille CVE-2023-3169 de tagDiv Composer (thème Newspaper) ; à partir du 13 décembre 2023, plus de 6 200 sites ont été touchés via la faille CVE-2023-6000 de Popup Builder, corrigée en 4.2.3 deux jours plus tôt.

Sign1

Décrite par Sucuri en 2024, Sign1 a été détectée sur plus de 39 000 sites en six mois. Le code JavaScript, encodé en XOR, vit dans des widgets HTML personnalisés ou dans une extension légitime d'insertion de code (Simple Custom CSS and JS). Il ne s'exécute que pour les visiteurs venus de Google, Facebook, Yahoo ou Instagram, une seule fois grâce à un cookie, et charge son code depuis des adresses qui changent toutes les dix minutes. Point d'entrée observé : la force brute.

DollyWay

GoDaddy a publié en mars 2025 l'analyse de cette opération active depuis 2016 : plus de 20 000 sites compromis en huit ans, plus de 10 000 encore infectés en février 2025 et environ 10 millions d'affichages de pages piégées par mois. Les visiteurs sont redirigés au premier clic vers de faux sites de rencontre, de paris, de cryptomonnaie et de loteries. DollyWay se réinstalle à chaque chargement de page depuis des mu-plugins, des fichiers d'extensions actives et des extraits WPCode, supprime les malwares concurrents et désactive les extensions de sécurité (Wordfence, MalCare, WP Cerber et d'autres). Sa signature : define('DOLLY_WAY', 'World Domination');.

Si votre infection ressemble plutôt au malware Freevar, la méthode reste la même.

Nettoyer la redirection étape par étape

Une fois le code localisé, ne vous arrêtez pas au premier fichier trouvé : une campagne dépose plusieurs copies et au moins une porte dérobée.

  1. Passez le site en maintenance le temps du nettoyage, pour ne plus exposer vos visiteurs.
  2. Corrigez siteurl et home, puis supprimez les scripts injectés dans wp_posts, wp_options et wp_postmeta. Sur beaucoup d'articles, UPDATE wp_posts SET post_content = REPLACE(post_content, '<script src="https://domaine-malveillant.example/x.js"></script>', '') est plus sûr qu'une édition manuelle, après essai sur une copie.
  3. Remplacez le cœur de WordPress par une copie neuve de la même version (wp core download --force --version=X.Y.Z), puis relancez wp core verify-checksums. WordPress.org conseille de remplacer wp-admin et wp-includes par transfert de fichiers, le bouton de réinstallation n'effaçant pas les fichiers ajoutés.
  4. Réinstallez le thème et chaque extension depuis WordPress.org ou l'éditeur, dans la même version. Supprimez tout ce que vous ne reconnaissez pas, thèmes inactifs compris.
  5. Nettoyez .htaccess en le remplaçant par le bloc standard, et supprimez les .htaccess inattendus des sous-dossiers.
  6. Videz mu-plugins de tout fichier injustifiable et cherchez les fichiers PHP dans uploads (find wp-content/uploads -name "*.php") : il ne devrait y en avoir aucun.
  7. Supprimez les comptes administrateurs inconnus et les mots de passe d'application, puis déconnectez toutes les sessions en régénérant les clés de sécurité de wp-config.php. Relisez les tâches planifiées : wp cron event list.
  8. Changez tous les mots de passe : WordPress, FTP ou SFTP, base de données, hébergement. WordPress.org insiste : changez-les à nouveau une fois le site propre.

Le cache peut continuer à servir la redirection

Après le nettoyage, videz tous les caches (extension, serveur : LiteSpeed, Varnish, OPcache, CDN). Une page mise en cache avec le script injecté reste servie tant qu'elle n'est pas régénérée, et vous croirez que le nettoyage a échoué.

Chaque point est détaillé dans notre guide complet pour nettoyer un site WordPress piraté.

Fermer la faille qui a permis l'injection

Nettoyer sans fermer la porte d'entrée garantit une réinfection. Les campagnes de redirection entrent par trois voies principales.

  • Une extension ou un thème vulnérable. Balada a exploité tagDiv Composer avant la version 4.2 et Popup Builder avant la 4.2.3. En juillet 2025, Wordfence a observé l'exploitation du thème Alone jusqu'à la version 7.8.3 (CVE-2025-5394, corrigée en 7.8.5) : plus de 120 900 tentatives bloquées, avec dépôt de portes dérobées et de comptes administrateurs cachés dès le 12 juillet, avant la publication de la faille. Mettez tout à jour, supprimez l'inutile, vérifiez vos extensions sur WPScan, Patchstack ou Wordfence.
  • Un mot de passe faible ou réutilisé. Sign1 est entrée par force brute ; Balada teste des mots de passe courants. Mots de passe longs et uniques, double authentification, limitation des tentatives de connexion.
  • Des identifiants volés sur votre poste. WordPress.org rappelle que l'infection commence parfois sur l'ordinateur du propriétaire, où un logiciel espion capture les accès. Analysez vos machines avant de saisir les nouveaux mots de passe.

Complétez par les durcissements classiques : define('DISALLOW_FILE_EDIT', true); dans wp-config.php, permissions 644 pour les fichiers et 755 pour les dossiers, pas de PHP exécutable dans uploads, pare-feu applicatif. Gardez les journaux du serveur : ils datent l'intrusion et révèlent la requête d'entrée.

Vérifier que la redirection a disparu

Refaites les tests du début : téléphone en navigation privée depuis un résultat Google, curl avec agent mobile et référent Google, scanners externes. Recontrôlez siteurl, les utilisateurs, mu-plugins et wp core verify-checksums le lendemain, puis une semaine plus tard : une porte dérobée oubliée se manifeste en général dans ce délai.

Si Google avait signalé le site, demandez un réexamen depuis le rapport « Problèmes de sécurité » de la Search Console, en décrivant le problème, les corrections et le résultat ; la plupart des réexamens prennent « plusieurs jours ou semaines ». Notre article sur la suppression d'une URL de la liste noire Google détaille la procédure.

Quand confier le nettoyage à un professionnel

Si la redirection revient, si vous n'avez pas d'accès SSH ou si le site est une boutique, faites intervenir une équipe qui fait cela tous les jours. Notre service site WordPress qui redirige vers des sites de spam comprend un diagnostic gratuit sous 12 heures, un nettoyage manuel sous 48 heures à prix fixe (350 €, remboursé en cas d'échec), la fermeture de la faille et un rapport listant chaque fichier touché.

Sources

  • Google Search Central, « Spam policies for Google web search », 2026 : developers.google.com
  • Google Search Console, « Security Issues report », 2026 : support.google.com
  • WordPress.org, « FAQ My site was hacked », 26 juillet 2026 : wordpress.org
  • WordPress.org, « Moving WordPress » (WP_HOME, WP_SITEURL), 2026 : developer.wordpress.org
  • WP-CLI, « wp core verify-checksums », 2026 : developer.wordpress.org
  • Sucuri, « Balada Injector: Synopsis of a Massive Ongoing WordPress Malware Campaign », 2023-2024 : blog.sucuri.net
  • Sucuri, « Balada Injector Targets Unpatched tagDiv Plugin », 6 octobre 2023 : blog.sucuri.net
  • WPScan, CVE-2023-3169 (tagDiv Composer < 4.2), 17 août 2023 : wpscan.com
  • Sucuri, « Thousands of Sites with Popup Builder Compromised by Balada Injector », janvier 2024 : blog.sucuri.net
  • The Hacker News, CVE-2023-6000 (Popup Builder), 15 janvier 2024 : thehackernews.com
  • Sucuri, « What is .htaccess Malware? », 15 mars 2024 : blog.sucuri.net
  • Sucuri, « Sign1 Malware: Analysis, Campaign History », mars 2024 : blog.sucuri.net
  • Sucuri, « Malware Redirects WordPress Traffic to Harmful Sites », 23 janvier 2025 : blog.sucuri.net
  • Sucuri, « Hidden Malware Strikes Again: Mu-Plugins Under Attack », 28 mars 2025 : blog.sucuri.net
  • Sucuri, « WordPress Redirect Malware Hidden in Google Tag Manager Code », 17 juillet 2025 : blog.sucuri.net
  • GoDaddy, « DollyWay World Domination », 17 mars 2025 : godaddy.com
  • Wordfence, « Attackers Actively Exploiting Critical Vulnerability in Alone Theme », 29 juillet 2025 : wordfence.com
  • Tenable, « CVE-2025-5394 », 15 juillet 2025 : tenable.com

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