Malware in WordPress-Blogs bereinigen

Mist! Da sorgt man dafür, dass

  • das Betriebssystem aktuell ist,
  • die Firewall dicht ist,
  • alle Passwörter sicher sind,
  • WordPress aktuell ist,
  • die verwendeten WP-Plugins aktuell sind
und dann schafft es trotzdem noch jemand, mir Schadcode in mein Blog zu schleusen – über eine Sicherheitslücke im  timthumb.php-Skript, das mein (kostenpflichtiges Premium!)-Theme verwendet, um die Mini-Bilder der Artikel zuzuschneiden und zu skalieren.

Das führte heute dazu, dass mein Chrome-Browser mich nicht mehr meine eigene Site besuchen ließ, sondern mir eine riesige Warnung präsentierte… „Malware-Gefahr!“, „Nicht betreten!“ usw. Ich habe die Index-Seite untersucht und stieß schnell auf einen iframe, der am Ende der Seite (unterhalb des body-Tags) per JavaScript eingefügt wurde. Das Ziel war „counter-wordpress.com“. Inhalt unbekannt.

 

Das Schlimmste daran ist aber, dass wohl zahlreiche andere Besucher diese Malware-Meldung ebenfalls gesehen haben und möglicherweise niemals wieder kommen werden. *grrrr* Nur Google weiß, wie lange mir diese Nummer noch Probleme bei der Bewertung bereiten wird.

 

Natürlich ist nun erst mal wieder alles sauber und in trockenen Tüchern. Doch der Reihe nach:

 

    • Ich habe mir die verwendete WordPress-Version (derzeit 3.2.1) heruntergeladen und im Temp-Verzeichnis ausgepackt. Dann habe ich das saubere Original mit meinem DocumentRoot verglichen („diff -r /pfad/zum/original /pfad/zur/site“).

 

    • Man benötigt etwas Erfahrung und Wissen über sein Blog, um aus dem diff-Output sinnvolle Schlüsse ziehen zu können. Erst mal habe ich Themes und Plugins ignoriert und mir Ungereimtheiten bei der WordPress-Basis angeschaut.

 

    • Folgende Dateien haben bei WordPress nichts zu suchen:
      wp-admin/upd.php
      wp-content/upd.php

 

  • Außerdem wurde bei einigen Dateien der Inhalt manipuliert. Diese Dateien habe ich gegen die Originale ersetzt oder von Hand bereinigt:
    wp-config.php
    wp-settings.php
    wp-includes/js/jquery/jquery.js
    wp-includes/js/l10n.js
    (wp-content/themes/arthemia-premium/scripts/cache/external_{MD5Hash}.php)

 

Außerdem habe ich natürlich in meinem Theme (Arthemia Premium) das timthumb.php-Skript durch die derzeit aktuellste Version ausgetauscht (http://timthumb.googlecode.com/svn/trunk/timthumb.php).

 

Zu guter Letzt habe ich dann noch das MySQL-Passwort des für das Blog verwendeten Users geändert und in der Datei „wp-config.php“ aktualisiert. In dieser Datei befinden sich noch einige Sicherheitsschlüssel, die ich ebenfalls verändert habe.

 

Ich hoffe, nun ist Ruhe! Hat jemand ebenfalls Probleme mit diesem oder ähnlichen Hacks gehabt oder hat jemand Ergänzungen zur Bereinigung?

 

UPDATE:
Nach der Bereinigung empfiehlt es sich, den lokalen Browser-Cache zu leeren und die Cookies etc. zu löschen, damit die Malware-Warnung verschwindet. Außerdem sollte man einen Blick in die Google Webmaster Tools werfen, sofern man dort einen Account hat (sollte man haben!). Es war zwar bei mir nicht der Fall, aber es kann sein, dass die betroffene Site unter „Diagnose->Malware“ gekennzeichnet wurde. Dann sollte man seine Site dort zur erneuten Überprüfung anmelden… sonst wird man den Malware-Status möglicherweise nicht mehr so schnell los.
Bei meiner Recherche bin ich übrigens noch auf einen Online-Scanner gestoßen, der bestimmt auch bei der Identifizierung von Problemen helfen kann: http://sitecheck.sucuri.net/scanner/.

 

UPDATE 2 (english version):
Okay, for those of you who don’t understand German, here’s the short version of what I’ve done:

    • Delete the following files:
      wp-admin/upd.php
      wp-content/upd.php

 

    • Replace the following files with the original files from wordpress.org:
      wp-settings.php
      wp-includes/js/jquery/jquery.js
      wp-includes/js/l10n.js

 

    • Open „wp-config.php“ and check for malicious code and massive empty lines. Clear it all.

 

    • My theme is „Arthemia Premium“. There’s a file which should be deleted, too:
      wp-content/themes/arthemia-premium/scripts/cache/external_{MD5Hash}.php

 

 

    • Change your MySQL password and update wp-config.php.

 

    • Change the secret keys in wp-config.php aswell.

 

  • Clear your browser cache, cookies etc.