WordPress · 10 min · publié le 28 décembre 2024

Thème WordPress « premium gratuit » : souvent déjà infecté

Un thème « premium gratuit » arrive souvent déjà infecté. L'administration a l'air normale : le backdoor est dans un fichier du thème, parfois copié en mu-plugin dès l'activation. Changez de thème après inspection, pas avant d'avoir cherché la copie.

Réponse directe

Le backdoor est dans le thème dès l'installation. L'admin a l'air normal. Changez de thème après inspection : une copie peut rester en mu-plugin.

thème nulled wordpress thème premium gratuit virus theme nulled malware

Ce que « nulled » veut dire concrètement

Quelqu'un a retiré la licence d'un thème payant et l'a mis en zip sur un blog « GPL ». Pour passer l'antivirus du blog, ou pour monétiser, un PHP de télécommande est ajouté : `class.theme-modules.php`, `functions-extra.php`, un `inc/setup.php` qui `file_get_contents` une URL.

Vous n'avez « rien installé de louche » : vous avez installé un zip hors de l'éditeur. C'est le canal. Guide WordPress.

Comparez le dossier du thème au zip de l'auteur, même numéro de version. Les fichiers en trop, un `functions.php` deux fois trop lourd, un `license.php` qui parle à un .xyz : ce n'est pas Envato. L'admin propre ne dit rien : le backdoor attend un cookie. À l'activation, beaucoup écrivent déjà un mu-plugin. Changer de thème sans ouvrir `mu-plugins/` garantit le retour du payload sous un autre nom.

L'admin propre, le fichier sale

Le backdoor ne défacer pas. Il attend une requête avec un cookie ou un user-agent. Vous voyez le Customizer. Google voit un casino. Les dates : un fichier du thème touché des mois après votre dernière modif CSS.

Comparez au zip ThemeForest / site de l'auteur, même version. Les fichiers en trop n'ont pas à exister. Un `functions.php` deux fois plus lourd que l'officiel : lisez la fin du fichier, pas seulement le début.

Où le thème pose sa copie

À l'activation, beaucoup écrivent un mu-plugin `hello-elementor-cache.php` (le nom ment) ou un cron qui retélécharge le payload si vous « nettoyez » le thème. Changer de thème sans ouvrir `wp-content/mu-plugins/` garantit le retour.

Uploads : `uploads/themename/cache.php`. `wp-config.php` : un `require` ajouté. Racine : `wp-core.php`. Cherchez le même hash / la même chaîne `base64` que dans le thème.

`installer.php` n'est pas le thème, mais les packs « site prêt + thème nulled » le laissent. Duplicator.

Uploads `themename/cache.php`, include wp-config, `wp-core.php` à la racine. Cherchez le même hash / la même chaîne base64 que dans le thème. `installer.php` n'est pas le thème, mais les packs « site prêt + thème nulled » le laissent.

  • mu-plugins créé à l'activation.
  • include dans wp-config.
  • PHP dans uploads / cache.

Encoder, ionCube, « license.php »

Un thème légitime n'a généralement pas besoin d'ionCube sur un simple magazine. Un `license.php` qui contacte un domaine .xyz : ce n'est pas Envato. Isolez, ne « réparez » pas à l'aveugle.

Les fichiers `.ico` qui sont du PHP, les `.jpg` dans `theme/assets/` qui commencent par `<?php` : grep `<?php` hors des `.php`.

Un magazine n'a pas besoin d'ionCube. Un license.php vers un .xyz : isolez. Grepez `<?php` hors des .php : .ico et .jpg dans `theme/assets/`.

Changer de thème dans le bon ordre

Copie. Inspection thème + mu-plugins + wp-config. Pose d'un thème officiel (Twenty, ou un parent acheté chez l'auteur). Vérification que le site tient. Puis suppression du dossier nulled, pas seulement désactivation.

Si le site « a besoin » de ce look : rachetez-le. Le prix du thème est inférieur au second incident. Supprimer malware.

