Rapport d'audit de sécurité

northgate-advisors.com

Analyse complète de la sécurité des fichiers du site, de la configuration, de la base de données et de l'historique des accès.

Projet 100472 Site northgate-advisors.com Date du rapport : 30 juillet 2026 WordPress 7.0.2 Préfixe de table : wp_ Serveur : nginx

Le site a été piraté en juillet 2026 et reste vulnérable à ce jour : risque élevé

Trois comptes administrateur créés par un pirate se sont connectés au site entre le 22 et le 23 juillet, et un webshell a été découvert dans le dossier « media » le 28 juillet. Ces éléments ont depuis été supprimés. Ce qui reste en suspens est plus urgent : le mot de passe de votre base de données, toutes vos clés de sécurité et votre clé API de messagerie sont téléchargeables par n'importe qui à partir d'une adresse publique ; près de 8 000 documents clients peuvent être récupérés sans connexion ; et le dossier « media » exécute toujours du code PHP, ce qui est précisément ce qui a permis à la porte dérobée de fonctionner.

Il s'agit d'un exemple. Il s'agit d'un véritable rapport d'audit dont toutes les informations permettant d'identifier les parties concernées ont été remplacées : le nom du site, le numéro de projet, tous les noms de comptes et adresses, les noms des membres du personnel visés par la campagne de piratage des mots de passe, ainsi que les chemins d'accès aux documents du client. Les conclusions, les chiffres, les dates et le raisonnement restent inchangés ; ce rapport se présente donc exactement comme celui que reçoit un client.

Vue d'ensemble

Le nombre de cas graves et l'état du site tel qu'il a été évalué le 30 juillet 2026.

5
Critique
6
Haut
9
Moyen
4
Faible
7,994
Fichiers clients exposés
0
Fichiers malveillants restants
Veuillez lire ceci en premier. Ce rapport décrit deux choses distinctes qu’il ne faut pas confondre. L’intrusion proprement dite (comptes de pirates, fichier porte dérobée) semble avoir été résolue : il n’y a actuellement aucun élément malveillant sur le site. Les problèmes d’exposition (identifiants et documents clients accessibles à tous, exécution de code autorisée dans le dossier « media ») sont toujours d’actualité, ont été vérifiés depuis l’Internet public le 30 juillet 2026, et sont susceptibles de permettre à la même situation de se reproduire.

Inventaire du site

ArticleValeur
Adresse du sitehttps://northgate-advisors.com
Version de WordPress7.0.2
Serveur Webnginx
Préfixe des tables de la base de donnéeswp_ (par défaut)
PileThrive Theme (thème enfant actif), WooCommerce et Subscriptions, Amelia Booking, Fluent Suite (Forms, CRM, Support, SMTP), Formidable, Rank Math Pro, Real Cookie Banner Pro, Wordfence, Patchstack
Fichiers PHP47,005
Tables de base de données355
Comptes utilisateurs317 (dont 8 administrateurs)
Plugins54 actifs, 63 présents sur le disque
Thèmes7 (thrive-theme-child actif)
Taille totale4,8 Go
Contexte d'hébergement. Le site a changé deux fois d'hébergeur. Trois chemins d'accès au serveur différents sont encore enregistrés dans la base de données : un ancien chemin Plesk, un chemin intermédiaire et le chemin actuel. Cet historique explique plusieurs éléments qui, sans cela, pourraient ressembler à des traces laissées par un pirate pour effacer ses traces : un plugin de sécurité dont le dossier a été supprimé mais dont les tâches planifiées subsistent, un changement de préfixe de la base de données partiellement appliqué, ainsi que des paramètres résiduels provenant d'outils qui ne sont plus installés. Dans ce rapport, ces éléments sont considérés comme relevant de la maintenance, et non comme des preuves d'intrusion.

Que s'est-il passé ?

Reconstitué à partir des registres d'accès au site et des journaux de son module de sécurité. Toutes les heures sont exprimées en UTC. Deux éléments sont plus importants que les événements individuels : la méthode d'intrusion n'a jamais été enregistrée, et l'alerte signalant l'existence de la porte dérobée est restée sans suite pendant six jours.

Point d'entrée : non enregistré
Notification non lue, il y a 6 jours
non enregistré
22 juillet
23 juillet
24juillet
25 juillet
26 juillet
27juillet
28 juillet
29juillet
30juillet
Activité des attaquants Votre équipe Détectée par vos outils Situation à la date du rapport

Passez la souris sur un marqueur pour voir de quoi il s'agit, ou cliquez dessus pour accéder aux détails ci-dessous.

  1. Avant le 22juillet
    Le site a été piraté. Trois comptes administrateur ont été créés, que personne dans votre équipe ne reconnaît. Le chemin d'accès n'a pas été enregistré. Cela a été rendu possible par : quatre plugins dont les versions présentent des failles de sécurité connues, et un dossier « media » qui accepte et exécute du code PHP.
  2. 22 juillet, 03 h 20 UTC
    Première connexion de l'attaquant. Compte a4f2_71c9d038 (adresse sur shellcode.lol) se connecte depuis 203.0.113.41 dès la première tentative, sans qu'aucune tentative précédente n'ait échoué. Le fait que la création du compte ait réussi dès la première tentative signifie que celui-ci a été créé par la personne qui l'a utilisé, et non deviné.
  3. 23 juillet, 03 h 20 UTC
    Connexion du deuxième attaquant. Compte 8b16f402c7de se connecte depuis 203.0.113.88.
  4. 23 juillet, 04 h 48 UTC
    Connexion du troisième attaquant. Compte site_admin (adresse à shelltool.invalid) se connecte depuis 198.51.100.23.
  5. Du 23 au 26 juillet
    Votre équipe supprime les trois comptes. Supprimés un par un à partir de 198.51.100.9. Il n'y a plus aujourd'hui d'administrateur inattendu.
  6. 27 juillet, 15 h 00 UTC
    Une modification des règles de protection du serveur a été enregistrée. La règle censée empêcher l'exécution de PHP dans le dossier « media » n'est pas active.
  7. 28 juillet, 01 h 03 UTC
    Votre propre analyse antivirus signale la présence de cette porte dérobée. Signalé à wp-content/uploads/_9ce8098b.php, classé au niveau de gravité maximal. Les alertes par e-mail étaient activées et correctement configurées à ce moment-là ; une notification aurait donc dû parvenir à l'adresse opérationnelle de votre agence.
  8. 30 juillet
    État des lieux. Le fichier de la porte dérobée a disparu et aucun code malveillant n'a été détecté sur le site. L'alerte reste en attente de confirmation dans le scanner, et les conditions qui ont permis à la porte dérobée de fonctionner n'ont pas changé.
Concernant les dates. Les horodatages des fichiers sont normalisés et ne permettent pas de déterminer la date de l'intrusion. Les heures indiquées ci-dessus proviennent des journaux de connexion et de l'historique du scanner, qui sont fiables. Les journaux d'accès au serveur web de votre hébergeur indiqueraient la requête exacte qui a permis de déposer le fichier de porte dérobée ; il est donc utile de les demander tant qu'ils sont encore conservés.

Indicateurs de compromission

Les éléments concrets liés à cet incident, accompagnés d'une indication précisant s'ils sont toujours d'actualité et ce qu'il convient d'en faire. Deux des sept éléments sont toujours d'actualité. Il est recommandé de vérifier les autres sur tout autre site que vous gérez, car un site copié conserve les vestiges de l'ancien.

