WordPress Webseite wurde gehackt. Was tun?

WordPress Webseiten sind ein gefundenes Ziel für Angreifer jeglicher Herkunft. Dabei werden oft Sicherheitslücken ausfindig gemacht und oft erfolgreich kompromittiert.

Was kostet eine Bereinigung?

Gerne bereinige ich eine gehackte Webseite und sichere diese ab. 
Webseiten pauschal für 420,– € (350 € netto) 
Onlineshops für 540,– € (450 € netto) 

Damit ich sofort loslegen kann, benötige ich FTP Zugangsdaten sowie einen WordPress Admin. Am besten auch die Hoster Anmeldedaten. 

Für unternehmenskritische Webseiten kann gerne einen NDA angefertigt werden.

Die Webseite wird von mir gründlich untersucht und bereinigt. Dazu fertige ich ein Abbild an, sodass der „Ist“ Zustand und der „bereinigte“ Zustande zu jederzeit vorhanden ist. 

Wie werden WordPress Webseiten gehackt?

Webseiten werden in der Regel durch Sicherheitslücken gehackt. Dabei geht es nicht darum, ob eine Webseite bekannt oder nicht bekannt ist, es geht vielmehr darum, die Seite erfolgreich zu infizieren. Leider nimmt auch dies eine Form an, die es notwendig macht, die Webseite stets aktuell (erfahre hier mehr über eine Wartung)  zu halten. 

Wenn es dann doch mal zu spät ist, kann auf der Sucuri Webseite schnell geprüft werden, ob Auffälligkeiten bereits bestehen und Infekte offensichtlich gefunden werden. 

Sollte Sucuri einen Infekt feststellen, dann ist bereits höchste Eisenbahn, die WordPress Seite genauer unter die Lupe zu nehmen. Behandle das Thema sorgfältig, ein Infekt kann bis zum Ausschluss, des Google Ranking (Suche) zur Folge haben.

Vorbereitungen

Es werden in Regel einige Daten benötigt, um auf die Webseite zugreifen zu können. Halte daher folgende Daten bereit: 

  • Hoster Zugangsdaten
  • WordPress anmelde Daten

Du wunderst dich sicher, warum keine FTP-Daten usw. dazu gehören? –> lies den nächsten Abschnitt, da erkläre ich warum und wieso. 

Stelle dir folgende Fragen:

  • Gibt es Sicherungen?
    • Welches Datum haben die?
  • Wurden die letzten Aktualisierungen vorgenommen?
  • Sind mehr wie nur eine Webseite auf diesem Webspace?
  • Habe ich einen technischen Ansprechpartner für solche Fälle?
  • Traue ich mir zu am Dateiverzeichnis von WordPress herumzubasteln?

Wie entferne ich nun Malware bei einer WordPress Webseite?

Das einfachste, was gemacht werden kann, ist ein altes Backup zurückzuspielen. Dabei wird die Webseite auf den Stand von einem gewählten Stichtag zurückgesetzt.
Oft bieten die Hosting unternehmen ein Backup an und können für wenig Geld oder sogar kostenlos eingespielt werden. 

Was auch eine Lösung sein könnte, wäre die Löschung der Webseite und durch eine neu ersetzen zu lassen. Dazu bieten oft die Hosting unternehmen eigene Tools an. (One-click-installation)

Ab hier sollte ein Administrator oder ein Experte kontaktiert werden. 

Sollte dies nicht möglich sein, aufgrund von fehlenden Sicherungen oder bereits infizierten Sicherungen, muss die Webseite manuell von der Infektion bereinigt werden. Dies zählt zu den aufwendigeren Verfahren und sollte unbedingt einem erfahrenen Administrator überlassen werden, da hier schnell infizierte Daten übersehen werden können und auch mehr Schaden angerichtet werden kann, welcher im Regelfall schon recht hoch ist.

Die Schritte, die ein erfahrener Administrator machen wird. Die angeführten Schritte wäre ein regulärer Ablauf, wie ein Administrator das Thema angehen würde. Der Prozess ist nicht in Stein gemeißelt, aber dennoch spiegeln sich hier die wichtigsten Schritte wider. Da ich nur ungern verantwortlich über zerstörte Webseiten bin, bitte ich hier jeden einzelnen, dies mit bedacht auszuführen. Ich gehe davon aus, dass FTP Zugangsdaten usw. ein Begriff sind. 

Besteht noch Zugriff in das WordPress backend?

Wenn noch Zugriff in das Backend besteht, kann mit einem Plugin der Infekt lokalisiert werden. Es gibt folgende Security Plugins, die dabei in der Free Version helfen können:

Nach der Installation eines von diesen Plugins, einfach einen Scan ausführen. Die meisten Plugins können anhand ihrer Cloud basierten Erkennung die Dateiunterschiede der Plugins / Themes und WordPress Core überprüfen.  

