WordPress piraté : par où commencer réellement
Copie du compte, liste des utilisateurs, dates de fichiers, extensions abandonnées : les quatre portes qui expliquent neuf cas sur dix tiennent en une page. Réinstaller WordPress par-dessus n'en ferme aucune.
Copie, liste des utilisateurs, dates de fichiers, extensions abandonnées. Les quatre portes qui expliquent 9 cas sur 10 tiennent en une page. Réinstaller n'en ferme aucune.
Les quatre portes, pas le virus imaginaire
On nous appelle pour « un virus WordPress ». Il n'y a presque jamais un seul fichier maléfique. Il y a une entrée : une extension oubliée, un thème « premium gratuit », un mot de passe admin ou panel, un voisin de compte. Le reste — redirection, pharmacies, shell — est la conséquence.
Le guide WordPress les pose ; ici on dit par où commencer le jour J, sans tout casser. La page cas WordPress piraté reste le protocole métier si vous déléguez.
Un plugin de sécurité installé dans l'heure n'est pas une porte fermée. C'est du bruit. On le pose à la fin.
Écrivez sur une feuille les quatre portes avant d'ouvrir le FTP : extension, thème, mot de passe, voisin. La première qui a une preuve (CVE + plugin présent + date, zip nulled, user à 4 h, autre vhost sale) devient prioritaire. Les autres se vérifient quand même : les incidents doubles existent. Réinstaller le cœur sans cette feuille, c'est le mercredi qui recommence. La page WordPress piraté et le guide sont le protocole ; cette page est le jour J.
- Extension vulnérable, souvent un formulaire ou un builder.
- Thème hors wp.org / ThemeForest officiel.
- Compte administrateur ou panel d'hébergement.
- Autre site du même compte, mal isolé.
Copier avant d'ouvrir le FTP comme un grenier
Archive hors serveur : fichiers + base. Sans elle, une suppression dans `wp-includes` ou un « réparer tout » Wordfence n'a pas de retour. L'hébergeur fournit un zip si le FTP est déjà coupé : preuve, pas source de restauration aveugle. La dernière Updraft contient souvent déjà le backdoor.
Les journaux (accès, erreur PHP, FTP) partent dans le même sac. Réinstaller « pour se rassurer » les détruit. Vous perdez la date d'entrée — utile hébergeur, assureur, parfois CNIL.
Utilisateurs, sessions, application passwords
wp-admin > utilisateurs : comptes que vous ne reconnaissez pas, rôles administrateur / shop manager, dates d'inscription. Supprimez après copie d'écran. Changez votre mot de passe ensuite — l'inverse laisse une session ouverte.
Les mots de passe d'application WordPress survivent au mot de passe principal. Révoquez-les. Les sessions : un plugin ou une table `wp_usermeta` / tokens. Régénérer les clés AUTH dans `wp-config.php` déconnecte tout le monde. wp-config.
Un user `admin` créé à 4 h : cause plus fiable qu'un fichier isolé. Brute force wp-login dit quand les 404 de login sont du bruit, et quand une connexion a réussi.
Lire les dates, pas seulement les noms
Triez le FTP par date de modification. Racine, `wp-content`, `wp-includes`. Un `index.php` du cœur touché hier, un `wp-load.php` aussi : comparez au zip de votre version (wordpress.org / Releases). Une ligne ajoutée en tête suffit.
Les noms anodins : `wp-core.php`, `radio.php`, `wp-tmp.php`, `about.php` à la racine. Une copie de `xmlrpc.php` dans `uploads`. `installer.php` et `installer-backup.php` après une migration. Duplicator.
Extensions et thèmes hors circuit
Listez les extensions, dates de dernière mise à jour wp.org, celles désactivées mais encore sur le disque : les bots les frappent quand même. Désactiver après l'attaque ne retire pas le code déjà déposé dans `uploads` ou `mu-plugins`. Plugin vulnérable.
Thème « GPL premium » téléchargé sur un torrent : backdoor dès l'installation. L'admin a l'air normal. Thème nulled.
mu-plugins, uploads, racine
`wp-content/mu-plugins/` : tout fichier PHP ici se charge sans activation. C'est l'endroit préféré après un File Manager ou un thème nulled. S'il y a un fichier que vous n'avez pas posé, isolez-le (renommer l'extension le temps de l'analyse), ne le laissez pas « pour plus tard ».
`wp-content/uploads/` : aucun PHP légitime n'a à s'exécuter. Cherchez `*.php`, `*.phtml`, `*.php.jpg`, `.php.` . Posez ensuite un `.htaccess` qui refuse le PHP. PHP dans uploads.
Racine : en plus du cœur, `.htaccess` (redirections), `wp-config.php` (include ajouté), `xmlrpc.php` si vous ne vous en servez pas. XML-RPC, wp-admin redirige.
Ce que la réinstallation laisse
Écraser `wp-admin` et `wp-includes` par le zip officiel est utile — après copie. Ça ne touche pas `wp-content`, la base, les crons, les users, le voisin de compte. C'est pour ça que « j'ai réinstallé » revient le mercredi.
Une install « neuve » dans un sous-dossier avec l'ancienne base : vous reconnectez l'infection. Supprimer un malware sans perdre le contenu.
L'ordre des mots de passe
Panel d'hébergement d'abord, puis FTP/SFTP, puis wp-admin, puis MySQL, puis SMTP. Inverser : quelqu'un réécrit `wp-config` pendant que vous changez l'admin. Secrets distincts.
Search Console, Ads : utilisateurs GSC.
Décider de continuer ou déléguer
Si vous savez comparer un fichier à son zip et lire un access.log, continuez. Si vous hésitez entre « je supprime ce PHP » et « je ne sais pas à quoi il sert », arrêtez-vous. Isoler n'est pas supprimer.
Boutique, checkout, base clients : déléguez plus tôt. Créer un espace sans accès serveur à l'inscription. Le guide backdoor pour la fenêtre des trente jours.
Si vous hésitez entre « je supprime ce PHP » et « je ne sais pas à quoi il sert », isolez (renommez `.php.off`) et arrêtez-vous. Boutique ou base clients : déléguez plus tôt. Créer un espace sans accès serveur à l'inscription. Fenêtre de trente jours : guide backdoor.