Une récente alerte de sécurité a conduit au retrait en urgence d’une trentaine d’extensions WordPress populaires éditées par « Essential Plugin ». La raison : certaines de ces extensions auraient été rachetées et utilisées pour injecter du code malveillant sur les sites qui les avaient installées.
Le scénario observé est particulièrement discret : les visiteurs provenant de Google sont redirigés vers un site frauduleux, tandis que l’administrateur du site ne voit rien d’anormal. Cette technique, appelée redirection conditionnelle, est conçue pour rester invisible tout en détournant le trafic naturel issu des moteurs de recherche.
Même si votre site semble fonctionner normalement, il est essentiel de vérifier certains fichiers sensibles afin de détecter toute modification anormale.
Dans cet article, nous allons voir comment contrôler votre site WordPress étape par étape, en distinguant clairement ce qui est normal de ce qui doit vous alerter.
Comprendre le risque : une redirection invisible pour les visiteurs Google
Le code malveillant injecté sur les sites compromis analyse généralement la provenance du visiteur grâce à la variable :
$_SERVER['HTTP_REFERER']
Cette variable indique depuis quel site l’utilisateur arrive.
Exemple de comportement malveillant :
if (strpos($_SERVER['HTTP_REFERER'], 'google') !== false) {
header('Location: https://site-frauduleux.com');
exit;
}
Avec ce système :
- un visiteur venant de Google est redirigé ;
- un visiteur arrivant directement sur le site ne voit rien ;
- l’administrateur peut ne jamais détecter l’anomalie.
C’est précisément ce qui rend cette attaque dangereuse.
Étape 1 : vérifier le fichier wp-config.php
Le fichier wp-config.php est le cœur de la configuration WordPress. Il contient les accès à la base de données et les paramètres critiques du site.
Un fichier sain contient généralement :
define('DB_NAME', '...');
define('DB_USER', '...');
define('DB_PASSWORD', '...');
define('DB_HOST', 'localhost');
Ainsi que les clés de sécurité :
define('AUTH_KEY', '...');
define('SECURE_AUTH_KEY', '...');
Ce qui est normal dans wp-config.php
- les constantes
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST - les clés
AUTH_KEY,SECURE_AUTH_KEY, etc. - éventuellement quelques constantes WordPress comme :
define('WP_DEBUG', false);
Ces éléments font partie du fonctionnement normal du CMS.
Ce qui n’est pas normal
Vous devez être vigilant si vous trouvez :
$_SERVER['HTTP_REFERER']
ou :
header('Location: ...');
ou encore :
eval(base64_decode(...));
Ces lignes n’ont rien à faire dans un wp-config.php standard.
Signaux suspects :
- redirection HTTP
- appel à
eval() - présence de
base64_decode() - inclusion de fichiers distants
- référence à Google ou à un moteur de recherche
Par exemple :
if (strpos($_SERVER['HTTP_REFERER'], 'google') !== false) {
wp_redirect('https://...');
}
==> Ce code est suspect et doit être supprimé immédiatement.
Étape 2 : vérifier le fichier functions.php
Le fichier functions.php du thème est souvent utilisé par les attaquants car il est chargé automatiquement par WordPress.
Ce qui est normal dans functions.php
Des fonctions liées au thème :
add_theme_support('post-thumbnails');
ou :
register_nav_menus();
Ces fonctions servent à configurer le thème et sont normales.
Ce qui n’est pas normal
Si vous trouvez :
wp_redirect(...)
ou :
header('Location: ...')
ou :
strpos($_SERVER['HTTP_REFERER'], 'google')
cela doit attirer votre attention.
Exemple :
if (strpos($_SERVER['HTTP_REFERER'], 'google') !== false) {
wp_redirect('https://site-externe.com');
exit;
}
==> Ce comportement est anormal.
Étape 3 : rechercher du code obfusqué
Les pirates masquent souvent leur code avec des fonctions comme :
base64_decode()
eval()
gzinflate()
str_rot13()
Exemple suspect :
eval(base64_decode("aWYgK..."));
Pourquoi c’est dangereux ?
Le code est encodé pour être illisible, puis exécuté dynamiquement.
==> Dans les fichiers du thème ou dans wp-config.php, ce n’est pas normal.
Étape 4 : rechercher les redirections dans tous les fichiers
La redirection malveillante n’est pas forcément dans wp-config.php. Elle peut être cachée dans :
functions.phpheader.php- un plugin
- un fichier PHP du thème
Pour rechercher rapidement :
grep -R "HTTP_REFERER" .
grep -R "wp_redirect" .
grep -R "base64_decode" .
grep -R "eval(" .
Résultat normal :
aucune occurrence suspecte, ou uniquement dans des plugins connus et légitimes.
Résultat anormal :
des redirections vers des domaines inconnus ou du code obfusqué.
Étape 5 : vérifier les plugins installés
La source du problème est souvent un plugin compromis.
Ce qui est normal :
- plugins installés depuis le répertoire officiel WordPress
- extensions maintenues et régulièrement mises à jour
Ce qui n’est pas normal :
- plugin désactivé mais encore présent sur le serveur
- plugin inconnu
- extension non mise à jour depuis longtemps
- code inhabituel dans le dossier du plugin
Si un plugin est suspect :
- désactivez-le ;
- supprimez-le ;
- réinstallez une version propre.
Étape 6 : vérifier la base de données
Certaines redirections sont injectées dans la base de données, notamment dans la table wp_options.
Ce qui est normal :
- URL du site
- paramètres du thème
- options des extensions
Ce qui n’est pas normal :
- scripts JavaScript injectés
- URLs externes inconnues
- code encodé en base64
Par exemple :
<script>window.location='https://...'</script>
==> Ce type de contenu est suspect.
Étape 7 : contrôler les comptes administrateurs
Une extension compromise peut créer un compte administrateur caché.
Ce qui est normal :
vos comptes administrateurs connus.
Ce qui n’est pas normal :
un compte inconnu avec les droits administrateur.
Si vous voyez un utilisateur que vous n’avez pas créé :
- supprimez-le ;
- changez tous les mots de passe ;
- vérifiez les journaux d’accès.
Que faire si vous trouvez du code suspect ?
Si vous identifiez une redirection, du code obfusqué ou un plugin compromis :
- supprimez immédiatement le code suspect ;
- remplacez les fichiers WordPress par une version saine ;
- changez les mots de passe :
- WordPress
- FTP
- base de données
- régénérez les clés de sécurité WordPress ;
- réinstallez les plugins depuis une source officielle.
Conclusion
La menace évoquée dans l’actualité repose sur une technique furtive : rediriger uniquement les visiteurs provenant de Google, sans éveiller les soupçons de l’administrateur.
La bonne nouvelle, c’est qu’en vérifiant :
wp-config.phpfunctions.php- les plugins
- la base de données
- les comptes administrateurs
vous pouvez détecter rapidement les signes d’une compromission.
Retenez surtout ceci :
Normal :
- configuration WordPress classique
- fonctions natives du thème
- plugins connus
Anormal :
HTTP_REFERERwp_redirect()eval(base64_decode())- redirections externes
- comptes administrateurs inconnus
Ces vérifications simples permettent de sécuriser votre site avant que le trafic et le référencement ne soient impactés.
N’hésitez pas à me dire en commentaires si vous avez trouvé des fichiers ou codes suspects.