Liste noire et liste de recherche
Fichier de porte dérobée
wp-content/uploads/_9ce8098b.phpSupprimé

Nous avons demandé cette adresse le 30 juillet et le serveur a renvoyé la réponse « introuvable ». Vérifiez sur vos autres sites si ce chemin d'accès existe et s'il y a un fichier PHP situé directement dans le dossier « media ».

Empreinte digitale de la porte dérobée
03E3772B0E1670743301179E66A1505B16E687F92EA45092F05F198A54BD6382 Valeur de référence

L'identifiant de ce fichier précis, qui reste inchangé même si vous le renommez. Transmettez-le à votre hébergeur ou collez-le dans la barre de recherche de fichiers de votre plugin de sécurité pour retrouver ce même fichier sur un autre site.

Comptes d'attaquants
a4f2_71c9d038@shellops.invalid, 8b16f402c7de@mailbox.invalid,site_admin@shelltool.invalidDeleted ici

Ces trois éléments ont été supprimés de ce site entre le 23 et le 26 juillet. Ouvrez la liste des utilisateurs de tous les autres sites que vous gérez et recherchez ces trois adresses, ainsi que tout ce qui se termine par « shellcode.lol » ou « shelltool.invalid ».

Adresses des attaquants
203.0.113.41, 203.0.113.88, 198.51.100.23 N'est plus actif ici

Ces trois adresses correspondent aux comptes de l'attaquant à partir desquels il s'est connecté. Aucune activité n'a été détectée depuis le 23 juillet. Bloquez-les au niveau de votre pare-feu et recherchez-les dans l'historique de connexion de vos autres sites.

Source de session non identifiée
192.0.2.117Toujours d'actualité aujourd'hui

Ce cas ne relève pas de l’histoire. Huit sessions administrateur provenant de cette adresse sont actuellement ouvertes et valides jusqu’au 11 août. Demandez dès aujourd’hui à votre organisme et à votre développeur d’applications s’il s’agit bien de la leur. Si personne ne la revendique, considérez que le site est toujours accessible à un tiers (H-2).

Fuite d'adresse
/wp-config.php.wpdebugtoolkit-backupToujours en ligne aujourd’hui

Communiqué à toute personne qui en fait la demande, confirmé le 30 juillet. Supprimez ce fichier dès aujourd’hui, puis modifiez tout ce qu’il contenait: le mot de passe de la base de données, les neuf clés et sels, ainsi que la clé Mailgun (C-1).

Règles de dénomination
un trait de soulignement, suivi de 8 caractères hexadécimaux, fichier PHP situé dans le dossier « media », dont le contenu commence par GIF89aCe qu'il faut rechercher

Voici à quoi ressemblerait une variante de cette porte dérobée sur d'autres sites. Répertoriez le contenu du dossier « media » sur vos autres sites et considérez comme suspect tout fichier PHP qui s'y trouve, quel que soit son nom.

Conclusions

24 résultats, classés par ordre de gravité décroissante. Utilisez le filtre situé dans la barre ci-dessus pour affiner votre recherche en fonction de la gravité.

Critique C-1 https://northgate-advisors.com/wp-config.php.wpdebugtoolkit-backup

Votre mot de passe de base de données, toutes vos clés de sécurité et votre clé API de messagerie peuvent être téléchargés par n'importe qui

Une copie du fichier de configuration principal de WordPress a été laissée dans le dossier public avec une extension de fichier différente. Comme cette extension n'est pas .php, le serveur ne l'exécute pas, il transmet simplement le texte. Lorsque l'on interroge cette adresse sur Internet, on obtient le fichier dans son intégralité, qui contient le nom de la base de données, l'identifiant de l'utilisateur de la base de données, le mot de passe de la base de données, ainsi que les neuf éléments d'authentification clés et sels, ainsi que la clé d'envoi Mailgun. Nous avons vérifié que le fichier a été mis à disposition le 30 juillet 2026 et n'avons pas conservé de copie de son contenu.

Ce que cela signifie concrètement. La clé de messagerie permet à n'importe qui d'envoyer des e-mails qui semblent provenir de votre domaine, ce qui constitue un moyen tout trouvé de pratiquer le phishing à l'encontre de vos propres clients. Les clés d'authentification permettent à un attaquant de falsifier des sessions et des formulaires. Le mot de passe de la base de données est limité par le fait que celle-ci n'accepte que les connexions provenant du serveur lui-même et que le port de la base de données n'est pas accessible depuis l'extérieur, ce que nous avons vérifié ; il n'est donc pas directement utilisable depuis Internet, mais il devient immédiatement utilisable par quiconque parvient à s'introduire sur ce serveur.

Action : Supprimez ce fichier aujourd'hui, puis remplacez tout ce qu'il contenait : le mot de passe de la base de données, les neuf clés d'authentification et leurs sels (cela déconnecte tout le monde, ce qui est voulu), ainsi que la clé API Mailgun. Vérifiez ensuite le reste du dossier public pour repérer d'autres fichiers dont le nom commence par wp-config.
Critique C-2 uploads/client-statements/, billing_invoices_temp/, uploads/fluentform/, uploads/fluent-support/

7 994 documents clients peuvent être téléchargés sans se connecter

Quatre dossiers distincts contiennent les documents des clients que le serveur web met à la disposition de toute personne qui en fait la demande. Nous avons vérifié qu'un fichier de chaque ensemble pouvait être téléchargé sans problème depuis l'Internet public, et nous n'en avons conservé aucun.

  • 5 606 documents fiscaux dans uploads/client-statements/, nommé dans une séquence simple (statement_5393.pdf, statement_3084.pdf). Le dossier n'est protégé par aucun moyen de sécurité et la numérotation est prévisible, ce qui permet de parcourir l'ensemble de la série. Les scanners automatisés procèdent ainsi systématiquement.
  • 27 factures dans wp-content/billing_invoices_temp/, intitulé invoice-4395.pdf et d'autres similaires, tout aussi faciles à deviner. Le dossier contient bien une règle d'accès, mais celle-ci est écrite pour Apache alors que votre site fonctionne sous nginx ; elle n'a donc aucun effet.
  • 1 113 fichiers envoyés via vos formulaires dans uploads/fluentform/.
  • 1 248 pièces jointes répartis dans 248 dossiers de tickets d'assistance dans uploads/fluent-support/. Il s'agit des ensembles les plus sensibles parmi les quatre : les noms de fichiers eux-mêmes, visibles dans l'adresse, font référence à des attestations fiscales, des relevés bancaires, des polices d'assurance et des relevés de comptes d'investissement, chacun étant associé au nom de famille d'un client.

Une distinction est importante pour déterminer le degré d’urgence de chaque ensemble. Les documents fiscaux et les factures sont numérotés de manière séquentielle ; ainsi, n’importe qui peut les répertorier sans rien savoir de votre site. Les fichiers de formulaires et de tickets comportent une chaîne aléatoire dans leur nom ; ils ne peuvent donc pas être devinés un par un, mais rien n’empêche non plus d’y accéder : le nom suffit, et celui-ci peut être divulgué via l’historique du navigateur, les en-têtes de référence, les liens partagés, ainsi qu’à toute personne ayant accès à la base de données. L’obscurité n’est pas une protection.

Il s'agit de données relatives à la fiscalité, à la facturation et à la correspondance des clients, qui constituent des données à caractère personnel sensibles au sens du RGPD. Considérez la possibilité d'un accès non autorisé comme un risque réel et non théorique, étant donné que le site était également sous le contrôle des pirates au cours de cette même période.

