Comment j’ai découvert et nettoyé un WordPress piraté

Récemment, un site WordPress hébergé chez OVH présentait plusieurs comportements anormaux. La base de données dépassait largement le quota autorisé (500mo sur l’offre Perso) et l’affichage du site déclenchait parfois des redirections vers des boutiques en ligne externes, signe classique d’une compromission.

Après un premier accès au serveur d’hébergement en SFTP, rapidement, j’ai vu que certains éléments n’étaient pas logiques.

Voici entre autres les étapes passées et les actions menées pour nettoyer le piratage et restituer un site sain :

Étape 1 : Découverte des fichiers malveillants dans /wp-content/

Dans le dossier principal de WordPress se trouvaient plusieurs fichiers qui n’existent jamais dans une installation légitime :

  • mhkrrc.php
  • db-config.ini
  • un fichier du même type, au nom aléatoire, similaire à mkhrcc.php

Aucun de ces fichiers ne correspond à WordPress, à un plugin ou à un thème.

Étape 2 : Analyse du fichier mkhrcc.php : une backdoor complète

Le fichier contenait du PHP obfusqué utilisant notamment :

  • $_POST['b'], $_POST['f'], $_POST['c']
  • reconstruction dynamique de file_put_contents et base64_decode
  • vérification de hash MD5 servant de mot de passe

Il s’agissait d’une backdoor permettant :

  • l’upload de fichiers à distance
  • l’écriture directe à la racine
  • la réinstallation d’autres malwares
  • le contrôle complet du serveur via une simple requête POST

Étape 3 : Analyse du fichier mhkrrc.php : module InjectBody

Son contenu était une configuration sérialisée :

a:4:{s:7:"enabled";s:1:"1";s:7:"timeout";i:300;s:6:"filter";s:16:"_posts|_postmeta";s:8:"loadstat";s:125:"<!-- stats -->";}

Ce format est typique de familles de malware documentées par Sucuri et Wordfence.
Il sert à :

  • injecter du JavaScript ou du HTML dans les pages
  • exécuter du code distant
  • analyser et modifier posts et postmeta
  • assurer une persistance même après mises à jour

Étape 4 : Analyse du fichier db-config.ini : cache malveillant

Bien qu’il porte une extension .ini, son contenu était du PHP sérialisé, utilisé comme “mémoire interne” pour recharger automatiquement la charge utile si un fichier infecté était supprimé. Cela indique une infection conçue pour survivre aux nettoyages classiques.

Étape 5 : Synthèse du diagnostic

Le site était victime d’une chaîne d’infection complète reposant sur :

  1. un uploader backdoor (accès pirate total)
  2. un loader InjectBody (injection dynamique de code)
  3. une configuration persistante (réinstallation automatique)

Ce schéma est conforme aux attaques référencées par Sucuri, Wordfence et l’OWASP.

Étape 6 : Première analyse élargie : erreurs critiques après restauration de /wp-admin

Chaque tentative de remplacement du dossier /wp-admin déclenchait une erreur critique.
Le site tournait sous WordPress 5.8.12 tandis que l’hébergement était passé en PHP 8.3, provoquant déjà des incompatibilités. L’existence de fichiers malveillants dans plusieurs zones expliquait l’instabilité globale.

Étape 7 : Cartographie des zones infectées

Plusieurs répertoires, parfois très anciens, contenaient du PHP exécutable. L’infection était disséminée au-delà du cœur WordPress.

1. Backdoors à la racine WordPress

  • wp-blogs.php
  • iijmdny7.php
fichier veroles piratage wordpress
fichier véroles par un piratage wordpress

2. Faux plugin masqué

Dossier : /wp-content/plugins/HelloDollyV2_jwbq/
Fichier interne infecté :

  • hello_dolly_v2.php
    Il contenait une classe UnsafeCrypto permettant d’exécuter du code transmis à distance via AES-256-CTR.
faux plugin hello dolly2 piratage wordpress

3. Scripts dans des répertoires non liés à WordPress

Dossier : /audio/ad/
Sous-dossiers : style, theme/upload/temp
Fichiers anormaux :

  • index.php modifié
  • plusieurs .txt contenant du PHP masqué

4. Backdoor dans .well-known

Un fichier PHP dissimulé utilisant base64_decode, md5, glob, capable :

  • d’envoyer des fichiers
  • d’exécuter des commandes
  • de modifier des permissions

Résumé des menaces

Fichier / DossierFonction malveillanteRisque principal
wp-blogs.php, iijmdny7.phpBackdoor distanteContrôle total
/HelloDollyV2_jwbq/hello_dolly_v2.phpExécution de commandes chiffréesInjection continue
/audio/ad/Scripts de persistanceRéinfection automatique
.well-known/index.phpWebshell masquéUpload illimité

Étape 8 : Analyse technique : fonctionnement de l’infection

Le malware assurait :

  • la persistance grâce à des points d’ancrage multiples
  • l’exécution distante via le faux plugin encrypté
  • la dissimulation dans des répertoires non liés à WordPress

