secaudit.eu
Incidents

Site WordPress piraté : 12 signes à vérifier

Douze signes d’un site WordPress piraté, des administrateurs inconnus aux redirections masquées : comment vérifier chacun et que faire dans la première heure.

Par , AngelForce OÜ 8 min de lecture

Aussi en : English Deutsch Español Italiano Polski Português Türkçe

Les signes les plus nets d’un site WordPress piraté sont des comptes administrateurs que personne n’a créés, des fichiers PHP là où il ne devrait y avoir que des images, et des pages de spam ou des redirections que vous ne voyez jamais sur votre propre écran. La plupart de ces signes sont discrets à dessein : les attaquants veulent que le site continue de tourner. Ils se cachent donc des administrateurs connectés et ne montrent leur contenu qu’aux moteurs de recherche ou à certains visiteurs.

Voici 12 signes, classés selon l’endroit où ils apparaissent, chacun avec une méthode de vérification concrète. Plusieurs vérifications passent par WP-CLI, l’outil en ligne de commande de WordPress. Le gestionnaire de fichiers et l’outil de base de données de votre hébergeur font aussi l’affaire, simplement plus lentement.

Schéma : 12 signes d’un site WordPress piraté, classés selon l’endroit où on les repère
En rouge : les signes visibles de l’extérieur, par les visiteurs et Google. En bleu marine : ceux que vous trouvez sur le serveur ou dans WordPress.

WordPress piraté ? Les signes que remarquent vos visiteurs

1. Des redirections uniquement sur mobile ou depuis Google

Beaucoup d’infections ne redirigent qu’une partie des visiteurs : ceux qui naviguent sur smartphone, ou ceux qui arrivent par une recherche Google. Les règles de Google relatives au spam décrivent les deux techniques : le cloaking (un contenu différent pour les moteurs de recherche et pour les internautes) et la redirection des utilisateurs mobiles vers un domaine de spam. Vous tapez votre adresse sur un ordinateur, vous voyez un site normal, et le problème vous échappe.

Comment vérifier : sur votre téléphone, en données mobiles et sans être connecté, recherchez votre site et touchez le résultat. Depuis un terminal, comparez une requête simple avec celle d’un « visiteur mobile venant de Google » :

curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' https://example.com/
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' \
  -A 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)' \
  -e 'https://www.google.com/' https://example.com/

Un 301 ou un 302 vers un domaine tiers, dans le second résultat seulement, est un signal d’alerte sérieux. Les redirections en JavaScript n’apparaissent pas avec cette méthode : cherchez donc aussi des scripts inconnus dans le code source de la page.

2. Des avertissements du navigateur ou de l’antivirus

Un avertissement plein écran du navigateur, comme « Site trompeur en vue », ou des clients qui vous signalent que leur antivirus bloque votre site : en général, une liste de blocage a déjà repéré un malware ou du phishing sur votre domaine. Comment vérifier : consultez l’état de votre domaine dans Google Safe Browsing et demandez une capture d’écran de l’avertissement exact.

Les signes dans les résultats de recherche Google

3. Des pages de spam dans les résultats site:

Des pages injectées pour des casinos, des pharmacies ou des contrefaçons apparaissent souvent dans Google avant que vous ne les remarquiez ailleurs. Comment vérifier : recherchez site:example.com et repérez les titres en langue étrangère ou les sujets que vous n’avez jamais publiés. Ajouter des mots comme casino, viagra ou loan affine la recherche.

4. Des problèmes de sécurité dans la Search Console

Si votre site est validé dans Google Search Console, ouvrez Sécurité et actions manuelles → Problèmes de sécurité. Google y liste les problèmes qu’il a détectés, comme du contenu piraté ou un malware. Comment vérifier : assurez-vous que la propriété est bien validée et que ses messages parviennent à quelqu’un qui les lit. Un rapport vide est une bonne nouvelle, pas une preuve.

Les signes sur le serveur et le compte d’hébergement

5. Compte suspendu par l’hébergeur ou CPU saturé

Les hébergeurs suspendent les comptes qui envoient du spam, hébergent des pages de phishing ou surchargent le serveur. Un pic de CPU sans hausse de fréquentation peut trahir un mineur de cryptomonnaie ou un script de spam qui tourne sur votre compte. Comment vérifier : lisez le message de l’hébergeur en entier (il cite souvent des fichiers) et consultez les graphiques de ressources dans votre panneau de contrôle. Avec un accès SSH, ps aux --sort=-%cpu | head affiche les processus les plus gourmands.

6. Du spam sortant et une adresse IP sur liste noire

Si vos propres e-mails commencent à être rejetés, ou si vous recevez des avis de non-distribution pour des messages que vous n’avez jamais envoyés, un script envoie peut-être du spam depuis votre serveur. Comment vérifier : demandez à votre hébergeur si le volume de courrier sortant a changé, et contrôlez l’adresse IP de votre serveur avec un outil public de vérification des listes noires.

7. Des fichiers PHP dans wp-content/uploads

Le dossier uploads doit contenir des images et des documents, pas du code. Un fichier PHP à cet endroit est souvent un web shell, une porte dérobée qui permet à l’attaquant d’exécuter des commandes. Comment vérifier :

find wp-content/uploads -type f \( -iname '*.php' -o -iname '*.phtml' -o -iname '*.phar' \)

Certaines extensions placent un index.php vide dans leurs dossiers pour empêcher le listage des répertoires. Ouvrez chaque fichier trouvé et regardez ce qu’il contient réellement.

8. Des fichiers du cœur modifiés

Les attaquants aiment cacher du code dans les fichiers du cœur de WordPress, car personne ne les lit. Comment vérifier : wp core verify-checksums compare vos fichiers du cœur aux sommes de contrôle officielles de WordPress.org et signale chaque fichier qui ne correspond pas (documentation de la commande). wp plugin verify-checksums --all fait de même pour les extensions, mais seulement pour celles hébergées sur WordPress.org.

9. Des modifications inattendues de .htaccess ou de wp-config.php

Quelques lignes ajoutées dans .htaccess suffisent à rediriger les visiteurs selon leur page de provenance ou leur navigateur. Une ligne dans wp-config.php, ou un paramètre auto_prepend_file dans .user.ini, peut charger un malware avant même le démarrage de WordPress. Comment vérifier : comparez ces deux fichiers avec votre dernière sauvegarde saine, puis recherchez les techniques d’obfuscation et de préchargement les plus courantes :

grep -rnE --include='*.php' 'eval\(|base64_decode\(|gzinflate\(|str_rot13\(' . | head -50
grep -rn 'auto_prepend_file' --include='.htaccess' --include='.user.ini' --include='php.ini' .

Des extensions légitimes utilisent aussi certaines de ces fonctions : voyez les résultats comme des pistes, pas comme des verdicts.

Les signes dans le tableau de bord WordPress

10. Des administrateurs inconnus

Créer un compte administrateur est la méthode classique pour conserver un accès, et certains malwares masquent ce compte dans l’écran Utilisateurs. Comment vérifier :

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered --skip-plugins --skip-themes

Les deux options --skip empêchent le code des extensions et des thèmes classiques, y compris un malware qui s’y cacherait, de filtrer la liste. Les extensions indispensables (must-use) et wp-config.php restent chargés : vérifiez-les aussi (signes 9 et 11). Si WP-CLI affiche plus d’administrateurs que l’écran Utilisateurs, quelque chose cache un compte. Contrôlez également, dans chaque profil administrateur, les mots de passe d’application que personne dans votre équipe n’a créés.

11. Des extensions que personne n’a installées

Méfiez-vous des extensions au nom générique, sans auteur ni description, dont personne dans l’équipe ne se souvient. Les extensions indispensables, placées dans wp-content/mu-plugins, se chargent automatiquement et passent facilement inaperçues. Comment vérifier : wp plugin list affiche les extensions classiques ainsi que les extensions indispensables et les drop-ins comme object-cache.php ; wp plugin list --status=must-use,dropin n’affiche que ces deux derniers groupes.

12. Des tâches cron suspectes

Les malwares se programment souvent eux-mêmes pour revenir après leur suppression. Comment vérifier :

wp cron event list --fields=hook,next_run_relative,recurrence

Renseignez-vous sur chaque hook que vous ne pouvez rattacher à aucune extension utilisée. Les tâches cron du serveur comptent aussi : crontab -l ou la section cron de votre panneau d’hébergement les affiche.

Que faire dans la première heure

Si un ou plusieurs de ces signes indiquent un piratage, l’heure qui suit détermine ce que vous pourrez encore découvrir. Gardez votre calme et procédez dans cet ordre :

  1. Ne supprimez rien dans la précipitation. Effacer le fichier suspect ou l’administrateur inconnu détruit des preuves et élimine rarement toute l’infection, car les attaquants se ménagent souvent plusieurs portes de retour.
  2. Préservez les preuves. Réalisez un instantané ou une sauvegarde complète des fichiers et de la base de données dans l’état piraté, et téléchargez les journaux d’accès et d’erreurs du serveur web, que beaucoup d’hébergeurs ne conservent que pendant une durée limitée. Stockez la copie hors ligne et étiquetez-la comme infectée.
  3. Changez les mots de passe depuis un appareil sain. Commencez par le compte d’hébergement, puis SFTP/SSH, la base de données et chaque administrateur WordPress. Si votre propre ordinateur risque d’être compromis, utilisez-en un autre, et activez l’authentification à deux facteurs pour chaque administrateur.
  4. Contactez votre hébergeur. Il voit les journaux du serveur, les autres sites du même compte et le courrier sortant, et peut souvent isoler le site rapidement.
  5. Notez l’heure. Consignez le moment où vous avez pris connaissance du piratage et ce que vous avez observé jusqu’ici.

Ce dernier point compte pour le RGPD. Si l’attaquant a pu accéder à des données clients, à des messages envoyés par formulaire de contact, à des comptes utilisateurs ou à des commandes, le piratage constitue généralement une violation de données à caractère personnel. L’article 33 du RGPD vous impose alors de la notifier à l’autorité de contrôle (en France, la CNIL) dans les meilleurs délais et, si possible, 72 heures au plus tard après en avoir pris connaissance, à moins qu’elle ne soit pas susceptible d’engendrer un risque. Notre guide sur la notification d’une violation de données sous 72 heures explique comment mener cette évaluation.

Une fois les preuves à l’abri, poursuivez avec notre plan de suppression d’un malware WordPress, étape par étape : isoler le site, trouver le point d’entrée, nettoyer à partir de sources fiables et renouveler tous les identifiants.

Security Audit & Compliance, l’extension WordPress de secaudit.eu, vérifie pour vous plusieurs de ces signes, notamment les comptes administrateurs cachés, les tâches cron suspectes, les sommes de contrôle du cœur, les modifications de fichiers par rapport à une référence et le spam SEO caché. Elle détecte et signale ; supprimer le malware reste votre travail ou celui d’un professionnel.

FAQ

Un site peut-il être piraté sans aucun signe visible ?

Oui. Beaucoup d’infections sont conçues pour rester invisibles aux yeux du propriétaire : elles ignorent les utilisateurs connectés, ne ciblent que les moteurs de recherche ou n’agissent que sur le serveur. C’est pourquoi les vérifications ci-dessus vont au-delà d’un coup d’œil à votre page d’accueil.

Tout piratage est-il une violation de données au sens du RGPD ?

Pas tous, mais beaucoup. Si des données personnelles ont été consultées, modifiées, perdues ou rendues indisponibles, il s’agit d’une violation de données à caractère personnel. Documentez votre analyse dans tous les cas : l’article 33, paragraphe 5, impose de consigner chaque violation, y compris celles que vous ne notifiez pas.

Faut-il restaurer tout de suite la sauvegarde d’hier ?

Seulement après avoir conservé l’état infecté et déterminé à peu près quand l’attaque a commencé. Une sauvegarde réalisée après l’intrusion contient elle aussi la porte dérobée, et restaurer sans refermer le point d’entrée laisse l’attaquant revenir aussitôt.

Cet article est une information générale et ne constitue pas un conseil juridique.

Vérifiez votre propre site

Security Audit & Compliance est l’extension WordPress de secaudit.eu : elle recherche les logiciels malveillants, le spam caché, les fichiers du cœur modifiés et le code vulnérable, et rattache ses constats à l’article 32 du RGPD, à l’article 21 de NIS2 et à l’OWASP Top 10.

Voir ce que vérifie l’extension
Melike Görel

Melike Görel rédige les guides de secaudit.eu sur la sécurité WordPress et la conformité européenne pour AngelForce OÜ, l’éditeur de logiciels basé à Tallinn qui développe secaudit.eu.

Rédigé avec l’aide de l’IA et vérifié avant publication. Cet article est une information générale et non un conseil juridique.