WordPress Hack – Was tun, wenn WordPress gehackt wurde

WordPress ist das beliebteste CMS und ein Großteil aller Websites laufen auf WordPress, weshalb WP auch ein beliebtes Ziel von Hackern ist. Wenn die Website gehackt wurde, die Hacker Schadcode in Form von Viren und Malware eingeschleust und eine Weiterleitung auf zwielichtige Domains eingestellt wurde, ist schnelles Handeln erforderlich.

Was man tun kann, um alles wieder sauber zu bekommen und wie man seine Seite auch in Zukunft vor solchen Hacker-Angriffen schützen kann, könnt ihr hier erfahren. Falls ihr professionelle Hilfe benötigt, könnt ihr diese bei ViatorDigital.com bekommen.

Bild mit Roboter, welches beim Umleitungs-Hack eingeblendet wird
„Klicken Sie ‚Zulassen‘ wenn Sie kein Roboter sind“ – dieser Roboter erscheint statt der eigenen Seite bei vielen WordPress Hacks
Wordpress Malware in der index.php, angezeigt in Sublime Text.
Bild 1 – Schadcode in der Index.php

WordPress gehakt – was tun? Die grobe Übersicht

  1. Backups einspielen
  2. Redirects ausschalten
  3. Schadcode finden und entfernen
    1. Tools
    2. PHP
    3. MySQL (per phpMyAdmin)
  4. SALTs erneuern
  5. Logins ändern
  6. WordPress sicher machen

Dies ist der grobe Fahrplan. Lasst uns mal anschauen, was im Einzelnen zu betrachten ist.

1. Backups einspielen

Jeder, der eine wichtige Seite im Internet hat, sollte gute Backups haben. Am besten aus mehreren Quellen. Meistens hat der Hoster ältere Versionen der FTP-Files und SQL-Datenbanken gespeichert. Dazu loggt man sich bei seinem Hoster (Hetzer, Strato, All-Inkl, 1und1 …) ein, und sucht die Wiederherstellungsfunktion.

Hoffentlich ist damit schon einmal der grobe Teil erledigt – die Seite erscheint wieder. Allerdings muss das nicht bedeuten, dass alle Viren auch wirklich ganz weg sind. Jetzt kommt der Part, an dem nach Schadcode gesucht wird. Wie das gemacht wird (welche Tools eingesetzt werden und wonach man genau schauen muss) findest du unter Punkt 3. Falls dir das zu kompliziert ist, kannst du dafür auch einen Service buchen.

Falls das Einspielen der Backups funktioniert hat, kann man probieren, den Wartungsmodus zu aktivieren oder besser noch einen .htaccess Verzeichnisschutz (also einen Login für deine Domain) einrichten. Falls die Seite noch nicht zu sehen ist, musst du dich um die Redirects kümmern.

2. Redirects ausschalten

Wenn du keine Backups hast oder auch aktuelle Änderungen an deiner Seite (welche nach dem Backup erstellt wurden) retten willst, ist die größte Herausforderung meist, dass man überhaupt seine alte Seite zu sehen bekommt. Beim WordPress Hack wird nämlich oft auf eine andere Seite umgeleitet, sobald man die URL eingetippt hat. Hier gilt es nun, diese Umleitung (Redirect) auszuschalten, damit man wieder auf seine Seite (und ins WordPress-Backend) kommt, um weitermachen zu können

Wo finde ich den Redirect?

Der Redirect befindet sich meist an zwei verschiedenen Stellen. Eine ist die .htaccess Datei. Falls diese betroffen ist, muss eventuell der Hoster eingeschaltet werden, bzw. können erfahrene User diese per FTP/SFTP direkt bearbeiten. Weitaus häufiger wurde beim WordPress-Hack allerdings einfach ein Eintrag in der Datenbank geändert:

Wie schalte ich den Redirect aus?

In der MySQL Datenbank von WordPress gibt es einen kleinen Eintrag, welcher aber eine große Wirkung hat. Es ist das Feld „siteurl“ in der Tabelle „wp-options„. Dies können wir auch ohne tiefere Kenntnisse von MySQL selber beheben. Aber Vorsicht! Auf jeden Fall ein Backup der Datenbank machen, bevor wir hier Hand anlegen. In der Datenbank kann man leicht was kaputtmachen – daher ist es wichtig jederzeit alles wieder rückgängig machen zu können.