C’est ce qui empêchait toute restauration classique et provoquait la réapparition des fichiers supprimés.

Étape 9 : Intervention : remise en état

L’intervention s’est déroulée en trois phases :

  1. Suppression absolue de tous les fichiers identifiés
    Tous les fichiers PHP hors structure WordPress ont été supprimés.
  2. Réinstallation propre du cœur WordPress
    Les dossiers /wp-admin et /wp-includes ont été remplacés par les versions officielles correspondant à WordPress 5.8.12.
  3. Vérification serveur
    L’espace disque, auparavant saturé par des caches malveillants et des fichiers inutiles, a été normalisé.

Le tableau de bord WordPress était immédiatement opérationnel.

La base de données est passée d’environ + de 500 Mo, à environ 400 MO. Puis désormais à 43 Mo.

Résultat : un site sécurisé, propre et prêt pour l’avenir

Une fois l’ensemble des portes dérobées éliminées, le site a retrouvé :

  • un fonctionnement stable
  • la possibilité de mettre à jour WordPress
  • une base de données à nouveau dans les limites OVH
  • un environnement sécurisé sans injection ni backdoor

Ce use case illustre une situation fréquente : un site vieillissant, une montée en PHP trop brutale et des fichiers dormants issus d’une infection ancienne. Le dépannage n’est pas qu’une simple question de compatibilité, mais bien un travail de détection, d’analyse et de nettoyage méthodique.

Durée du travail de détection puis désinfection

1. Analyse initiale et diagnostic : 45 minutes à 1 h

  • tests d’accès au site et à l’administration
  • inspection des symptômes (erreur critique, redirections, surcharge serveur)
  • analyse rapide FTP + repérage des premiers fichiers anormaux
  • vérification de la version PHP / WordPress

2. Exploration complète du serveur : 45 minutes à 1 h

  • audit des dossiers hors WordPress
  • recherche manuelle de fichiers PHP cachés
  • comparaison avec une structure WordPress propre
  • détection des backdoors disséminées

3. Nettoyage, suppression des fichiers malveillants et sécurisation : 45 minutes à 1 h 15

  • suppression des backdoors repérées
  • nettoyage des répertoires parasites
  • contrôle des permissions
  • vérification des fichiers réinjectés automatiquement
  • inspection de .well-known, audio/, racine, plugins, wp-content/uploads

4. Réinstallation propre du core WordPress : 15 à 30 minutes

  • remplacement de /wp-admin
  • remplacement de /wp-includes
  • vérification version / compatibilité PHP
  • test de chargement de l’admin

5. Contrôle final, tests et optimisation du serveur : 20 à 40 minutes

  • test de navigation front + admin
  • nettoyage de la base (taille, options douteuses)
  • vérification des logs
  • vérification espace disque OVH
  • installation ou activation d’une solution de sécurité

FAQ – Désinfection et réparation d’un site WordPress infecté

Pourquoi une infection peut-elle survivre à une restauration classique ?

Certains malwares ajoutent plusieurs portes dérobées dans différents répertoires. Même si vous supprimez un fichier infecté, un “loader” peut le recréer automatiquement. C’est pourquoi un nettoyage complet nécessite de vérifier tout le serveur, y compris les dossiers hors WordPress.

Recourir au nettoyage d’une experte

Un site WordPress qui affiche une erreur critique, des redirections étranges ou un tableau de bord inaccessible n’est jamais un hasard. Ces problèmes peuvent venir d’un conflit, d’une mise à jour bloquée ou d’un fichier malveillant resté invisible pendant des mois. Grâce à une intervention claire et méthodique, je vous aide à rétablir votre site rapidement : analyse complète des fichiers, vérification serveur, remise en place d’un WordPress propre et sécurisation durable pour éviter que les incidents ne se répètent. Vous retrouvez un site stable, fonctionnel et prêt à être mis à jour en toute sécurité.

Votre site WordPress est piraté en ce moment ?

Un site WordPress qui affiche une erreur critique, des redirections étranges ou un tableau de bord inaccessible n’est jamais un hasard. Ces problèmes viennent souvent d’un conflit, d’une mise à jour bloquée ou d’un fichier malveillant resté invisible pendant des mois. Je vous aide à rétablir votre site rapidement

J’interviens sous 24h pour :

  • Analyser et nettoyer les fichiers infectés
  • Vérifier et sécuriser votre serveur
  • Remettre en place un WordPress propre et sécurisé
  • Éviter que les incidents ne se répètent

Contact urgence : contact@yesweblog.fr | 07 56 94 78 33

Webmaster WordPress depuis 15 ans

Griselidis Gaillet
Griselidis Gaillet

Bonjour ! Je suis Griselidis. Webmaster WordPress & Consultante SEO. Fondatrice de Yes We Blog créé en mai 2014, je partage ici des tutoriels et articles pour vous aider à créer votre site web et le faire connaître. Je crée, entretiens et dépanne des sites internet.

Newsletter

Saisissez votre adresse e-mail ci-dessous et abonnez-vous à la newsletter

Laisser un commentaire

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