Aujourd’hui nous allons étudier un cas réel d’un client qui m’a contacté après s’être fait installé un malware son site WordPress contre son gré. L’attaque aurait pu passer inaperçue si Google n’avait pas repéré des liens malicieux et bloqué son site via un message assez décourageant:

Etape 1: comprendre le souci
« Il vaut mieux prévenir que guérir« , et c’est tout aussi vrai dans le cas d’un piratage. Mettre en place des protections est bien plus simple que de se battre contre un code malveillant déjà présent. Ici l’attaque a été fourbe: les liens n’étaient pas visible dans le code source si un utilisateur classique inspectait le code source de la page. Et pour le coup, Google n’a pas spécialement aidé: aucune vraie précision sur ce qui le gênait sur le site (à part « injection de contenu », ce qui aide peu).
À l’aveugle et sans savoir ce qui causait l’alerte j’ai donc commencé par faire un grand coup de nettoyage: suppression de dépendances trop vieilles ou inutilisées, ré-écriture de tous les http vers https (via un Better Search Replace pour la partie base de données, mais également directement dans les fichiers du thème). Le site ayant reçu énormément de spam, nous avons aussi temporairement désactivé et caché tous les commentaires au cas où le filtre aurait laissé passer un lien malicieux. J’ai également fait une mise à jour manuelle du coeur de WordPress au cas où ça puisse venir de là.
Après un beau coup de propre, Google a invalidé les modifications, indiquant donc que le souci était plus profond. Mais un indice cependant: il nous a fourni une URL qui lui posait problème mais qui chez nous menait vers une 404. Ce qui nous a mis la puce à l’oreille.
Scan externe de son site
Je vous avais déjà parlé d’outils comme WPScan, qui sont très utiles pour de la détection de failles. Mais ce genre d’outils ne servent que pour la prévention. On peut toujours fermé les portes, mais si le problème est déjà dedans ça ne change pas grand chose dans l’immédiat.
Je suis cette fois-ci passé par un premier outil: Sucuri (promis je ne suis pas sponsorisé). Cet outil va analyser le site en tant que bot et nous afficher les balises qui posent problème. Une fois que nous saurons quel code et injecté et où. Nous pourrons ainsi chercher de façon plus précise !

Nous avons donc maintenant la source du problème. Quand il a affaire à un bot, le malware injecte des URLs qui également sont cachées visuellement. Un souci assez courant pour faire monter des sites dans les moteurs de recherche. Ce qui du coup est peu efficace vu que Google les considère comme du spam.
Maintenant, la recherche. Plusieurs pistes:
- soit le code est trouvable tel quel
- soit le code est obfusqué
- soit le code vient d’un serveur distant
Après pas mal de recherche manuelle dans le code, impossible de trouver quelque chose d’évident. Pour éviter de garder le site bloqué trop longtemps, il fallait donc changer de stratégie.
Scan interne de son site
J’ai tenté plusieurs outils différents. Le problème majeur venait de la version php utilisée: 5.6. Une grande majorité des plugins n’étaient disponibles qu’à partir de php 7. Je me suis arrêté sur deux particulièrement que j’ai trouvé efficace:
- MalCare, qui fait des scans réguliers des fichiers, peut les corriger automatiquement et propose un firewall intégré
- Anti-Malware qui fait simplement des scans interne des fichiers
Le premier ne corrige les erreurs et n’affiche les fichiers infectés qu’avec la version payante. Je savais donc que j’avais deux fichiers piratés, mais pas lesquels. Et c’est donc Anti-Malware qui m’a trouvé comment finir de corriger tout ceci. Je recommande cependant malgré tout MalCare pour la partie surveillance et Firewall.
Surveillez la santé de votre site
Ici le manque d’infos et d’accès à certains outils ont ralenti la correction. Les dégâts étaient peu considérables d’un point de vue technique. En revanche cette attaque a valu au client presque une semaine de manque à gagner. Et surtout, une attaque sur ce type de projets aurait pu être bien plus destructrice: suppression ou vol de données, modification plus en profondeur de fichiers source, …
Penser à faire une passe de sécurité de votre site de façon régulière est donc un réflexe à avoir. Nettoyer un malware est bien plus complexe que d’éviter d’en attraper. Si ça vous arrive, vous pouvez toujours faire appel à un professionnel bien sûr. Mais encore une fois: mieux vaut prévenir que guérir !