Voraussetzung hier ist wie immer, dass wir noch Zugriff auf unsere Seite über den Hoster haben. Ich hoste fast alle meine Seiten bei Hetzner – hier habe ich gute Erfahrungen in der Kombination Preis/Leistung/Service gemacht. Über das Backend des Hosters muss die Datenbank herausgesucht und mit einem Tool namens phpMyAdmin bearbeitet werden. (bei Hetzner ist das Backend unter konsoleh.your-server.de zu erreichen => Einstellungen => Datenbanken / MySQL => Auf das Stift-Symbol neben der Datenbank klicken.

Mit dem Tool phpMyAdmin Tabelle wp_options öffnen und den Eintrag siteurl prüfen

PHPMyAdmin

Doppelklicken und wieder die richtige URL eingeben. Wichtig: Vorher Backup der Datenbank machen!
Falls dir das alles zu brenzlig oder kompliziert ist: Professionellen Service buchen.

Jetzt sollten wir uns über tunkl.de/wp-admin wieder in WordPress einloggen können. Und jetzt geht es erst richtig los mit dem Kampf gegen die Malware! =)

3. Schadcode finden und entfernen

So, Hände reiben, Finger knacksen, Grinsen aufs Gesicht und nach vorne lehnen: Es geht los mit der Säuberung des WordPress Hacks. Bevor wir etwas ändern, natürlich nochmal ein MySQL-Dump und ein Backup der Files erstellen.

3.1 Tools

Zum Glück gibt es inzwischen gute WordPress-Plugins, welche uns einen Haufen Arbeit abnehmen, was das Finden und Beseitigen von Malware anbetrifft. Die Wesentlichen sind:

  • Wordfence
  • Sucuri
  • ManageWP

Wordfence

Wordfence ist eine Firewall, Scanner und Cleaner in einem. Das WordPress-Plugin ist mit über 3 Millionen Installationen die beliebteste Sicherheitssoftware für WordPress, und das hat einen Grund. In diesem Schritt hier benutzen wir Wordfence, um den beim Hack installierten Schadcode zu finden und entfernen zu lassen.

Wordpress-Plugin Wordfence beim Scanvorgang auf Tunkl.de
Wordfence in Aktion: Scannen der Website

Nach der Installation von Wordfence geht man im Menü links auf den Unterpunkt Scan, dort findet man dann rechts Scan Options and Scheduling, wo man die Basic Scan Type Options auf High Sensitivity stellt. Oben auf Save und dann zurück bei Scan auf Start New Scan.

Falls Wordfence etwas findet, sieht man dies in der Liste unter Results Found. Mit Repair All Repairable Files kann man dann den Versuch starten, die betroffenen Dateien reparieren zu lassen.

Sucuri

Leider hat bei einem Befall Wordfence bei uns nicht alles erkannt, und nach anfänglicher Freude ist nach ein paar Stunden die Seite schon wieder nicht mehr erreichbar gewesen.

Der Startbildschirm von Sucuri, einem Wordepress Sicherheits Plugin.
Sucuri Dashboard

Daher haben wir ein zweites Tool eingesetzt, welches ebenfalls eine Kombination aus Firewall und Cleaning Tool. Allerdings ist es auch etwas schwieriger in der Bedienung, und die Firewall ist nicht umsonst zu haben.

ManageWP

ManageWP ist eigentlich ein Management-Tool für mehrere WordPress-Instanzen, aber es hat auch einen sehr potenten Security-Check, welcher auf der Engine von Sucuri basiert.

Was hierbei wichtig ist: Der Scan ist nicht in Real-Time. D.h., wenn ihr ein Sicherheitsrisiko angezeigt bekommen habt, dieses behebt und mit ManageWP erneut scannt, bekommt ihr eventuell immer noch eine Warnung angezeigt, obwohl schon wieder alles in Ordnung ist.

3.2 PHP

Und ihr werdet es schon geahnt haben: Auch die Kombination von Wordfence und Sucuri ist kein Garant für Erfolg. Auch da bleibt so mancher Virus resistent im Code, vor allem wenn es ein Mutierender ist, welcher verschiedene Wege für seine Replikation nutzt.

Hier gilt es, selber auf die Suche zu gehen und nach Dingen zu suchen, die Verdächtig aussehen.

Seltsame PHP Files

Wenn ihr euch das FTP Backup anschaut, fallen euch evtl. gleich komisch benannte PHP Files auf, welche kryptische Namen haben, die meist aus einer Kombination aus 6-8 Buchstaben und Zahlen bestehen. Beispiel:

zi5192z5.php

Kurz reinschauen, und wenn das nichts ist, was nach WordPress aussieht, kann man die ganze Datei löschen.

Schadcode innerhalb von PHP

Während das WordPress-eigene Javascript von den Tools oben ganz gut gesäubert wird, ist Schadcode in der Datenbank in Form von „bösem“ PHP meist ein bisschen persistenter. Fangen wir mal mit einer Grundweisheit aus dem Programmieren an:

eval() is EVIL!

Douglas Crockford / Every sane JS / PHP coder

Gefährlicher Code wird gerne mit der Funktion eval() versteckt, damit er beim Betrachten von Sourcecode oder von Scannern nicht erkannt wird. Also das Backup lokal entpacken und mit einem Tool, welches mehrere Files durchsuchen kann nach „eval(“ suchen. Ich nutze dazu meinen Lieblings-Editor Sublime Text.

Schadcode mit eval() versteckt sich aber auch gerne in der Datenbank:

3.3 MySQL (per phpMyAdmin)

Mit phpMyAdmin könnt ihr dann nach eval in der MySQL Datenbank suchen. hier ist mal ein Script-Part, der sich so mehrfach in allen möglichen Posts auf einer Seite versteckt hat:

<script type=text/javascript>eval(String.fromCharCode(118,44,49,49,50,44,49,49,54,41 [...]  44,49,49,52,44,49));</script>

Hier kann man die bösartige Verwendung von eval() gut erkennen. Mit der Suchfunktion von phpMyAdmin habe ich dann diese Script-Teile gefunden und herauskopiert. Darauf achten, dass alle Tables selektiert sind, sonst wird wenig gefunden.

Da aber das Löschen von solch langen Strings mit phpMyAdmin nicht so praktikabel ist (es muss sauber escaped werden), empfehle ich dafür Search Replace (Git).

Search Replace Interface

Wichtig: Auch bei diesem Tool müssen im Feld ‚Select tables‘ alle ausgewählt sein!

Das war’s erstmal mit Schadcode bereinigen. Das sollte auch für die meisten reichen, wer aber noch tiefer eintauchen will, dem sei der Artikel von Damian Strobel ans Herz gelegt.

4. SALTs erneuern

Nachdem jetzt aller Schadcode entfernt ist, müssen noch alle Login-Serssions gelöscht werden, damit sich auch keine mehr Zugang zur Seite verschaffen kann, in dem er einfach noch einen gesetzten Cookie im Browser hat.

Unter https://api.wordpress.org/secret-key/1.1/salt/ findet ihr den offiziellen Generator, wo ihr neue SALTs generieren lassen könnt um diese dann per FTP in der wp-config.php einzutragen.

WordPress SALT Keys in der wp-config.php (Und nein, das sind nicht meine aktuellen 😉 )

Dazu müsst ihr die SALTs erneuern. Falls ihr Sucuri installiert habt, könnt ihr das auch vom Plugin selber unter Settings => Post-Hack => Update Secret Keys erledigen lassen.

5. Logins ändern

Der nächste Schritt dürfte auf der Hand liegen: Die Passwörter für alle Logins ändern. Und weil’s so schön war danach gleich nochmal die SALTs erneuern. Dann dürften alle Bösewichte ausgesperrt sein.

6. WordPress härten

Nach der ganzen Arbeit soll unsere Website natürlich in Zukunft besser geschützt werden. Dazu sind die beiden oben schon genutzten Tools hervorragend geeignet. Dabei ist Wordfence als kostenloses Tool fantastisch, Sucuri das Tool der Wahl wenn man bereit ist, etwas Geld auszugeben (und auch den besseren Schutz zu bekommen).

Ich möchte in diesem Artikel jetzt nicht auf die Funktionalität weiter eingehen, das ist definitiv einen eigenen Artikel wert. Aber eines muss hier gesagt sein: Nicht alle Schutzmaßnahmen dieser Tools sind für jede Umgebung sinnvoll. Wenn man z.B. auf meiner Seite alle Optionen unten aktivieren würde, würde die Seite nicht mehr richtig funktionieren.

Vorsicht bei den Hardening Options!! Diese können deine Seite lahmlegen!

Fazit

WordPress ist durch seine Verbreitung ein gern gesehenes Ziel. Ist deine Seite betroffen, und du hast ein wenig Ahnung von IT, bekommst du aber mit der Anleitung und den Tools in diesem Artikel deine Seite in 99% der Fälle wieder in den Griff.

Falls du es nicht schaffst, schreib gerne in die Kommentare! Und falls das alles zu kompliziert sein sollte, und ich dir das „abnehmen“ soll, schau dir gerne mein Angebot bei Viator Digital Solutions an:

Tunkl Consulting Logo Icon

Veröffentlicht von Patrick

. Ein Nerd aus einer Zeit, als es noch nicht mal das Internet gab. Berät Firmen zu diversen IT-Themen, vorzüglich Online-Werbung & E-Commerce. Diplom Wirtschaftsinformatiker und betreibt mit Max die Agentur Viator Digital Solutions.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert