désinfecter un site wordpress piraté
5/5 - (5 votes)

Table des matières

Comment réparer un site WordPress piraté ?

WordPress c’est sympa, c’est pratique, mais quand ça se fait pirater, c’est la galère. Mais pas de panique, je vais te montrer comment nettoyer tout ça et remettre ton site sur pieds.

Quels sont les symptômes d’un site piraté ?

 

Modifications inexplicables du site

  • Contenu Altéré : Des articles modifiés, des liens douteux ajoutés, ou même des pages entières qui apparaissent ou disparaissent. C’est le signe classique d’une compromission. Check les révisions de tes articles pour repérer des modifications non-autorisées. Dans le cas du piratage par mots clés japonais, les pirates injectent du contenu SEO en japonais dans tes meta titles et descriptions. C’est vicieux parce que ça change pas forcément l’apparence de ton site, mais ça sabote ton SEO. Google commence à voir ton site comme une source de spam en japonais.
  • Nouveaux Utilisateurs : Des comptes administrateurs ou éditeurs inconnus. Va direct dans wp_users et wp_usermeta dans ta base de données pour voir si y’a des intrus.
  • Configurations Modifiées : Des changements dans tes fichiers .htaccess, wp-config.php ou dans les options de la base de données. Un œil aguerri peut détecter des redirections suspectes ou des modifications dans les réglages de WordPress.

 

Performance en berne (surcharge du CPU)

  • Chargement Lent : Si ton site met une éternité à charger, c’est peut-être dû à des scripts malveillants qui s’exécutent en arrière-plan. Utilise des outils comme GTmetrix ou Google PageSpeed Insights pour analyser les performances de ton site.
  • Consommation Excessive de Ressources Serveur : Une utilisation anormale de la CPU ou de la mémoire sur ton hébergement peut indiquer une activité malveillante. Jette un œil aux logs de ton serveur pour déceler des anomalies.

 

Alertes de Sécurité

 

Notifications d’Antivirus

  • Alertes Antivirus : Lorsque toi ou tes visiteurs recevez des notifications d’antivirus en accédant à ton site, c’est un indicateur clair d’une infection. Ces alertes peuvent signaler la présence de malwares, des scripts malveillants ou des tentatives de phishing. C’est une indication que ton site distribue, volontairement ou non, du contenu potentiellement dangereux

 

Avertissements de Navigateur

  • Avertissements des Navigateurs : Les navigateurs comme Chrome et Firefox sont assez malins pour détecter et avertir les utilisateurs quand ils tombent sur un site compromis. Si ton site déclenche ces alertes, c’est un signe que quelque chose de pas net se trame dans les coulisses.

 

alerte malware wordpress navigateur

 

Blacklistage par Google

  • Google bloque le site tant qu’il n’est pas réparé : Si Google blackliste ton site, tu seras averti via la Search Console Google (à condition que tu ais déjà enregistré ton site dedans). Ça veut généralement dire que ton site distribue des malwares ou se livre à du phishing. C’est le moment de passer en mode urgence, car si tu ne fais rien, ton site disparaîtra alors totalement des résultats de recherche.

 

alerte sécurité malware search console

 

Intervention de l’Hébergeur et site hors ligne

  • Blocage par l’Hébergeur : Parfois, c’est ton hébergeur qui tire la sonnette d’alarme. Si Netcraft ou une autre autorité de cybersécurité informe ton hébergeur d’une activité suspecte, il peut bloquer ton serveur pour contenir la menace.
  • Communication avec l’Hébergeur : Si ton hébergeur bloque ton site, entre en contact avec lui rapidement via le support par téléphone ou en ouvrant un ticket. Ils peuvent te fournir des infos sur la nature du problème et comment le résoudre. Parfois, ils peuvent même t’aider dans le processus de nettoyage, mais la, ça dépendra clairement de l’hébergeur.

 

Comment reconnaître un fichier malveillant injecté par le pirate, d’un fichier normal ?