Sicherung des Bestandes

Als Erstes sollte eine Sicherung der infizierten Webseite vorgenommen werden. Dies erfolgt normalerweise über FTP oder über das Hosting Panel auf einer gesicherten Instanz. Diese Sicherung dient dazu, womöglich falsch oder doch wichtige infizierte Dateien säubern und wiederherstellen können. Es ist nichts ärgerlicher als Daten zu verlieren. Zu dieser Sicherung gehört auch die Datenbank, welche gerne vergessen wird. 

Ich lade die Sicherung immer mit deaktivierten Virenscanner herunter, da sonst oft Dateien verloren gehen. Das ist auch der Grund, warum ich dies in einer gesicherten Umgebung erledige.

Was ist eine gesicherte Umgebung?

Eine gesicherte Umgebung ist ein System, welches keinen Einfluss auf den Arbeit-PC und dem aktuellen Firmennetzwerk hat und zu jederzeit ohne Bedenken gelöscht werden kann. Dies kann auch ein altes Notebook sein.

Am einfachsten kann eine gesicherte Umgebung mit einer virtuellen Box erstellt werden. Ich selber installiere immer ein neues frisches Windows, Virenscanner, FileZilla und Visual Studio Code. Es kann auch ein Linux System sein, das spielt dabei keine Rolle. Windows auch deswegen, da es dafür einfach mehr Virenscanner gibt, die helfen infizierte Dateien zu finden. 

  • Lade Virtual Box für dein System (Windows, MAC, Linux …) herunter.
  • Lade über das Windows Media Creation tool eine ISO Datei von Windows herunter (funktioniert nur für Windows Benutzer. Alle anderen müssen sich z. B. bei Winfuture eine aktuelle ISO für Windows 10/11/7 herunterladen.
  • Installiere Virtual Box und erstelle eine neue virtuelle Maschine.
  • Wähle in diesem Prozess das ISO von Windows aus und starte die virtuelle Box. 
  • Führe den Installationsassistenten von Windows aus. 
  • Installiere die benötigten Tools
    • FileZilla
    • Visual-Studio Code
    • Virenscanner

Bereinigung über FTP

Sobald mit einem Tool z. B. FileZilla auf den Webspace verbunden wurde, beginnt die Suche nach Schadsoftware in allen Ebenen in WordPress.

Es wird im Wurzelverzeichnis auch root oder htdocs nach „komischen“ Dateien gesucht, die nicht zu einer WordPress Installation gehören. Dies können ein paar Buchstaben oder auch logisch klingende Dateinamen sein. 

  1. Aktuelle WordPress Version herunterladen
  2. Dateien, die nicht ins WordPress oder eines deren Plugin gehören, LÖSCHEN

Beispieldateien:

  • report.php
  • abby.php
  • default.php

Auch werden Dateien wie die index.php auf Auffälligkeiten überprüft. 

Wie erkenne ich betroffene Dateien?

  1. Öffne die Index.php mit Visual Studio Code.
  2. Prüfe im ganz oben oder ganz unten, ob Zeichenketten, Eval() oder vase64_decode() Scripte zu finden sind und lösche diese.

Suche nach solchen Dingen wie:

Ganz gerne werden solche Codeschnipsel auch in der footer.php im Theme abgelegt.

Sollten alle Teile gefunden worden sein und natürlich gelöscht sein, sollte die Webseite nun „normal“ erreichbar sein.
Achte darauf, dass die <?php nicht gelöscht werden, da sonst der Webserver die Datei nicht mehr öffnen kann. 

Bereinigen der Plugin und Theme Dateien

Über FTP werden die Plugins ausfindig gemacht und anschließend frisch von WordPress.org heruntergeladen. Dabei ist wichtig, dass die alten Plugin und Theme Dateien auf dem Webspace gelöscht und durch die frisch heruntergeladene Dateien ersetzt werden. Einfach nur hochladen, löscht keine infizierten und zusätzlichen Daten in den Plugin Ordnern. 

  1. Erstelle eine Liste mit allen Plugins, die sich unter /wp-content/plugins sind.
  2. Erstelle eine Liste mit allen Themes, die sich unter /wp-content/themes sind.
  3. Lade dieselben Plugins / Themes über wordpress.org herunter und entpacke die auf dem PC.
  4. Lösche die Themes / Plugins auf dem Webspace.
    1. Es sollten keine Plugins oder Themes „übrig“ bleiben, wenn dies doch der Fall ist, genau anschauen, was da drinnen steht und ziemlich sicher, können diese gelöscht werden.
  5. Lade die frischen Themes und Plugins ins Webspace hinauf.

Dabei wird darauf geachtet, ob der Infekt neue Plugins installiert hat und diese werden bei Bedarf einfach gelöscht.

Bei Premium Themes und Plugins muss natürlich von deren Webseiten die Dateien heruntergeladen werden.
Nulled Themes und Plugins sind auch oft mit Malware bestückt und würden einen Infekt in Kürze wieder zum Vorschein bringen. Also Finger weg von dubiosen Seiten, die Software zum Spaghetti Preis anbieten. 

Sehr spannend wird es bei selbst geschriebenen Themes und Plugins, diese müssen auf Einfallslücken überprüft und gesichert werden. Oft werden diese Themes und Plugins nicht aktiv gewartet, was ein hohes Sicherheitsrisiko darstellt, gerade wenn third-Party Dateien eingebunden werden.  Dabei gibt es wieder verschiedenste Tools zur Codeanalyse, die angewendet werden können, um einen schnellen Überblick zu bekommen. Anschließend muss wohl oder übel, Zeile für Zeile, Datei für Datei die Themes und Plugins zerlegt werden.

Bereinigen der WordPress Core Dateien

Auch für den WordPress Core (WordPress selbst) müssen die Systemordner gelöscht und durch ein frisch heruntergeladenes WordPress ersetzt werden. Dabei wird lediglich die Konfigurationsdatei sowie der Medienordner übernommen. Der Medienordner muss manuell und separat behandelt werden. 
Auch ein Blick in die Konfigurationsdatei von WordPress ist wichtig, um auch hier Schadcode ausschließen zu können. 

  • Lade das aktuelle WordPress oder die Version von WordPress herunter, die derzeit installiert ist. 
  • Entpacke das ZIP auf dem PC.
  • Lösche die Ordner wp-includes und wp-admin auf dem Webspace.
  • Lade die frischen Core-Dateien hoch.

Anschließen bereinigen wir den docroot oder home, root Verzeichnis. Das ist jenes Verzeichnis, worauf die Domain „pointet“ ist. 

  • Sichere die Datei „wp-config.php“ auf den PC
  • Lösche alle Dateien (KEINE ORDNER) die sich im Home Verzeichnis befinden (index.php, wp-login.php, wp-load.php, ….) 
  • Lade die neuen Dateien, die zuvor entpackt wurden, hoch (ohne Ordner). 

Nun gehts zur Prüfung der wp-config Datei. 

  • Öffne die alte wp-cofnig.php.
  • Öffne die wp-config-sample.php aus dem frischen WordPress.
  • Vergleiche die Dateien. Im Prinzip dürfen nur die „Salt“ Keys sowie die Datenbankverbindungen unterschiedlich sein. Einige Plugins können hier noch zusätzliche Dinge hinzugefügt haben. z. b. Germanized usw. 
  • Lade die wp-config.php in das Root Verzeichnis hoch. 

Bereinigen der Medienordner

Um die Medien zu bereinigen, muss der komplette Ordner auf eine gesicherte Umgebung heruntergeladen werden. Anschließend wird jede Datei überprüft. Hier kann ein guter Virenscanner wie ESET zu Hilfe genommen werden, um infizierte Bilddateien zu finden. Alle Dateien, die nicht hineingehören, müssen gelöscht werden. 

  • Prüfe auf index.php Dateien und öffne die Dateien in VS Code, um den Kopfbereich sowie den Fußbereich visuell auf Schadcode zu prüfen. 
  • Verwende am besten mehrere Virenscanner (CalmAV, Eset, Malewarebytes).

Nach der Bereinigung wird der Medienordner in WordPress gelöscht und die bereinigte Version hochgeladen. 

Prüfung der Datenbank

Die Datenbank muss auf jeden Fall auch überprüft werden. Dabei werden die Benutzer sowie die Post Meta Daten genauer unter die Lupe genommen und im Falle eines Infekts gelöscht. Dabei wird ein Augenmerk auf erstelle Administratoren sowie dubiosen Zeichenfolgen in der Posts Meta Tabelle gerichtet. Bei größeren Datenbanken kann dies doch einige Stunden Aufwand bedeuten.

  • Logge dich in das Webpanel deines Hoster ein.
  • Öffne das Datenbanktool – meistens wird phpMyAdmin angeboten. 
  • Suche nach der aktuellen Datenbank, sollten mehrere Datenbanken dargestellt werden, hole die Datenbank aus der wp-config.php heraus.
  • Suche nach der Tabelle Users .
  • Vor dem „users“ befindet sich ein zufällig gewähltes Tabellenpräfix – früher (bei alten Installationen war das immer „wp-xxx“ ).

Wichtig ist auch, dass der Benutzername, Passwort und wenn möglich das Tabellenpräfix geändert wird. Die geänderten Daten werden in die WordPress Konfigurationsdatei übernommen. 

  • Gehe in das Webpanel deines Hosters.
  • Suche deine Datenbank und ändere dort für den berechtigten Benutzer das Passwort. 
  • Schreibe dieses Passwort in die wp-config.php unter
    /** MySQL database password */
    define(‚DB_PASSWORD‘, ‚HIER_KOMMT_DAS_PASSWORT_HIN‘);

Dateirechte richtigstellen

Nach dem ganzen Upload müssen die Datei und Ordnerrechte richtiggestellt werden. Ohne diesem richtigstellen, wäre es möglich, dass wichtige Core Dateien im Internet für jeden abrufbar sind, dies ist speziell bei der Konfigurationsdatei und vielen weiteren Dateien und Ordner nicht gewollt.

  • Öffne dazu FileZilla und verbinde dich mit den FTP-Daten auf dein Hosting.
  • Wähle bis auf die wp-config alle Dateien aus. 
  • Setze rekursiv alle Dateirechte 
    • Für Ordner: 755
    • Für Dateien: 644

WordPress absichern

Nach getaner Arbeit sollte nun das WordPress Malware frei sein. Doch nach dem Infekt ist vor dem Infekt. 
Es ist jedoch wichtig, das WordPress mit Maßnahmen zu versehen, um ein solches Szenario nicht noch einmal eintreten kann. Dazu gehören mehrerer Schritte, die je nach Installation und Hosting unterschiedlich sein können. Oft wird eine Firewall mit angepassten Regeln und angepassten Orderzugriffen eingerichtet. Ein Backup darf auch nicht fehlen sowie wird oft ein Monatsbackup eingerichtet. 
Auch Monitoring Tools, die Dateiänderungen prüfen und regelmäßig die Webseite auf Sicherheitslücken und Infekte überprüft, sind wertvolle Tools, die frühzeitig einen Infekt erkennen oder sogar verhindern können. 

Die nächsten Schritte wären:

  1. Alle Passwörter auch von FTP Konten, WordPress Benutzern, sonstigen Dingen, wie E-Mail sollten geändert werden. 
  2. Plugins, Themes und WordPress auf Aktualität prüfen und ggf. aktualisieren. 
  3. Online Check Tools verwenden, um den Erfolg der Bereinigung zu bestätigen (setze hier auf verschiedene Anbieter).
  4. WAF – Firewall installieren und konfigurieren.
  5. Ein vernünftiges Backupkonzept einrichten.
  6. Ein vernünftiges Tool zur Wartung installierten.
  7. Passwörter durch 2 Faktor Authentifizierung ergänzen. 
  8. WordPress Anmelde URL ändern
  • Installiere Wordfence und lass Wordfence automatisch konfigurieren. 
  • Erstelle in der .htaccess eine eigene Blacklist, prüfe dazu die IP-Adressen und füge ein deny from xxx.xxx.xxx.xxx  ein. Die IP-Adressen sind dabei aus den Access Logs auszuwerten.
  • Achte darauf, dass keine „WordPress“ Einstellungen gelöscht oder geändert werden. 

Access Logs überwachen

Oft ist es sehr hilfreich, die Access Logs zu überwachen, um die Einstiegspunkte zu finden. Normalerweise befinden sich die Access Logs irgendwo im FTP root Verzeichnis oder können im Hosting Panel heruntergeladen bzw. Angeschaut werden. 

Der beste Fall wäre, die Accesslogs herunterzuladen und mit dem Tool „http  Logs Viewer“ auszuwerten. 

Dies kann z. b. so aussehen:

Es befinden sich mehrere WordPress Installationen oder andere Applikationen auf dem Webserver?

Oft werden in Subdomains oder Unterordner weitere Applikationen installiert. Dies hat zur Folge, dass der gesamte Prozess von vorn beginnt und der Bereinigungsprozess für jede einzelne Installation durchgeführt werden muss. Dabei wird es spannend, wenn sich Datei-Sharing Tools wie Nextcloud oder ein CRM zum Vorschein kommt, da oft diese Installation auch ein gefressenes Ziel für Angreifer ist.

Fazit

Das manuelle Bereinigen ist sehr aufwendig und es ist zwingend notwendig, die Dateistrukturen, die Arbeitsweise sowie die Abhängigkeiten von WordPress und deren Plugins zu kennen. Je nach Komplexität des Infekts sind weitere Schritte notwendig, um den Infekt bereinigen zu können. Es gilt insbesondere dann, wenn Passwörter von den Hostingtools im Umlauf gekommen sind. Dann muss oft der Hoster oder der IT-Administrator hinzugezogen werden.

Table of Contents

Unverbindliche Service-Anfrage senden

Mit dem Absenden des Formulars akzeptieren Sie die Datenschutzerklärung.