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.
L'infection circule. Nettoyer le sous-site visible sans le réseau garantit le retour. Super admin, mu-plugins et sunrise.php d'abord.
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.