WordPress · 11 min · publié le 7 février 2025

WordPress multisite piraté : un site, tous les sites

L'infection circule. Nettoyer le sous-site visible sans le réseau garantit le retour. Super admin, mu-plugins et `sunrise.php` d'abord — puis chaque site, pas l'inverse.

Réponse directe

L'infection circule. Nettoyer le sous-site visible sans le réseau garantit le retour. Super admin, mu-plugins et sunrise.php d'abord.

wordpress multisite piraté network wordpress hack mu-plugins multisite

Un fichier, tous les fronts

Le cœur, `wp-content/mu-plugins`, `wp-config.php`, beaucoup de plugins réseau : un seul disque. Un shell à la racine parle à tous les blogs. Nettoyer `site-marketing` et laisser `old-client` dans le même réseau, c'est recommencer mardi.

Les utilisateurs peuvent être globaux. Un admin sur le site A ouvre souvent des portes sur B. Par où commencer s'applique au réseau, pas à « la home qui fait peur ».

Un shell à la racine, un mu-plugin, un `sunrise.php`, un `wp-config` : un disque, tous les fronts. Nettoyer le sous-site qui « se voit » et laisser `old-client` dans le même réseau, c'est mardi. Super admins d'abord (ils installent pour tout le monde), puis admins de site. Les uploads sont par blog (`uploads/sites/2/`) : la règle « pas de PHP » doit couvrir chaque arborescence, pas seulement `uploads/` racine.

Un super admin compromis installe un plugin réseau en trente secondes : tous les fronts chargent le payload. C'est pour ça qu'on commence par ce rôle, pas par le slider du site marketing. Les admins de sous-site ensuite. Les clients Woo d'un blog n'ont pas besoin d'être reset tant que le constat ne le dit pas.

Super admin avant les admins de site

Listez les super admins. C'est le rôle qui installe des plugins pour tout le monde. Révoquez les inconnus, changez les mots de passe, application passwords. Les admins de sous-site ensuite.

Un « support » créé par un plugin réseau : vérifiez.

Exportez la liste des super admins avant révocation. Changez les mots de passe, révoquez les application passwords, régénérez les clés AUTH (tout le réseau se reconnecte). Un « support » créé par un plugin réseau se vérifie, pas seulement les Gmail inconnus.

mu-plugins et sunrise.php

`sunrise.php` à la racine `wp-content` charge tôt, surtout avec le domain mapping. Un fichier que vous n'avez pas posé : isolez. Les mu-plugins s'appliquent à tout le réseau, sans case à cocher. C'est le premier dossier à lister.

Un thème nulled activé sur un seul site a pu quand même écrire un mu-plugin global. Thème nulled.

Uploads de chaque site

`uploads/sites/2/`, `sites/3/`, parfois `blogs.dir`. Cherchez du PHP dans chacun. La règle « pas d'exécution » doit couvrir ces chemins, pas seulement `uploads/` racine. PHP dans uploads.

Un PHP dans `uploads/sites/4/` n'apparaît pas dans un scan trop étroit sur `uploads/`. Même interdiction d'exécution sur chaque `sites/ID`. Les mapped domains ont chacun leur Transparency Report.

wp-config et les constantes réseau

`MULTISITE`, `DOMAIN_CURRENT_SITE`, `PATH_CURRENT_SITE`, `SUNRISE`. Un include pirate ici = tous les sites. wp-config. Les `siteurl` de chaque blog dans les tables `wp_2_options`, `wp_3_options` : un redirect admin peut n'être que sur un site. wp-admin redirige.

Sous-domaines et mapped domains

Chaque domaine mappé a sa réputation Google / Norton. Un seul site spamé blacklist le ressenti « tout le réseau ». Transparency sur chaque host. Transparency.

DNS : un sous-domaine oublié `dev.` encore ouvert. Panel : addon.

