WordPress Hack SEO : achetez vos thèmes et plugins !

C’est mon index qui me l’a dit

En voulant contrôler l’indexation dans les moteurs de recherche du site d’un nouveau client, j’ai découvert à mon grand désarroi que les résultats de recherche renvoyaient une description pas très catholique conforme au contenu du site et à ses balises dédiées.

resultats-hack-seo

À la première vérification de base, en affichant la source des pages en question, aucune trace de ce texte frauduleux.

Quelqu’un a donc “hacké” les résultats de recherche, vicieux et peu évident à détecter dans la mesure où il faut regarder les résultats de recherche avec la commande “site:…” dans le moteur de recherche !

Maintenant, il faut comprendre comment cela a été fait et restaurer un “fonctionnement” normal.

Si c’est gratuit, ça peut te coûter cher !

À partir de cet instant, il va falloir faire de la “rétroingénierie” pour trouver comment fonctionne ce hack !

Le site tourne sous WordPress, est habillé par un thème “commercial” et utilise quelques extensions gratuites.

Mes soupçons sont vite dirigés vers le thème WordPress qui affiche dans l’administration une bannière “WP…er” que je ne connais pas.
“WP…er” est apparemment un site qui se targue de fournir gratuitement des thèmes WordPress commerciaux. Pas très légal tout ça ?!

Mes recherches sur “wordpress hack seo” confirment mes doutes sur le fait que le thème puisse être responsable de cela mais ne fournissent pas de clés vers une solution.

Image pas très pieuse

Plutôt convaincu par le risque potentiel d’un produit payant rendu gratuit par de bonnes âmes, je commence par acheter le thème auprès de sources officielles.

Je compare les dossiers des deux thèmes et découvre dès la racine un dossier “images” contenant un visuel nommé “social.png” dont mon Mac ne sait étrangement pas afficher l’aperçu. Tiens, ce dossier n’est pas dans la version commerciale du site ?
Bien inspiré, je tente le tout pour le tout et ouvre l’image suspecte dans un éditeur de texte (TextMate 2 en l’occurrence).

Ô surprise, cette image renferme du code PHP très louche : tout est sur une ligne, les fonctions et variables ont des noms incompréhensibles…

social-png-raw

C’est malin comme technique, ce n’est absolument pas l’image de « pub » que j’avais aperçue, mais un autre fichier « inclus » dans une des fonctions PHP du thème, modifiée pour l’occasion.

Téléphone, maison !

Après de longues minutes à remettre l’indentation de ce code à plat et à tenter de déchiffrer son fonctionnement, voici mes constatations :

  • ce fichier enregistre des informations codées dans les options de WordPress (table MySQL “wp_options”)
  • il envoie (et va chercher) des données via la librairie “Curl” de PHP vers des serveurs aux adresses bien trop cryptées pour être honnêtes
  • il envoie un email (au contenu non déterminé) qui a pour objet “Phone Home”

phone-home-social

Avec le nommage abscon des fonctions et variables et le découpage en dizaines d’actions il est particulièrement difficile d’établir tout ce que fait réellement ce code malicieux. Une chose est sûre : il est responsable de l’altération des résultats de recherche.

Autres (quasi) certitudes :
le hack n’a altéré aucun des fichiers du site (pas de dates de modification bizarres)
aucune modification directe du contenu (rien de visible sur les pages ni dans la source du code HTML affiché)
aucune modification / transmission de codes d’accès (utilisateurs WordPress car mot de passe cryptés, et codes FTP car non stockés)

A la recherche de l’exploit

J’ai bien essayé d’utiliser les extensions TAC et Exploit Scanner pour trouver d’autres failles amenées avec le thème piraté, mais sans succès. Pire que ça, les deux outils ne détectent absolument rien de suspect !

Eliminer, nettoyer et sécuriser

La meilleure solution pour se débarrasser du problème et de ses conséquences consisterait à reconstruire le site de zéro, en installant toutes les distributions officielles (WordPress, thème et extensions) et en n’important surtout rien de l’ancien site par mesure de précaution maximale.
Malheureusement, cette option sera un dernier recours pour moi, car c’est un énorme travail vue la quantité de contenus et la complexité de la configuration du thème et des extensions.

Je préfère “prendre le risque” de me borner à un grand ménage et attendre quelques jours afin de mesurer son efficacité et décider si, oui ou non, la réinstallation complète est absolument nécessaire !

Supprimer les ajouts

Dans le code malicieux on trouve les références à deux entrées dans la base de données de WordPress : “WP_CLIENT_KEY” et “wp_data_newa” dans la table “wp_options”. Elles ne sont utilisées par rien d’autre donc aucun scrupule à les supprimer.

wplocker-database

Restaurer des fichiers propres

Dans le doute, je remplace tous les fichiers d’installation de WordPress (à l’exception de “wp-config.php”) ainsi que ceux du thème et des extensions.
Cette opération est sans risque majeur dans la mesure où tout ce qui concerne la configuration et la personnalisation du site se trouve dans la base de données.

Sécuriser l’installation

SI je suis certain que les codes FTP n’ont pu être volés ou que ceux de la base de données ne présentent aucun risque (car utilisés en “local” par le serveur), il n’en n’est pas de même pour ceux des utilisateurs et les clés d’authentification WordPress (situées dans le fichier “wp-config.php”).

Je modifie donc tous les mots de passe des utilisateurs WordPress et génère de nouvelles clés par le biais de l’API WordPress (il suffit de remplacer les lignes correspondantes dans “wp-config.php”).

Accélérer le retour à la normale

Maintenant que les causes sont traitées, il faut s’attaquer aux conséquences : rétablir des résultats de recherche non corrompus !
Cette étape est la plus incertaine : impossible de connaître le délai exact pour que le moteur de recherche élimine les informations indésirables.

Pour me donner le maximum de chances, j’utilise les outils webmaster pour réaliser les opérations suivantes :
– soumission d’un nouveau fichier “sitemap”
– suppression de l’index des pages peu importantes ou mal positionnées

Désormais il n’y a plus qu’à attendre !

Pirater ça peut faire mal !

J’enfonce une porte ouverte mais vouloir à tout prix gagner quelques euros (ici, 55$) peut coûter cher : déclassement dans les moteurs de recherche, image de la marque écornée vis à vis des internautes, coût de la réparation, etc…

Si vous n’avez pas les moyens de vous payer un logiciel, considérez plutôt les alternatives moins chères voire gratuites ! Ce n’est pas parce que ce n’est pas cher que c’est moins bon…

Combien d’amis ou de voisins se sont ramassé un malware car ils pensaient que Photoshop était la meilleure solution pour retoucher les yeux rouges du chat sur la photo de Noël alors que d’autres solutions bien plus adaptées et abordables font le job ?
Pensez-y et faites réfléchir vos connaissances avant d’aller voler un logiciel hors de prix et parfois bien mal adapté et de prendre des risques considérables avec ses données personnelles (piratage ou perte pure et simple) !

Résultats : après 5 jours, tout est revenu à la normale. Alors si cet article vous donne les clés pour rendre un thème piraté sain, je ne l’encourage absolument pas, par sécurité et par respect pour le travail des développeurs.

Mise à jour : Merci à @doopix qui signale ce lien très instructif au sujet des thèmes WordPress gratuits.

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>