Mesure à prendre : bloquez dès aujourd’hui l’accès direct aux quatre dossiers au niveau du serveur web, et non via une règle de plugin. Ne diffusez ces documents qu’à l’aide d’un script vérifiant l’identité de la personne qui les demande. Demandez ensuite à votre hébergeur les journaux d’accès de ces dossiers afin de pouvoir déterminer si quelqu’un les a effectivement téléchargés, information dont vous aurez besoin si une décision concernant la notification doit être prise.
Critique C-3 wp-content/uploads/

Le dossier « media » exécute du code PHP, ce qui a permis à la porte dérobée de fonctionner, et il est toujours accessible

Votre module de sécurité tente effectivement d'empêcher l'exécution des fichiers PHP dans le dossier « media », mais il le fait à l'aide d'une règle .htaccess, or les fichiers .htaccess sont une fonctionnalité d'Apache que nginx ignore complètement. Toutes les règles de ce type sur ce site sont inactives, y compris celle-ci.

Nous l'avons vérifié directement. Un fichier PHP existant dans le dossier « media » a été sollicité depuis Internet et le serveur l'a exécuté au lieu de renvoyer son contenu. Le contrôle des règles de protection de votre site a abouti à la même conclusion le 27 juillet : l'exécution de code PHP dans le dossier « media » n'est pas bloquée.

C'est plus grave qu'il n'y paraît. La porte dérobée découverte le 28 juillet était un fichier PHP situé précisément dans ce dossier, dissimulé sous un GIF89a en-tête afin qu'il soit considéré comme une image lors du téléchargement. La suppression de ce fichier a permis de résoudre le problème. Tant que les téléchargements peuvent s'exécuter, la prochaine faille liée au téléchargement de fichiers dans l'un de vos 54 plugins produira à nouveau le même résultat.

Action : Ajouter une règle Nginx qui refuse de laisser passer toute requête sous wp-content/uploads/ vers PHP. Il suffit de quelques lignes dans la configuration du serveur, et c'est de loin le changement le plus important de cette liste. Ne vous fiez pas à un paramètre de plugin pour cela.
Critique C-4 Comptes utilisateurs 372, 374 et 376 (tous supprimés)

Les trois comptes administrateur créés par les pirates disposaient d'un contrôle total sur le site

Trois comptes disposant de tous les droits d'administrateur se sont connectés au site entre le 22 et le 23 juillet. Leurs adresses e-mail indiquent les outils utilisés : shellcode.lol, shelltool.invalid, ainsi qu'un nom généré automatiquement associé à un nom de domaine d'apparence plausible. Chacun d'entre eux s'est connecté avec succès dès la première tentative, sans avoir essuyé d'échec préalable, ce qui exclut toute hypothèse de devinette de mot de passe et signifie que les comptes ont été créés par la personne qui les a ensuite utilisés.

Votre équipe a supprimé ces trois comptes entre le 23 et le 26 juillet, et il ne reste aujourd’hui aucun administrateur inattendu. C’est la bonne issue, mais un compte disposant de droits d’administrateur peut tout faire avant d’être supprimé : installer un plugin, modifier des fichiers de thème, consulter l’intégralité de la base de données, exporter des données clients. Partons du principe que tout cela était possible pendant ces quelques jours.

Action : réinitialiser le mot de passe de tous les administrateurs restants et forcer la fermeture de toutes les sessions, ce que permet également la rotation des clés prévue dans le document C-1. Activer l'authentification à deux facteurs sur les 8 comptes d'administrateur, car un seul en bénéficie actuellement.
Critique C-5 wp-content/uploads/_9ce8098b.php (supprimé depuis)

Une porte dérobée présentant un niveau de gravité maximal a été signalée par votre propre scanner, mais aucune mesure n'a été prise suite à cette alerte.

Le 28 juillet à 01 h 03, l'analyse anti-malware de votre site a signalé un fichier du dossier « media » comme malveillant, avec un niveau de gravité de 100. Le fichier était dissimulé sous la forme d'une image (il commençait par le texte GIF89a) et son code assemblait, lettre par lettre, les noms de fonctions dangereuses afin de déjouer les scanners. Ces fonctions permettaient d’accepter un fichier téléchargé, d’écrire des fichiers sur le disque et d’exécuter des commandes système. En clair : un outil permettant de télécharger n’importe quoi et d’exécuter des commandes sur votre serveur.

Le fichier a disparu du site aujourd’hui et nous avons vérifié que l’adresse renvoie désormais une réponse « page introuvable ». L’alerte figure toutefois toujours dans la liste des alertes nouvelles et non traitées ; or, la notification était activée avec une adresse de destination valide à ce moment-là, ce qui signifie que quelqu’un aurait dû recevoir un e-mail à ce sujet le 28 juillet. Ce même scan recense également 35 plugins et thèmes obsolètes, dont aucun n’a non plus fait l’objet d’une prise en compte.

Action : vérifiez auprès de votre agence qui reçoit les e-mails d'alerte de sécurité et si le message du 28 juillet est bien parvenu à son destinataire. Lancez ensuite une nouvelle analyse et traitez l'ensemble des problèmes répertoriés jusqu'à ce qu'il n'y en ait plus aucun, plutôt que de laisser des alertes en suspens, car une liste d'alertes non lues revient au même que de ne pas avoir d'alertes du tout.
Élevé H-1 https://northgate-advisors.com/wpdebugtoolkit/ plus wp-content/db.php

Une console de débogage qui enregistre toutes les requêtes de base de données est accessible à une adresse publique

Un outil de diagnostic autonome est installé à la racine de votre site. Nous avons vérifié que l'adresse était correcte le 30 juillet. Cet outil ne fait pas partie de WordPress et n'utilise pas les identifiants de connexion à WordPress ; il est protégé par un mot de passe unique qui lui est propre. L'outil peut lire votre journal de débogage, réécrire votre fichier de configuration principal et enregistrer le texte complet des requêtes de base de données, c'est pourquoi SAVEQUERIES est activée dans votre configuration et pourquoi un fichier d'interception de la base de données se trouve dans wp-content.

Le texte des requêtes de base de données n’est pas un contenu anodin. Il contient des hachages de mots de passe, des identifiants de session et tout ce que vos formulaires transmettent, ce qui, pour ce site, inclut les données clients. Deux autres éléments aggravent encore la situation : la sauvegarde de configuration qui divulgue vos identifiants dans C-1 a été créée par ce même outil, et votre scanner de logiciels malveillants est explicitement configuré pour ignorer ce répertoire ; c’est donc le seul endroit du site qui n’est soumis à aucun contrôle.

Nous avons examiné son code et n'avons détecté aucun comportement malveillant caché : les actions sensibles sont protégées par un mot de passe et un jeton d'authentification. Le problème n'est pas qu'il soit malveillant, mais qu'il soit présent sur un site de production traitant des données fiscales.

Action : retirer l'outil, le wp-content/db.php fichier d'interception et le SAVEQUERIES paramètre du site en ligne. Si cela s'avère réellement nécessaire, limitez-le aux adresses IP de votre bureau au niveau du serveur et cessez de l'exclure des analyses anti-malware.
Élevé H-2 Compte 1 (admin_k2p9x1), source 192.0.2.117

Huit sessions d'administrateur provenant d'un serveur que personne n'a identifié, valables jusqu'au 11 août