Quand un pirate s’infiltre dans ton site, il peut laisser derrière lui des fichiers qui ressemblent à ceux que tu connais, mais avec une petite touche toxique. Alors, comment les repérer ?

 

Emplacement des Fichiers

Si tu trouves un fichier PHP là où tu devrais normalement avoir des images ou des médias, c’est suspect. C’est comme si tu trouvais un livre de cuisine dans la section des thrillers de ta bibliothèque. Ça colle pas.

 

Les Noms Énigmatiques

Des fichiers avec des noms bizarres ou qui imitent ceux de WordPress, mais avec une petite différence ? C’est souvent un indice que le fichier n’est pas là pour faire le bien.

 

fichier compris piratage site wordpress

 

Les Dates Qui Parlent

Un fichier que tu sais que tu n’as pas touché depuis des lustres, mais qui montre une date de modification récente, ça devrait te faire lever un sourcil. Attention, les dates peuvent aussi être manipulées dans certains cas.

 

Exemple de code malveillant injecté par un pirate

Imaginons. Tu ouvres un fichier PHP, et tu tombes sur quelque chose comme ça :

@eval(base64_decode("dW5jb2RlZCBzdHVmZg=="));

 

Pourquoi c’est louche ?

  • L’utilisation d’eval() : C’est un peu la porte ouverte à toutes les fenêtres. eval() exécute n’importe quel code PHP qu’on lui donne. Dans un fichier WordPress normal, c’est rare et risqué.
  • Le décodage Base64 : Voir base64_decode() est un drapeau rouge. C’est souvent utilisé pour cacher du code malveillant. Si tu vois ça, pose-toi des questions.

 

Contenu d’un fichier php piraté avec du code malveillant

exemple de code malveillant après un piratage de site WordPress

 

Explication du code

  1. Fonction zdagcytnxk
    • Cette fonction convertit une chaîne hexadécimale en texte ASCII. Pour chaque paire de caractères dans la chaîne hexadécimale, elle les convertit en un caractère ASCII à l’aide de chr(hexdec(...)).
    • Utilisation : pour déchiffrer des chaînes de texte encodées en hexadécimal.
  2. Fonction tmwbizhkce
    • Effectue l’opération inverse de zdagcytnxk. Elle prend une chaîne ASCII et la convertit en hexadécimal en utilisant dechex(ord(...)).
    • Utilisation : pour encoder des textes en hexadécimal.
  3. Fonction yrohkjacgq
    • Cette fonction essaie d’ouvrir un fichier en mode écriture. Si fopen échoue, elle utilise une version obfusquée de file_put_contents (notée par les caractères hexadécimaux).
    • Utilisation : pour écrire dans un fichier, avec une méthode de secours si fopen n’est pas disponible.
  4. Fonction bqcsxpfout
    • Calcule la taille d’un fichier et la retourne dans des unités lisibles (B, KB, MB, etc.). Elle utilise une chaîne hexadécimale pour appeler filesize.
    • Utilisation : pour obtenir la taille d’un fichier de manière conviviale.
  5. Fonction dlukeptrfo
    • Récupère la dernière date de modification d’un fichier et la retourne au format « d/m/y – H:i:s ». L’appel à filemtime est également masqué sous forme hexadécimale.
    • Utilisation : pour obtenir la dernière date de modification d’un fichier.

Analyse Globale

  • Le code utilise des techniques d’obfuscation (comme \x66\x75\x6E pour function_exists) pour masquer les noms de fonction PHP courants. Ceci est généralement utilisé pour éviter la détection par des outils d’analyse de code automatique.
  • La variable $pass est un exemple de stockage de données encodées. Elle pourrait être utilisée pour une sorte d’authentification ou de vérification, mais sans le contexte complet, difficile de pouvoir affirmer l’objectif exact.

D’ailleurs, lors de ce piratage, le pirate avait laissé à plusieurs reprises, une chaîne de caractères chiffré en MD5 :

signature hacker code malveillant

Par curiosité, j’ai testé cette chaîne dans un décodeur en ligne et voici le résultat :

signature du pirate

