In letzter Zeit fallen mir immer mehr WP-Blogs auf, die als Spam-Link-Schleudern missbraucht werden, zuletzt hatte es Jojos Beetlebum erwischt. Aber auch das Law-Blog und andere wurden schon attackiert.

Dabei gelingt es dem Angreifer, Inhalte an das Blog oder an einen Beitrag anzuhängen, durch Einsatz von CSS-Attributen werden diese Inhalte aber "versteckt", so dass sie für den normalen Besucher der Seite nicht zu sehen sind. Ein Feedreader oder ein Blick in den Quellcode zeigt die eingeschmuggelten Inhalte.

Jetzt fragt man sich, na, wo ist denn der Zweck von Links, die niemand sieht? Die wird ja auch niemand klicken, nicht wahr? Ja, aber genau wie bei Spam-Links in den Kommentaren kommt es dem Spammer hierbei weniger auf die direkt durch Klick erzielten Besuche auf den verlinkten Seiten an, sondern um Beeinflussung des Suchmaschinen-Rankings der verlinkten Seiten. Dabei sind populäre Blogs mit hohem Pagerank als Angriffsziel interessanter als die Bewohner des Longtails, allerdings macht es bei den Angriffen wohl eher die Masse, als die (PR)-Qualität der gehackten Blogs.

Wie die Angriffe im Einzelnen ablaufen ist mir nicht ganz klar, anscheinend gibt es in älteren WordPress-Versionen und bei sub-optimal programmierten Plugins genug Angriffs-Punkte, die ein Einschleusen von Inhalten "von aussen" ermöglichen. Potentiell interessant sind dabei wohl alle Dateien, die in das Blog "schreiben" dürfen. Auf cre8asite.net gibt es Details dazu, und wenn man sich diesen Link und die weiterführenden anschaut, wird es richtig interessant.

Was tun?

Auf der Seite blogsecurity.net wird regelmässig über neue Lücken berichtet. Die Seite bietet Tools wie den WP-Scanner, mit denen man die Sicherheit der eigenen Installation checken kann und Anleitungen, wie man sein Blog und die php-Einstellungen abdichten kann, sowie eine Liste der Sicherheitslücken in den verschiedenen WP-Versionen.

Das Wichtigste und Erste ist aber: Haltet Eure WordPress-Installation und die Plugins stets auf dem neuesten Stand. Ja, das Updaten nervt, aber es ist der Preis dafür, dass man ein superpopuläres und kostenloses Tool benutzt.

Ich habe mittlerweile einen guten Workflow zum schnellen Updaten entwickelt:

  1. Datenbank-Backup machen
  2. Im WordPress-Backend alle Plugins deaktivieren, sich merken, welche man aktiv hatte.
  3. Neue WordPress-Version runterladen (original oder DE-Version) und auf dem lokalen Rechner entpacken. Ein Verzeichnis "wordpress" liegt nun auf dem Desktop oder wo man es hinentpackt hat.
  4. Angenommen, die WP-Installation "lebt" in /wordpress/. Mit einem vernünftigen FTP-Client verbindet man sich mit dem Server. Das momentane "wordpress" Verzeichnis auf dem Server nennt man um in "wordpress_versionsnummer"
  5. Das "wordpress" Verzeichnis vom lokalen Rechner lädt man per FTP auf den Server.
  6. Jetzt (und deshalb meinte ich eben "vernünftiges FTP-Programm") VERSCHIEBT man einfach die Verzeichnisse und Dateien, die für die individualität des Blogs wichtig sind, von "wordpress_versionsnummer" nach "wordpress". Auf jeden Fall die wp-config.php, das eigene Theme-Verzeichnis in wp-content/themes/, die benötigten Plugins aus wp-content/plugins, das Upload-Verzeichnis (bei mir wp-content/uploads/) sowie evtl. vorhandene zusätzliche Dateien (zb legt das Plugin iimage-Browser eine iimage-browser.php in wp-admin/ ab).
  7. Im Browser das Blog aufrufen, evtl. den "Datenbank muss aktualisiert werden" Klicks folgen. Ins Backend einloggen.
  8. Plugins reaktivieren

Das Ganze geht echt flink. Ich habe ca 20 WordPress Installationen auf diversen Servern/Hostern und bin mit einem Update in unter einer Stunde durch für alle Installationen. Der Vorteil durch das Umbenennen: Man hat die alte Installation noch als Backup und kann auch später noch fehlende Dateien nachziehen. Allerdings sollte man die alte Installation nicht allzulange auf dem Server liegen lassen, zwar ist sie nicht mehr funktional über den Webbrowser zu erreichen, die Dateien mit den Lücken könnten aber trotzdem ausgenutzt werden. Lieber weg damit, sobald man sich überzeugt hat, dass die neue Version in Ordnung ist.

Nachtrag

Wie Jojo gerade richtig im Kommentar schreibt, hat man allerdings die Popokarte gezogen, wenn ein suboptimal programmiertes Plugin schuld an der Lücke ist, und es kein Update dafür gibt. Dann hilft nur eins: Auf das Plugin verzichten und die entsprechenden Dateien löschen.

Nachtrag 24.3.2008

Bei basicthinking gibt es auch eine interessante Diskussion mit guten Ansätzen (Kommentare) dazu.
Ebenfalls lesenswert ist der Artikel Aktuelle Angriffe auf WordPress Blogs bei spam.weltretter.de

Nachtrag 25.3.2008

Mittlerweile existiert ein Thread im deutschen WordPress-Forum, in dem Informationen zu Gemeinsamkeiten der gecrackten Blogs gesammelt werden. (Dank an Dave für den Hinweis in den Kommentaren).
basicthinking hat das Thema erneut aufgegriffen und fasst die Diskussion in Bloghausen sowie einige Lösungsansätze zusammen.

Nachtrag 26.3.2008

Im "offiziellen" WordPress Support-Forum ist letzte Woche ein Thread erschienen, der sich ebenfalls mit einer neuen Art von Exploit auseinandersetzt. In betroffenen Installationen wird im wp-content Verzeichnis ein Verzeichnis mit dem Namen "1" angelegt, in dem html- und Javascript-Dateien abgelegt sind, die dafür sorgen, dass ein verstecktes Frameset in der seite erzeugt wird, welches die Besucher dann auf ein Poker-Seite redirected.
Unbedingt lesen: WordPress: spam injection ongoing in 2.3.3 (preliminary observations from a honeypot blog) und WordPress: spam injection ongoing in 2.3.3 (secondary observations).