Votre compte d'administrateur principal compte actuellement huit connexions simultanées. sessions, tous provenant de l'adresse 192.0.2.117 (un fournisseur d'hébergement, et non une connexion professionnelle), qui se présentaient tous comme node plutôt que dans un navigateur. Ils ont été créés par paires les 23, 24, 26 et 28 juillet et restent valables jusqu'au 11 août.

Ces sessions n'ont pas été créées par quelqu'un qui aurait saisi un mot de passe : le mot de passe enregistré pour ce compte est toujours au format ancien, et WordPress met automatiquement ce format à jour dès la première utilisation d'un mot de passe correct. Cela signifie donc qu'un élément crée des sessions d'administrateur par programmation. Nous avons écarté la connexion de gestion via WP Umbrella , qui utilise des adresses différentes et fonctionne différemment.

L'explication la plus probable est qu'il s'agit de votre propre intégration, étant donné qu'un compte utilisateur nommé « PortalApp » existe sur le site. Cela ferait de ce comportement un phénomène normal, bien que peu recommandable. L'autre possibilité est que ce compte ne vous appartienne pas, auquel cas il s'agit d'un accès administrateur permanent. Nous ne pouvons pas faire la distinction entre ces deux cas depuis l'extérieur, et la période durant laquelle les comptes des attaquants étaient actifs recoupe ces dates.

Action : Demandez à votre agence et à votre développeur d'applications si 192.0.2.117 leur appartient, aujourd'hui. Si personne ne le revendique, considérez que le site reste accessible à un tiers. Dans tous les cas, mettez fin à toutes les sessions sur ce compte et veillez à ce que les intégrations utilisent un compte dédié doté uniquement des autorisations nécessaires, jamais celui de l'administrateur principal.
Élevé H-3 Fluent Forms 6.2.5, Google Tag Manager 1.22.3, Loco Translate 2.8.5, Widget for Google Reviews 6.9.7

Quatre plugins utilisent des versions présentant des failles de sécurité connues, et 35 mises à jour sont en attente

Votre scanner signale que ces quatre éléments utilisent une version pour laquelle une vulnérabilité a été rendue publique, ce qui signifie que les détails techniques sont accessibles à tous. Au total, 35 plugins et thèmes ne sont pas à jour, notamment l'ensemble de la suite Thrive, WooCommerce, Amelia et la suite Fluent.

C'est sans doute par là que l'intrusion a eu lieu. La porte dérobée s'est glissée sous la forme d'un fichier d'apparence d'image dans le dossier « media », ce qui correspond à la signature d'une faille dans la gestion des téléchargements ; or, Fluent Forms est le composant de ce site qui gère les fichiers téléchargés par les clients. Nous ne pouvons pas déterminer quelle faille a été exploitée sans consulter les journaux d'accès de votre serveur, mais le fait de conserver ces versions en place maintient la porte dérobée dans le même état qu'elle était le 22 juillet.

Action : commencez par mettre à jour ces quatre-là, puis passez aux 31 restants. Les mises à jour automatiques du noyau sont actuellement désactivées dans votre configuration ; cela dépend donc entièrement du bon déroulement du processus de mise à jour géré, selon le calendrier prévu.
Élevé H-4 wp-config.php, DISALLOW_FILE_EDIT n'est pas défini

L'éditeur de fichiers intégré est activé, ce qui permet à n'importe quelle session d'administrateur d'exécuter du code

WordPress intègre un éditeur qui permet à un administrateur de modifier les fichiers des thèmes et des extensions directement depuis le navigateur. Sur ce site, cette fonctionnalité est activée. Cela signifie que toute session d'administrateur permet d'exécuter du code arbitraire, sans qu'il soit nécessaire de télécharger ou de transférer des fichiers.

Étant donné que trois comptes d'administrateur appartenant à des pirates étaient connectés au cours du mois de juillet, cette fonctionnalité était à leur disposition. Elle devrait être désactivée définitivement : les modifications légitimes doivent passer par le processus de déploiement de votre agence, et non par l'éditeur du navigateur.

Action : ajouter define('DISALLOW_FILE_EDIT', true); au fichier de configuration. Ajoutez également define('FORCE_SSL_ADMIN', true);, qui fait actuellement défaut.
Élevé H-5 Enregistrements de connexion : 393 échecs provenant de 221 adresses en sept jours

Une attaque par force brute ciblant les noms réels de vos employés est en cours, et 7 administrateurs sur 8 ne disposent pas d'une authentification à deux facteurs.

Au cours des sept derniers jours, le site a enregistré 393 tentatives de connexion infructueuses provenant de 221 adresses différentes, auxquelles s'ajoutent 56 tentatives bloquées par le système de protection des connexions et 21 tentatives d'énumération des noms d'utilisateur. Si l'on examine l'historique complet du plugin, l'ampleur de la campagne est plus importante : le nom d'affichage Daniel a été pris pour cible environ 500 fois et Rossi Marta environ 179.

Ce qu'il faut retenir, c'est qu'il s'agit là de vrais noms de vraies personnes présentes sur votre site, et non pas des noms habituels admin des tentatives de devinette. Cela signifie que les pirates ont récupéré les noms d’auteurs sur vos pages et testent actuellement les mots de passe des comptes connus. Une adresse par nom, réparties de manière dispersée, à un rythme délibérément suffisamment lent pour passer pour du trafic normal.

Un seul de vos huit comptes d'administrateur dispose d'une authentification à deux facteurs activée. Pour les sept autres, seul un mot de passe correct constitue un obstacle, et les mots de passe sont justement ce que cette campagne vise à obtenir à terme.

Mesure à prendre : exiger une authentification à deux facteurs pour tous les comptes d'administrateur et de responsable de boutique. Masquer les noms des auteurs sur les pages publiques afin que la liste des attaquants ne soit plus actualisée, et maintenir la protection de connexion activée.
Élevé H-6 wp-content/share-one-drive-cache/

Votre dossier contenant le jeton d'accès OneDrive est accessible en lecture publique

L'intégration OneDrive met en cache ses données d'autorisation dans un dossier sans contrôle d'accès, et nous avons constaté qu'un fichier qui s'y trouve était accessible depuis Internet. Le nom du fichier à lui seul révèle déjà l'adresse du compte associé et l'identifiant de votre tenant Microsoft. Dans l'état où nous l'avons examiné, le fichier de jeton était vide, mais sur un site en production, c'est à cet emplacement que se trouve un jeton d'accès valide à votre OneDrive.

Un jeton valide de ce type permet d'accéder en lecture et en écriture au stockage de documents connecté, sans mot de passe et sans déclencher de notification de connexion.

Action : bloquer l'accès Web à ce dossier au niveau du serveur, puis déconnecter et reconnecter l'intégration OneDrive afin que tout jeton ayant pu être compromis soit remplacé.
Moyen M-1 Comptes utilisateurs 1, 2, 8, 11, 12, 23, 70, 325

Huit comptes d'administrateur, dont deux n'ont pas été utilisés depuis des mois

Huit comptes disposent de tous les droits d'administrateur sur un site traitant des données fiscales et de paiement. Ces huit comptes correspondent tous à des personnes ou à des organisations avec lesquelles vous travaillez ; aucun n'est donc un compte malveillant, mais deux d'entre eux semblent inactifs.

  • Un compte d'agence créé en octobre 2022, inactif depuis janvier 2025, dont le mot de passe enregistré est toujours au format ancien.
  • Un compte d'assistance fournisseur créé le 21 mai 2026, utilisé une seule fois depuis une adresse au Bangladesh, puis inactif depuis. L'adresse correspond à celle de l'équipe d'assistance de l'un de vos fournisseurs de plugins ; il s'agit donc probablement d'un accès légitime mis en place par votre agence, mais ce compte ne devrait plus être actif.

Chaque administrateur inactif représente un jeu complet de clés dont personne ne s'occupe.

Action : supprimer ou déclasser les deux comptes inactifs, et convenir avec votre agence que l'accès au support fournisseur soit accordé pour une demande spécifique, puis révoqué par la suite.
Moyen M-2 MainWP Child, présent sur le disque mais inactif, les paramètres et les tâches planifiées sont conservés

Un canal de gestion à distance reste associé à deux comptes administrateur, bien que son module soit désactivé

Un plugin de gestion de sites distants reste installé mais désactivé, et deux comptes administrateur conservent toujours ses paramètres de connexion, notamment une clé de connexion enregistrée. Ses tâches planifiées sont toujours enregistrées, et il a laissé un dossier contenant un clone du serveur dans le répertoire « media ».

Un outil de ce type est, par nature, un canal d'administration à distance. Lorsqu'il est désactivé, il n'est pas supprimé : les fichiers restent sur le disque et sa réactivation rétablit le canal. Il s'agit très probablement de la configuration de gestion propre à votre agence, ce qui est tout à fait normal, mais elle devrait soit être utilisée et à jour, soit être supprimée.

Action : vérifiez auprès de votre agence si ce canal est toujours nécessaire. Si ce n'est pas le cas, supprimez les dossiers du plugin, effacez les paramètres de connexion des deux comptes et annulez les tâches planifiées restantes.
Moyen M-3 wp-content/uploads/cache/wpml/twig/ (91 fichiers) et wp-content/plugins/share-one-drive-1/

Du code exécutable et une ancienne copie en double d'un plugin se trouvent dans des dossiers qui ne devraient contenir ni l'un ni l'autre.

Quatre-vingt-onze fichiers de modèles PHP compilés ont été laissés dans le dossier « media » par un plugin de traduction qui n'est plus installé. Leur contenu est inoffensif, mais il s'agit de code exécutable dans un dossier qui ne devrait jamais en contenir, et comme le précise C-3, ce dossier exécute effectivement du code PHP sur ce serveur.

Par ailleurs, une deuxième copie complète du plugin OneDrive est disponible en version 3.5.2.1, alors que la version active est la 3.8.1. Elle n'est pas active, mais tous les fichiers qu'elle contient restent accessibles et exécutables, ce qui signifie que les failles de l'ancienne version persistent même si le plugin semble avoir été mis à jour.

Action : supprimer les deux arborescences. Les anciennes copies de plugins ne doivent en aucun cas être conservées dans le dossier « plugins ».
Moyen M-4 /.user.ini, /.htaccess, /wp-content/debug.log

Vos fichiers de configuration du serveur et votre journal de débogage sont accessibles au public

Trois fichiers décrivant la configuration de votre serveur sont mis à la disposition de toute personne qui en fait la demande. Nous avons vérifié ces trois fichiers le 30 juillet :

  • /.user.ini (112 octets), que votre scanner avait déjà signalé le 27 juillet et qui figure toujours parmi les problèmes non résolus. Elle révèle le chemin d'accès absolu du site sur le disque.
  • /.htaccess (1 901 octets), ce qui permet à un pirate d'accéder à l'intégralité de votre ensemble de règles, y compris les chemins d'accès que vous considérez comme protégés et le plugin de sécurité à l'origine de ces règles.
  • /wp-content/debug.log (220 octets), où sont consignées les erreurs PHP. Les journaux de débogage contiennent généralement des chemins d'accès aux fichiers, des extraits de requêtes et, parfois, des données transmises.

Aucune de ces informations n'est dangereuse en soi. Ensemble, elles constituent la phase de reconnaissance menée par un attaquant avant de choisir une technique, et elles sont collectées automatiquement par des outils d'analyse.

Action : refuser l'accès via le Web aux fichiers dont le nom commence par un point, ainsi qu'aux .log fichiers, au niveau du serveur. Sur Nginx, cela correspond à deux règles qui couvrent à la fois ces trois fichiers et de nombreux autres similaires.
Moyen M-5 24 fichiers .htaccess sur l'ensemble du site, serveur identifié comme nginx

Toutes les règles de sécurité sur lesquelles s'appuie ce site ont été conçues pour un serveur web différent.

Nous avons détecté 24 fichiers de règles d'accès sur l'ensemble du site, créés par vos plugins de sécurité, de sauvegarde et de formulaires. Tous utilisent la syntaxe Apache. Or, votre serveur utilise nginx, qui ignore complètement ces fichiers.

Il s'agit d'une conséquence systématique plutôt qu'isolée : le blocage de PHP dans le dossier « media » (C-3), la protection du fichier de configuration, la Deny from all Le dossier des factures (C-2) et le dossier de mise en attente des sauvegardes apparaissent tous deux comme des protections actives dans le tableau de bord d’un plugin, alors qu’ils ne remplissent en réalité aucune fonction. C’est la seule et unique raison pour laquelle plusieurs constatations de ce rapport revêtent une gravité aussi importante.

Action : intégrez les règles essentielles dans votre configuration Nginx : pas de PHP dans le dossier « media », pas d'accès aux fichiers « . », pas d'accès aux dossiers « document » et « invoice », pas d'accès aux dossiers de sauvegarde. Cessez ensuite de considérer les tableaux de bord des plugins comme la preuve que ces protections sont bien en place.
Moyen M-6 Paramètre d'enregistrement activé, rôle par défaut : abonné

Tout le monde peut créer un compte sur le site

Les inscriptions sont ouvertes, et les nouveaux comptes se voient attribuer le rôle d'« abonné ». Cela semble être un choix délibéré, compte tenu de la boutique, du système de réservation et des cours en ligne ; de plus, la liste des comptes correspond à celle de véritables clients : les pics d'inscriptions observés en février et mars coïncident avec la période des déclarations d'impôts.

Ce point figure ici car un formulaire d'inscription ouvert constitue la première étape classique des attaques visant à obtenir des privilèges plus élevés. Plusieurs plugins de ce site ont par le passé présenté des failles que seul un utilisateur connecté pouvait exploiter, et une inscription ouverte signifie que n'importe qui peut devenir un utilisateur connecté.

Quelques comptes utilisent des adresses e-mail jetables ou anonymes. Aucun d'entre eux ne dispose de privilèges.

Mesure : conserver l'enregistrement si l'entreprise en a besoin, et en contrepartie veiller à ce que les plugins soient à jour, car c'est de cela que dépend le risque. Si ce n'est pas nécessaire, désactivez-le.
Moyen M-7 Clé du gestionnaire de fichiers, paramètres d'authentification HTTP du plugin de sauvegarde

Les identifiants des plugins désinstallés sont toujours stockés dans la base de données

Deux plugins qui ne sont plus installés ont laissé des identifiants : un gestionnaire de fichiers a laissé sa clé d'accès, et un plugin de sauvegarde a laissé des paramètres d'authentification HTTP enregistrés. Nous n'avons pas lu ces valeurs.

Un gestionnaire de fichiers mérite d'être mentionné pour une deuxième raison. Il permet un accès complet au système de fichiers depuis le navigateur, et on en trouve des traces à plusieurs endroits sur ce site, ce qui prouve qu'il a bien fonctionné ici à un moment donné. C'est le genre d'outil qui permet, à partir d'un seul compte administrateur compromis, d'obtenir un accès complet au serveur.

Action : supprimez ces paramètres obsolètes et, si l'un ou l'autre de ces identifiants a été réutilisé ailleurs, modifiez-le.
Moyen M-8 wp-config.php

Les failles de configuration qui aggravent un incident au-delà de ce qui serait nécessaire

Trois éléments, qui, pris isolément, ne présentaient aucun danger, mais dont chacun a amplifié l'impact des événements.

  • La journalisation complète des requêtes de la base de données est activée en environnement de production, ce qui explique pourquoi le journal des requêtes décrit dans H-1 contient des hachages de mots de passe et des données clients.
  • La valeur par défaut wp_ préfixe de table, qui permet aux outils d'attaque automatisés de deviner les noms de vos tables sans avoir à les tester.
  • Les mises à jour automatiques étant désactivées, le site dépend entièrement du calendrier de mises à jour géré, et 35 mises à jour sont actuellement en attente.

Les identifiants de votre base de données sont en soi corrects : le mot de passe n'est ni vide ni ridiculement court, et les clés de sécurité sont uniques et n'ont pas conservé leurs valeurs par défaut. Il faut désormais les modifier uniquement parce que C-1 les a rendus publics.

Action : désactivez la journalisation des requêtes sur le site en production, puis réactivez les mises à jour de sécurité automatiques ou vérifiez que le calendrier géré les applique bien.
Moyen M-9 /wp-content/updraft/ et /wp-content/wpvividbackups/

Un dossier de plugins de sauvegarde est accessible sur le Web public, et nous ne pouvons pas voir ce qu'il contient

Ces deux adresses répondent à la requête au lieu de la refuser. Cela a plus d’importance qu’il n’y paraît : les plugins de sauvegarde enregistrent des archives complètes du site dans ces dossiers, et une seule archive contient l’intégralité de la base de données, c’est-à-dire tous les hachages de mots de passe, toutes les fiches clients et toutes les clés du site, le tout dans un seul fichier téléchargeable.

Nous tenons à préciser clairement les limites de ce que nous pouvons affirmer ici. Le contenu de ces dossiers échappe au champ d’observation de cette analyse ; nous ne les signalons donc ni comme exposés, ni comme sains. Ce que nous savons, c’est que les chemins d’accès sont actifs et que nous n’avons rencontré aucun blocage.

Action : répertorier aujourd'hui ces deux dossiers sur le serveur. Si l'un d'eux contient une archive, considérer cela comme une fuite d'identifiants d'une gravité équivalente à celle du cas C-1 et déplacer les archives hors de la racine du site web. Ensuite, bloquer l'accès web à ces deux chemins au niveau du serveur, car les règles de plugin censées le faire sont des règles Apache sur un serveur Nginx.
Faible L-1 Tableau des commentaires, 28 entrées

Spam dans les commentaires en attente de modération

Vingt-huit commentaires contenant des liens vers des sites de jeux d'argent et pour adultes se trouvent dans la file d'attente des spams. Le filtre les a tous interceptés, aucun n'a jamais été publié, et aucune de vos pages ne contient ce type de contenu. Il s'agit de spams entrants courants, répertoriés uniquement pour vous informer qu'ils ont été vérifiés.

Action : vider la file d'attente des spams. Aucune autre action n'est nécessaire.
Faible L-2 Dix cadres intégrés renvoyant vers test1.northgate-advisors.com

Le contenu pointe toujours vers une adresse de préproduction

Dix cadres intégrés au contenu du constructeur de pages renvoient toujours vers un sous-domaine de préproduction. Cela ne constitue pas en soi une faille de sécurité, mais il convient de vérifier que le site de préproduction n'est pas accessible au public, car une copie d'un site contient généralement les mêmes données sans les modifications apportées lors de la maintenance.

Action : rediriger le contenu vers le site de production et protéger l'accès au site de test par un mot de passe.
Faible L-3 Tâches planifiées, dossiers de cache, fichiers racine égarés

Résidus de deux migrations d'hébergement et de plugins supprimés

Le site porte les traces visibles de son histoire : des tâches planifiées appartenant à un plugin de sécurité, un plugin de traduction, un journal d’activité et un outil de gestion qui ont tous disparu depuis longtemps, le nom d’une option qui conserve encore l’ancien préfixe de la table, plusieurs dossiers de cache obsolètes, une page de maintenance résiduelle faisant référence à l’ancien chemin d’accès du serveur, et une copie d’un fichier d’index. Quatorze dossiers aux noms aléatoires dans wp-content Elles peuvent paraître inquiétantes, mais il s’agit en réalité du cache des ressources du plugin de bannière de cookies, qui ne contient que du code JavaScript ; douze d’entre elles sont vides.

Il n'y a là aucune intention malveillante. C'est important, car c'est dans ce désordre que se cachent les fichiers malveillants, et parce qu'une personne qui consulte ce site à la hâte ne peut pas faire la différence.

Action : supprimer les tâches planifiées orphelines, ainsi que les dossiers obsolètes et les fichiers égarés. Cela vaut la peine de le faire une fois, mais correctement.
Faible L-4 Déclencheurs, procédures et événements planifiés au niveau de la base de données

Une vérification de la base de données ne peut pas être effectuée depuis l'extérieur

Les logiciels malveillants peuvent parfois se cacher au sein même du moteur de base de données, sous la forme d'un déclencheur ou d'une procédure stockée qui réinstalle une charge utile à chaque chargement d'une page. Il s'agit là de la seule catégorie de cachette qui ne peut être exclue d'après les informations disponibles ; ce cas est donc signalé comme « non résolu » plutôt que comme « nettoyé ».

Trois requêtes suffisent pour le déterminer en quelques secondes, en les exécutant sur la base de données en production :

SELECT TRIGGER_NAME, EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT
  FROM information_schema.TRIGGERS;
SELECT ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_DEFINITION
  FROM information_schema.ROUTINES;
SELECT EVENT_NAME, STATUS, EVENT_DEFINITION
  FROM information_schema.EVENTS;

Sur un site WordPress classique, ces trois éléments ne renvoient aucun résultat. Il convient de lire attentivement tout ce qui y est indiqué.

Action : demandez à votre hébergeur ou à votre agence d'exécuter ces trois requêtes et de vous envoyer les résultats.

Les adresses que nous avons vérifiées sont accessibles au public

Chacune de ces demandes a été formulée sur Internet le 30 juillet 2026 et a reçu une réponse. Aucun contenu de fichier n'a été conservé.

Adresses exposées vérifiées 11 adresses
  • /wp-config.php.wpdebugtoolkit-backupmot de passe de la base de données, toutes les clés, clé de messagerie
  • /wp-content/uploads/client-statements/statement_5393.pdf1 sur 5 606 documents fiscaux
  • /wp-content/billing_invoices_temp/invoice-4395.pdf1 sur 27 factures
  • /wp-content/uploads/fluentform/1 113 formulaires envoyés, dont un vérifié
  • /wp-content/uploads/fluent-support/ticket_140/1 sur 1 248 pièces jointes à un ticket
  • /wpdebugtoolkit/console de journalisation des requêtes
  • /wp-content/share-one-drive-cache/1.shortcodesdossier « token » accessible en lecture
  • /.user.iniChemins d'accès au serveur divulgués
  • /.htaccess1 901 octets, ensemble complet de règles divulgué
  • /wp-content/debug.logJournal des erreurs PHP lisible
  • /wp-content/updraft/Réponses concernant le dossier de sauvegarde, contenu inconnu
Il convient de noter un autre résultat positif. L'exécution de PHP dans le dossier « media » a été testée à l'aide d'un fichier qui s'y trouvait déjà, et celle-ci s'est déroulée sans problème, ce qui correspond au critère C-3. Aucun fichier n'a été mis en ligne sur votre site au cours de cet audit, et aucune modification n'y a été apportée.

Contrôles réussis

Ce qui s'est avéré normal a été clairement indiqué, car il est tout aussi important de savoir ce qui a été écarté que de connaître les résultats.

Approuvé 47 005 fichiers PHP examinés

Aucun code malveillant n'est présent dans les fichiers du site

Chaque fichier PHP a été analysé à la recherche de code caché ou chiffré, de code s'exécutant quel que soit le contenu envoyé par un visiteur, ainsi que de petits chargeurs réinstallant des logiciels malveillants supprimés. Rien n'a été détecté. Le cœur de WordPress, le thème actif, les trois plugins chargés automatiquement et les fichiers d'entrée du site sont tous tels qu'ils ont été fournis par leurs éditeurs, sans aucun code ajouté.

Les deux éléments de ce site capables d'exécuter du code arbitraire sont des outils légitimes, qui ont fait l'objet d'une analyse ligne par ligne : le gestionnaire d'extraits de code et la console de diagnostic dans H-1. Ces deux éléments soumettent cette fonctionnalité à une vérification par l'administrateur.

Publiés Articles, données de page, commentaires, liens

Vos pages et votre contenu sont propres : aucun lien injecté, aucun spam

Aucun script injecté, aucun lien caché, aucun spam destiné aux moteurs de recherche et aucun code de redirection dans aucune page ni dans aucun paramètre de page. Chaque cadre et chaque script intégré renvoie vers une destination attendue : votre propre site, vos outils d'analyse, votre bannière de consentement, Google Maps, YouTube et un outil de modélisation financière. Les liens sortants renvoient vers les autorités fiscales cantonales et fédérales suisses, Wikipédia et d'autres sites similaires. Aucun élément de votre contenu publié n'a été modifié.

Approuvé Paramètres, tâches planifiées, extraits de code, liste des plugins actifs

Aucune persistance cachée dans la base de données

C'est la vérification la plus importante après une intrusion, car c'est celle qui résiste au nettoyage des fichiers. Les dix extraits de code stockés ont tous été lus dans leur intégralité et sont tous des travaux légitimes, soit les vôtres, soit ceux de votre agence. Aucune tâche planifiée ne contient de code. Aucun paramètre ne renferme de charge utile encodée. Chaque plugin actif dispose d'un dossier correspondant sur le disque ; il n'y a donc aucun plugin caché s'exécutant uniquement à partir de la base de données. Les paramètres d'adresse de votre site sont corrects et aucun changement d'adresse e-mail de l'administrateur n'est en attente.

Chaque source de mise à jour d'un plugin renvoie à son véritable éditeur, et il n'y a aucun signe de copies piratées de plugins, qui constituent un moyen courant pour les logiciels malveillants de s'introduire sur un site avec le consentement même de son propriétaire.

Adopté Historique des e-mails et volume des campagnes

Votre site n'est pas utilisé pour envoyer du spam

Le volume de courrier reste stable, entre 11 000 et 14 000 messages par mois depuis plus de trois ans, ce qui correspond au calendrier de diffusion de votre newsletter, avec les pics habituels en janvier et en juillet. On ne constate ni pic soudain ni envoi inexpliqué ; l'accès obtenu par le pirate en juillet n'a donc pas été utilisé pour transformer le site en relais de spam. Cela signifie également que la réputation d'envoi de votre domaine reste intacte.

Approuvés 317 comptes examinés

Il ne reste aucun administrateur inattendu, et aucun privilège caché n'a été accordé

Les 317 comptes ont tous été vérifiés au regard des autorisations qui leur sont attribuées. Les huit administrateurs appartiennent tous à votre équipe, à votre agence ou à un fournisseur de plug-ins, et aucun compte ne dispose d’autorisations accordées en dehors du mécanisme habituel. Le schéma d’enregistrement des clients correspond à votre activité, y compris le pic d’activité lié à la période fiscale. Les trois comptes de pirates décrits dans le document C-4 ont été supprimés, ce qui est confirmé.

Que faire, dans l'ordre ?

Classés par ordre de ce qui réduit le plus rapidement le risque. Les quatre premiers sont pour aujourd’hui.

  1. Supprimez la copie de la configuration qui a fait l'objet d'une fuite et procédez à la rotation des éléments qu'elle a exposés. Supprimer wp-config.php.wpdebugtoolkit-backup, puis modifiez le mot de passe de la base de données, régénérez les neuf clés d'authentification et les sels, et générez une nouvelle clé API Mailgun. Le rotation C'est là l'essentiel : le fichier a pu être lu, ces valeurs doivent donc être considérées comme connues.
  2. Restriction de l'accès public aux documents des clients. Bloc uploads/client-statements/, billing_invoices_temp/, uploads/fluentform/ et uploads/fluent-support/ sur le serveur web, puis ne servez ces fichiers qu'à l'aide d'un script qui vérifie l'identité de la personne qui les demande. Demandez à votre hébergeur les journaux d'accès de ces dossiers afin de pouvoir déterminer si quelqu'un les a effectivement consultés.
  3. Empêchez PHP de s'exécuter dans le dossier « media ». Une seule règle Nginx. C'est cette condition qui a transformé un fichier téléchargé en une porte dérobée fonctionnelle, et elle est toujours en place.
  4. Identifiez l'adresse 192.0.2.117 et mettez fin à toutes les sessions d'administrateur. Si personne ne revendique cette adresse, partez du principe qu'un intrus dispose toujours d'un accès administrateur et agissez en conséquence. La fermeture de toutes les sessions se fait automatiquement lorsque vous effectuez la rotation des clés à l'étape 1.
  5. Mettez à jour les quatre plugins présentant des failles de sécurité connues (Fluent Forms, Google Tag Manager, Loco Translate, Widget for Google Reviews), puis procédez aux 31 mises à jour restantes en attente.
  6. Exigez l'authentification à deux facteurs pour les huit comptes administrateur et réinitialisez leurs mots de passe. À l'heure actuelle, un seul d'entre eux dispose d'un deuxième facteur d'authentification, alors qu'une attaque par force brute visant les noms de vos collaborateurs est en cours.
  7. Désactiver l'éditeur de fichiers. Ajouter DISALLOW_FILE_EDIT et FORCE_SSL_ADMIN dans le fichier de configuration.
  8. Supprimez la console de diagnostic du site en production, ainsi que le fichier d'interception de la base de données et le paramètre d'enregistrement des requêtes. Si elle doit rester en place, limitez son accès par adresse IP et cessez de l'exclure des analyses de logiciels malveillants.
  9. Traduisez les règles de protection dans Nginx. Les 24 fichiers de règles d'accès de ce site sont tous écrits pour Apache et ne servent à rien. Tant qu'ils n'auront pas été traduits, plusieurs protections que vous croyez actives ne le sont pas.
  10. Réduisez le nombre d'administrateurs et fermez le canal de gestion à distance, ou vérifiez qu'il est effectivement utilisé. Supprimez les comptes inactifs des agences et des fournisseurs.
  11. Nettoyez les fichiers résiduels: les fichiers de modèles compilés dans le dossier « media », l'ancienne copie du plugin (en double), le dossier contenant le jeton OneDrive exposé, les identifiants laissés par les plugins supprimés et les tâches planifiées orphelines.
  12. Demandez à votre hébergeur les journaux d'accès au serveur web correspondant à la période du 15 au 28 juillet. C'est la seule source qui peut révéler la requête à l'origine de l'installation de la porte dérobée, ce qui vous permettra de vérifier que le point d'entrée est bel et bien fermé et non pas simplement inactif. Faites-en la demande sans tarder, car les délais de conservation sont généralement courts.

Qu'est-ce qui empêcherait que cela ne se reproduise ?

Dix des points soulevés ci-dessus trouvent leur réponse dans des éléments déjà présents dans votre tableau de bord « WP Umbrella ». Trois d’entre eux font actuellement l’objet d’un suivi. Les sept autres ne nécessitent qu’un simple réglage, et chaque ligne ci-dessous renvoie directement à la page correspondante.

3
Déjà visionné pour vous
7
À un réglage près
Passez à l'action dès aujourd'hui
Cela ne s'applique pas ici En direct, alertes en quelques jours Ouvrir le journal d'activité

Activer le journal d'activité

Il enregistre les connexions, les nouveaux comptes, les nominations d'administrateurs, les modifications de paramètres et les modifications de fichiers, en indiquant à chaque fois l'adresse et l'heure. Ces données sont conservées en dehors de votre site, de sorte que rien sur le site ne puisse les effacer.

Deux contrôles automatiques lui transmettent des informations. L'un signale un compte administrateur qui n'a pas été créé par WordPress, ce qui correspond exactement aux trois comptes de juillet (C-4). L'autre vérifie si votre serveur respecte réellement vos règles d'accès, ce qui correspond à M-5, et explique donc pourquoi le dossier « media » exécute toujours du code PHP (C-3). Il aurait également permis d'identifier la personne à l'origine des huit sessions provenant de l'adresse 192.0.2.117 (H-2).

Réponses :C-4H-2M-5C-3
Cela ne s'applique pas ici Dès le chargement de la page suivante Trempe à l'air libre

Activer la limitation du nombre de tentatives de connexion et bloquer l'énumération des utilisateurs

La campagne dans H-5 ne fonctionne que parce qu'elle utilise les vrais noms de vos collaborateurs. Le blocage de l'énumération empêche vos pages d'auteur et l'API REST de les diffuser, et la limite de débit bloque une adresse après quelques échecs. Profitez-en pour activer l'option « Masquer les messages d'erreur de connexion » sur cette même page.

Aucune de ces trois méthodes ne remplace l'authentification à deux facteurs exigée par H-5, que nous ne proposons pas.

Réponses H-5
Cela ne s'applique pas ici Dès le chargement de la page suivante Trempe à l'air libre

Activer / Désactiver l'éditeur de fichiers de thèmes et de plugins

C'est exactement la solution décrite par H-4 : un simple bouton à bascule au lieu d'une modification du fichier wp-config.php. Une session administrateur disposant de cet éditeur permet de modifier n'importe quel fichier de thème ou de plugin directement depuis le navigateur, ce que les comptes de juillet auraient pu faire.

Réponses H-4
Cela ne s'applique pas ici Selon le calendrier que vous avez établi Plug-ins ouverts

Activer les mises à jour automatiques

Ils appliquent les mises à jour selon un calendrier défini, prennent des photos de vos pages clés avant et après, et annulent une mise à jour lorsque les pages changent. C'est précisément ce dernier point qui explique pourquoi 35 mises à jour ont pu s'accumuler (M-8).

Réponses M-8
Nous sommes déjà à votre service
Actif En direct, au fur et à mesure de la publication des avis Vulnérabilités non corrigées

Votre liste de vulnérabilités est déjà disponible

Les quatre plugins mentionnés dans H-3 figurent sur cette page avec leur avis de sécurité, et y figuraient déjà avant le début de cette analyse.

Il en allait de même pour l'alerte de niveau 100 concernant une faille de sécurité le 28 juillet. Aucune des deux n'a été consultée. Renseignez-vous auprès de votre agence pour savoir qui consulte cette page et à quelle fréquence, car c'est la seule chose qu'aucun paramètre ne peut faire à votre place.

Réponses H-3
Actif Sur chaque chèque Santé sur Open Site

Les plugins et thèmes désactivés sont déjà pris en compte

Le plugin de gestion à distance de la version M-2 et l'ancienne copie en double de OneDrive de la version M-3 sont tous deux pris en compte dans ce décompte.

Cela vous indique qu'ils existent. Cela ne vous dit pas que M-2 détient toujours une clé de connexion liée à deux comptes administrateur, c'est pourquoi il s'agit ici d'un constat et pas simplement d'un chiffre.

RéponsesM-2M-3
Ce que cela ne prétend pas. Aucune de ces mesures n’aurait pu, à elle seule, empêcher l’intrusion de juillet. Ce qu’elles modifient, c’est le temps pendant lequel un incident peut se poursuivre avant d’être détecté. Dans le cas présent, il s’est écoulé six jours entre l’alerte relative à la porte dérobée et le moment où quelqu’un l’a prise en compte, et environ un an entre le moment où vos règles de protection ont cessé de fonctionner et celui où ce rapport l’a signalé.

Vous souhaitez que nous le nettoyions pour vous ?

Si vous préférez ne pas vous charger vous-même de cette liste, nous pouvons nous occuper de la mise en conformité.

Nettoyage géré
Nous mettons fin à l'exposition et sécurisons le site
180 €intervention ponctuelle

Ce que nous faisons

  • Mesures de confinement : supprimer la copie de la configuration qui a fait l'objet d'une fuite et mettre fin à toutes les sessions actives.
  • Mettez à jour le mot de passe de la base de données, toutes les clés d'authentification et la clé API de messagerie.
  • Restreindre l'accès public aux documents fiscaux, aux factures, aux pièces jointes des formulaires et des tickets, ainsi qu'au dossier « token » au niveau du serveur.
  • Bloquez l'exécution du PHP dans le dossier « media » à l'aide d'une règle de serveur qui ne dépende pas des paramètres du plugin.
  • Réinstallez le cœur de WordPress et tous les plugins à partir des sources officielles, puis appliquez les mises à jour en attente.
  • Supprimez la console de diagnostic, la copie du plugin en double et les fichiers exécutables restants.
  • Nous allons procéder à une nouvelle analyse complète du site et vous remettre un rapport comparatif « avant/après ».
  • Harden : désactivation de l'éditeur de fichiers, activation forcée du protocole HTTPS dans l'espace d'administration, mise en place de l'authentification à deux facteurs pour les administrateurs.

Ce que nous attendons de vous

  • Accès SFTP ou FTP au site.

C'est tout ce dont nous avons besoin pour commencer. Tout le reste (rotation des identifiants, fermeture du point d'entrée, renforcement de la sécurité) est pris en charge dans le cadre de la phase de nettoyage.

Obligation de moyens. Nous mettons tout en œuvre, mais ne pouvons garantir à 100 % l'absence de réinfection tant que la faille d'accès n'est pas comblée. Sur ce site, la faille d'accès probable est un plugin obsolète ; par conséquent, le fait de maintenir les mises à jour à jour après le nettoyage contribue à maintenir cette faille comblée.
Aucun résultat n'a été constaté à ce niveau de gravité.