C’était en réalité, la signature du pirate qui se nomme « nekohacker ».

 

Comment nettoyer la base de données en cas d’injection de code malveillant ?

 

Créer un backup en cas de problèmes

Avant de te lancer, assure-toi d’avoir une copie de ta base de données. Si quelque chose tourne mal pendant le nettoyage, tu auras de quoi repartir sinon, ça peut être fatale et tu peux perdre définitivement certaines données et casser ton site avec une belle erreur 500.

 

Détecter les injections de code

Ouvre ta base de données avec un outil comme phpMyAdmin. Jette un œil dans wp_posts et wp_options. Tu vas chercher des trucs qui n’ont rien à faire là comme des liens bizarres, du JavaScript sorti de nulle part, des suites de caractères qui ressemblent à du charabia (comme du base64 vu plus haut).

 

Détecter le code injecté dans la base de données grâce aux requêtes SQL :

SELECT * FROM wp_posts WHERE post_content LIKE '%base64_decode(%';

Cette requête va te lister tous les posts qui contiennent la chaîne base64_decode(. C’est une fonction souvent utilisée dans les injections de code pour exécuter du contenu encodé.

 
SELECT * FROM wp_posts WHERE post_content LIKE '%http://%';

Cette requête recherche des liens commençant par « http », ce qui peut indiquer des liens externes ajoutés. Tu peux aussi ajuster pour chercher « https ».

 
SELECT * FROM wp_posts WHERE post_content LIKE '%<script>%';

Cette requête cherche les balises <script> dans le contenu de tes articles.

 
SELECT * FROM wp_options WHERE option_value LIKE '%base64_decode(%';

Comme pour les posts, cela cherche des encodages base64 qui pourraient cacher du code malveillant.

 

Changement des accès

Après une intrusion, il faut changer les serrures. Ici, ça veut dire changer tous les mots de passe. Et n’oublie pas de mettre à jour les clés de salage dans ton wp-config.php.

 

Techniques avancées pour sécuriser ton site WordPress

 

Protéger wp-config.php

Le fichier wp-config.php, c’est le cœur de ton site WordPress. Pour le blinder, tu peux ajouter des règles dans ton fichier .htaccess.

 

Code pour .htaccess :

<files wp-config.php>
    order allow,deny
    deny from all
</files>

 

Pourquoi c’est important :

Ce code bloque l’accès direct à wp-config.php depuis le web, le rendant accessible seulement depuis le serveur.

 

Désactiver l’édition des fichiers via l’admin

WordPress te permet de trifouiller les fichiers de thèmes et plugins depuis l’admin. Désactiver ça, c’est une couche de sécu en plus.

 

Code pour wp-config.php :

define('DISALLOW_FILE_EDIT', true);
Ce que ça fait :

Ça coupe l’accès à l’éditeur de fichiers dans l’interface admin, empêchant de modifier des fichiers sensibles directement.

 

Sécuriser les permissions des fichiers et dossiers (CHMOD)

Les permissions, c’est crucial. Faut que ça soit serré pour éviter les accès non autorisés.

Comment s’y prendre :

  • Les dossiers devraient être en 755 ou 750.
  • Les fichiers devraient être en 644 ou 640.
  • Le fichier wp-config.php peut même être en 600.

C’est du sérieux, ajuster les permissions limite les possibilités qu’un hacker modifie tes fichiers.

 

Récapitulatif des différentes permissions d’écriture et lecture

Type Permission CHMOD Description
Fichier Lecture 4 Permet de lire le fichier.
Fichier Écriture 2 Permet d’écrire ou de modifier le fichier.
Fichier Exécution 1 Permet d’exécuter le fichier comme un programme.
Dossier Lecture 4 Permet de lister le contenu du dossier.
Dossier Écriture 2 Permet d’ajouter ou de supprimer des fichiers du dossier.
Dossier Exécution 1 Permet d’accéder aux fichiers dans le dossier.

 

Les permissions CHMOD recommandées pour sécuriser son installation WordPress

Type CHMOD Description
Dossiers 755 ou 750 Permet la lecture, l’écriture et l’exécution pour le propriétaire, et la lecture et l’exécution pour les autres. Plus sécurisé en empêchant l’écriture non propriétaire.
Fichiers 644 ou 640 Permet la lecture et l’écriture pour le propriétaire, et la lecture pour les autres. Empêche l’écriture non propriétaire.
wp-config.php 600 Permet la lecture et l’écriture uniquement pour le propriétaire. Sécurité maximale pour ce fichier sensible.

 

Dossiers en 755 ou 750

  • Pourquoi 755 ou 750 ? : Les dossiers de ton site WordPress ont besoin d’être accessibles, mais pas modifiables par n’importe qui. Avec 755, le propriétaire (toi) peut lire, écrire et exécuter, tandis que les autres peuvent seulement lire et exécuter.
  • La Différence avec 750 : Si tu mets 750, tu restreins l’accès encore plus, empêchant les utilisateurs du groupe et les autres utilisateurs de modifier tes dossiers. C’est un cran supplémentaire en termes de sécurité, surtout si tu es dans un environnement d’hébergement partagé.

 

Fichiers en 644 ou 640

  • Raison pour 644 : Tes fichiers WordPress doivent être lus et modifiés par toi, mais seulement lus par les autres. 644 c’est le réglage standard pour ça. Ça permet d’éviter que quelqu’un d’autre sur ton serveur puisse les modifier.
  • Pourquoi envisager 640 ? : En optant pour 640, tu renforces la sécurité. Ça empêche même les autres utilisateurs de ton groupe de lire tes fichiers. C’est utile si tu veux un contrôle plus strict.

 

wp-config.php en 600

  • La Logique derrière 600 : wp-config.php est comme le coffre-fort de ton site WordPress. Il contient des infos super sensibles, comme les détails de ta base de données. Avec 600, tu t’assures que seul le propriétaire du fichier (encore une fois, toi) peut le lire et le modifier.
  • Maximiser la Sécurité : En le mettant en 600, tu empêches tout accès non autorisé, même en lecture. C’est comme avoir un cadenas numérique sur les informations les plus critiques de ton site.

 

Voilà, tu as maintenant une bonne base pour réparer et sécuriser ton site WordPress après un piratage. Mais souviens-toi, ces manœuvres peuvent être complexes. Si tu sens que c’est trop tendu ou si ton site reste dans les griffes des pirates malgré tes efforts, n’hésite pas à me contacter.

 

FAQ

J'ai repéré des connexions bizarres sur mon site WordPress. C'est grave ?

Ça peut être un signe d'attaque par force brute. Garde un œil sur les tentatives de connexion échouées et change tes mots de passe pour plus de sécurité.

Mon site redirige tout seul vers un autre site. Que faire ?

Vérifie tes fichiers .htaccess et wp-config.php pour des lignes de code étranges. Parfois, un plugin ou un thème vérolé peut aussi être le coupable.

C'est possible de savoir qui a hacké mon site WordPress ?

C'est compliqué. Les hackers masquent souvent leurs traces. Mais tu peux jeter un œil aux logs du serveur pour trouver des indices.

Des erreurs bizarres apparaissent sur mon site, c'est une injection SQL ça ?

Possible. Si tu vois des trucs louches et des erreurs inattendues, c'est peut-être une injection SQL. Vérifie ta base de données pour des modifications étranges.

Je crains les attaques DDoS sur mon WordPress, des conseils ?

Utilise des services comme Cloudflare qui offrent une protection DDoS, et assure-toi que ton hébergement a aussi des mesures de défense.

Comment je sais ce qu'un hacker a changé sur mon site ?

Compare les fichiers actuels de ton site avec une sauvegarde récente. Les outils de suivi de version peuvent aussi t'aider à détecter les modifications.

Faut-il que je dise à mes utilisateurs que le site a été piraté ?

Oui, surtout si leurs données perso sont en jeu. C'est une question de confiance et parfois une obligation légale.