Copie. Inspection thème + mu-plugins + wp-config. Thème officiel (Twenty ou parent acheté). Vérification. Puis suppression du dossier nulled, pas seulement désactivation. Le page builder plein de CSS du nulled cassera l'affichage : c'est du métier, pas une raison de garder le zip pirate.

Un page builder plein de CSS du thème nulled cassera l'affichage. C'est du métier, pas une raison de garder le zip pirate.

Child theme et customizer

Le child peut être propre et le parent sale, ou l'inverse. Les options `theme_mods_*` en base peuvent contenir un JS injecté. Le Customizer « code additionnel » : lisez-le.

Elementor + thème nulled : deux surfaces. Elementor.

Marketplace officielle vs dump

ThemeForest, le site de l'auteur, wp.org : canaux. Un Google « theme name nulled » : canal. Les « GPL clubs » à 9 €/mois : même risque, parfois pire (un zip pour tous, déjà patché par l'attaquant).

Après : ne pas racheter le même dump

Changez les mots de passe, régénérez les clés, interdisez PHP dans uploads. Surveillez les dates du nouveau thème.

Page WordPress piraté. créer un espace pour une chasse aux copies.

Rachetez le thème chez l'auteur si le look est indispensable ; le prix est inférieur au second incident. Changez les secrets, interdisez PHP dans uploads, surveillez les dates du nouveau thème. WordPress piraté. Chasse aux copies : créer un espace.

Thème enfant, Customizer, et clubs GPL

Le child peut être propre et le parent sale, ou l'inverse. Les `theme_mods_*` et le « code additionnel » du Customizer portent un JS. Elementor + thème nulled : deux surfaces. Elementor.

ThemeForest, le site de l'auteur, wp.org : canaux. Un « GPL club » à 9 €/mois : un zip pour tous, parfois déjà patché par l'attaquant. Un collègue qui « avait le thème » : demandez la facture Envato.

Ne rachetez pas le même dump. Changez les secrets, interdisez PHP dans uploads, surveillez les dates. Guide WordPress.

Facture, zip auteur, et ce qu'on jette

Sans facture Envato / espace client auteur, traitez le zip comme nulled. Comparez, sortez, cherchez la copie mu-plugin. Un thème wp.org modifié sur le disque est une autre histoire : l'entrée est plugin ou FTP, le thème s'est fait écrire dessus. Comparez quand même.

Le site « a besoin » de ce look : rachetez, ou acceptez 48 h de vitrine imparfaite. Un page builder cassé n'est pas une raison de garder le payload. Supprimer malware. Créer un espace.

Questions fréquentes

Le thème vient d'un collègue, pas d'un site nulled. Même risque ?

+
Si le zip n'est pas celui de l'auteur, oui. Demandez la facture Envato / l'espace client. Si le zip n'est pas celui de l'auteur, le risque est le même. Demandez la facture.

Wordfence n'a rien vu dans le thème.

+
Une porte écrite pour ce zip passe. La comparaison au zip officiel reste la méthode. Wordfence ne suffit pas. Une porte écrite pour ce zip passe. Comparez à l'officiel.

Je peux « nettoyer » le functions.php et garder le thème ?

+
Vous ne saurez jamais si un second fichier `inc/lib/foo.php` rappelle le payload. Sortez du zip. Vous ne saurez jamais si un second fichier rappelle le payload. Sortez du zip.

Un thème wp.org peut-il être infecté ?

+
Oui, s'il a été modifié sur votre disque après coup. Comparez. L'entrée alors est ailleurs (plugin, FTP). Oui s'il a été modifié sur le disque. L'entrée alors est ailleurs (plugin, FTP).

Le site casse si je change de thème. Je reste ?

+
Non. Acceptez une vitrine imparfaite 48 h, ou un thème proche officiel. Le look ne vaut pas un skimmer. Acceptez une vitrine imparfaite 48 h. Le look ne vaut pas un skimmer.
À lire ensuite
Plugin vulnérable Par où commencer mu-plugins / backdoor WordPress piraté Guide WordPress Déclarer mon site