Les mapped domains mal nettoyés (un seul host propre, les autres encore sales) expliquent un Transparency vert sur le principal et rouge sur la boutique. Testez chaque host. Ads / Merchant suivent l'URL de la boutique, pas le réseau.

Ne pas « tout déconnecter » à l'aveugle

Désactiver tous les sites d'un clic : vous cassez vingt clients pour un. Isolez le site qui sert du phishing (maintenance), gardez les autres si le HTML est propre — tout en nettoyant le global (mu-plugins) tout de suite, parce que le global les menace.

Isolez le site qui sert du phishing (maintenance). Gardez les autres si leur HTML est propre — tout en nettoyant le global tout de suite, parce que le global les menace. Désactiver trente sites d'un clic pour un incident est une panique coûteuse.

Ordre de nettoyage du réseau

Copie du compte entier. Super admins. wp-config, sunrise, mu-plugins, racine. Cœur zip. Plugins réseau vs zips. Puis site par site : options, uploads, thèmes. Puis secrets panel.

Guide WP, créer un espace : un réseau est rarement un dossier « 1 h ».

Ordre : copie du compte entier, super admins, wp-config / sunrise / mu-plugins / racine, cœur zip, plugins réseau, puis site par site. Un réseau de 30 sites n'est pas un dossier d'une heure : priorisez phishing et checkout. Guide WordPress, créer un espace.

Domain mapping, xmlrpc, et sites archivés

Chaque domaine mappé a sa réputation Google / Norton. Un seul site spamé, le ressenti « tout le réseau ». Transparency sur chaque host. DNS : `dev.` encore ouvert. Un site « archivé » a encore fichiers, tables, parfois un subdomain. Un File Manager ou xmlrpc réseau est une porte sur tout. Désinstallez / fermez une fois pour tous.

Woo sur un sous-site : le tunnel d'abord, le global aussi. Une clé REST réseau lit parfois plus loin. WooCommerce. Extraire un site du réseau sans nettoyer le global n'est pas une rustine.

Trente sites : plus que trois jours souvent. Priorisez phishing et checkout. Créer un espace.

Inventaire d'un réseau en une heure

Super admins. Liste des sites (y compris archivés). sunrise.php et mu-plugins. wp-config. Un PHP uploads par blog (échantillonnez si trente sites, tout si cinq). Mapped domains et Transparency. File Manager / xmlrpc / Duplicator une fois pour tous. Clés REST Woo si une boutique.

Puis le site qui saigne (phishing, checkout), puis le global restant, puis le reste. Guide WordPress. Créer un espace.

Questions fréquentes

Je peux sortir le site infecté du réseau pour le sauver ?

+
Le sortir sans nettoyer le global laisse la porte pour les autres. Extraire un site est un projet (export), pas une rustine de sécurité. Le sortir sans nettoyer le global laisse la porte pour les autres. Extraire un site est un projet, pas une rustine.

xmlrpc et File Manager : une fois pour tous ?

+
Oui. Un File Manager réseau est une porte sur tout. Désinstallez. File Manager.

Woo sur un sous-site seulement. Je ne regarde que lui ?

+
Le tunnel, oui, en priorité. Le global, aussi. Une clé REST réseau lit parfois plus loin. Woo. Le tunnel en priorité, le global aussi. Une clé REST réseau lit parfois plus loin.

Un site archivé / désactivé peut-il infecter ?

+
Ses fichiers et ses tables sont encore là. Un cron ou un subdomain DNS encore pointé, oui. Fichiers et tables sont encore là. Un DNS encore pointé, oui.

Combien de temps pour un réseau de 30 sites ?

+
Plus que trois jours souvent : inventaire, uploads, domaines. On priorise phishing / checkout, puis le global, puis le reste. Plus que trois jours souvent. On priorise phishing / checkout, puis le global.
À lire ensuite
Par où commencer wp-config PHP dans uploads WordPress piraté Guide WordPress Déclarer mon site