Mini Tutorial: In 10 Schritten Malware unter WordPress entfernen

Wenn WordPress von Malware oder anderer Schadware befallen wird ist es nicht allzu aufwendig, diese Seite wieder zu bereinigen. In 10 Schritten erkläre ich, wie man seine Website wiederherstellt und in 2 weiteren Schritten, wie man sich optimal schützt.

Aus aktuellem Anlass ein Mini Tutorial zu WordPress, das man sich doch eigentlich lieber sparen würde. Aber leider kommt man nicht drum herum, über das Thema Sicherheit zu sprechen. Die Website eines guten Freunds hatte es nämlich erwischt und wurde von lästiger Malware befallen. Das Resultat: Virenscanner wie Norton Internet Security erkennen die Malware, stoppen aber auch jeden weiteren Aufbau der Website. Und nach wenigen Tagen erscheint auch in den gängigsten Browsern beim Aufruf der Seite ein Sicherheitshinweis, dass diese Seite wohl befallen ist.

Das ist für jeden Hobbyblogger natürlich eine Katastrophe. Und insbesondere für unerfahrenere Webmaster eine schwierige Situation. Die Frage lautet also: Wie kann ich die Malware oder Schadware von meiner WordPress-Website wieder entfernen?

Da sich Malware und Schadware bei WordPress sehr häufig in den Themes, Plugins oder dem Hauptsystem selbst eingräbt, ist es für Anfänger häufig schwierig, den genauen Brennpunkt zu bestimmen. Hier ist es am einfachsten, einfach alles zu bereinigen.

Bei der vorgeschlagenen Methode muss man jedoch berücksichtigen:

  • Es wird automatisch das neueste WordPress installiert. Das bedeutet für ältere WordPress-Systeme, dass diese auf den neuesten Stand geupgradet werden.

Fangen wir also an.

10 Schritte, um Malware und Schadware unter WordPress zu entfernen

Schritt 1: Backups der WordPress-Dateien und der Datenbank machen

WordPress Logo

WordPress Logo. Grafik: WordPress.com

Diese Methode sieht vor, fast alle WordPress-Dateien (die man über FTP hochgeladen hat) zu löschen. Vorher sollte man jedoch unbedingt Backups der Dateien downloaden. Da später auch die Datenbank aktualisiert wird ist ein Backup der Datenbank ebenfalls äußerst empfehlenswert. Sollte wider erwarten etwas schief laufen kann man mit den Backups die Seite trotzdem wiederherstellen.

Schritt 2: Alle Themes und Plugins deaktivieren

Wenn man sich unter http://www.MEINEDOMAIN.de/wp-admin/ noch einloggen kann, sollte man alle aktivierten WordPress Plugins und WordPress Themes deaktivieren.

Hoffentlich hattest du bisher auch immer fleißig Backups erstellt, also auch zu jenen Zeitpunkten, als WordPress noch einwandfrei funktionierte. Diese werden wir später brauchen. Wenn nicht gilt bis zum 3. Schritt zusätzlich:

Wenn du ein fremdes Theme verwendest, downloade dieses Theme jetzt erneut. In Form von downloade es dir auf deinen Rechner, und zwar nicht nur per FTP (Schritt 1), sondern auch das Original von der Original-Website.

Das gleiche gilt für Plugins. Mache dir eine Liste der Plugins, die du wirklich benötigst. Wir werden sie später neu installieren müssen.

Hintergrund: Malware nistet sich sehr häufig in den Themes oder Plugins ein – von dem her macht es keinen Sinn, das infizierte Theme oder infizierte Plugins in den folgenden Schritten wieder hochzuladen. Wir benötigen möglichst Originale, wenn wir keine Backups haben.

Schritt 3: Dateien und Ordner vom FTP-Server löschen

Öffne mit deinem FTP-Programm das Hauptverzeichnis deiner betroffenen Website. Lösche jetzt folgende Ordner:

  • /wp-admin/
  • /wp-includes/

Lösche außerdem im Hauptverzeichnis alle Dateien, außer:

  • wp-config.php
Die wp-config.php ist die Schnittstelle zwischen deiner WordPress-Installation (die wir gerade weiträumig gelöscht haben) und der Datenbank. Sie enthält die Zugangsdaten zur Datenbank. Wird sie gelöscht, ist auch die Verbindung zur Datenbank futsch.

Öffne jetzt das verbleibende Verzeichnis /wp-content/. Öffne jeweils folgende Unterverzeichnisse und lösche alle Dateien und Ordner in folgenden Verzeichnissen:

  • /wp-content/languages/
  • /wp-content/plugins/
  • /wp-content/themes/
  • /wp-content/upgrade/
  • Diese 4 Unterverzeichnisse müssen aber weiterhin bestehen bleiben.

Wenn du jetzt noch ganz auf Nummer sicher gehen möchtest, klicke dich auch in das Unterverzeichnis /wp-content/uploads/ und lösche hier alle Ordner und Dateien. Hinweis: Damit löschst du aber auch alle Bilder und Dateien, die du in die Mediathek hochgeladen hast.

Am Ende des großen Löschvorgangs dürfen nur noch vorhanden sein:

  • /wp-config.php (Datei)
  • /wp-content/
    • /wp-content/languages/
    • /wp-content/plugins/
    • /wp-content/themes/
    • /wp-content/uploads/
      • und je nachdem  auch alle Unterordner und Dateien in diesem Ordner
    • /wp-content/upgrade/

Schritt 4: WordPress downloaden und per FTP neu hochladen

Die Malware und Schadware wurde durch das Löschen entfernt – aber auch fast den kompletten Rest der Seite. Nun sollten wir die aktuelle Version von WordPress downloaden.

Nach dem Entpacken wird diese einfach per FTP hochgeladen.

ACHTUNG: Achte darauf, dass die wp-config.php nicht überschrieben wird.

Schritt 5: WordPress manuell upgraden

Nachdem die Dateien neu hochgeladen wurden, können wir mit dem URL-Zusatz /wp-admin/upgrade.php die Datenbank an das aktuell heruntergeladene WordPress-System upgraden. Rufe also folgende URL auf:

  • http://www.MEINEDOMAIN.de/wp-admin/upgrade.php

Logge dich mit deinen Administrator-Zugangsdaten ein. Folge den Anweisungen auf dem Bildschirm und führe das Upgrade durch.

Möglicher Fehlerquelle: Wenn du vorher aus Versehen den Ordner /wp-content/upgrade/ gelöscht hast kann das Datenbank-Upgrade nicht erfolgreich durchgeführt werden. Erstelle dieses Verzeichnis via FTP-Programm neu.

Von Malware befreit – WordPress erneut einrichten

An dieser Stelle haben wir die Website erfolgreich von jeglicher Schadware befreit und eine saubere WordPress-Installation hochgeladen. Dank der wp-config.php ist diese auch voll mit der aktualisierten Datenbank verknüpft. Aber es gibt noch eine Menge zu tun, auch wenn WordPress jetzt Malware-frei ist. Weiter gehts mit:

Schritt 6: Themes und Plugins wieder installieren.

Als nächstes laden wir die neueste Theme-Version in den Ordner /wp-content/themes/ hoch.

Achtung: NICHT das Backup hochladen. Immer nur die aktuellste Version, direkt von der Website des Theme-Anbieters hochladen. Das erst heruntergeladene Backup (aus Schritt 2) könnte infiziert sein.

Anschließend das Theme aktivieren. Bei speziellen Theme-Einstellungen diese jetzt prüfen und ggf. anpassen.

Jetzt sollten wir die Plugins ebenfalls wieder installieren und aktivieren. Das geht über das Dashboard unter Plugins → Plugins installieren am einfachsten.

Mögliche Fehlerquelle: Wenn vorher unabsichtlich der Ordner /wp-content/plugins/ gelöscht wurde, muss dieser per FTP-Programm zuerst erstellt werden.

Schritt 7: .htaccess wiederherstellen

Wenn du deine Permalinks angepasst hast, benötigst du eine eingerichtete .htaccess-Datei. Es kann sein, dass WordPress nicht selbstständig die .htaccess im Hauptverzeichnis wiederherstellen kann.

Prüfe dazu folgende Tatsachen:

  • Ist im Hauptverzeichnis eine Datei, die .htaccess heißt?
  • Kann ich einzelne Seiten und Artikel auf meiner Website aufrufen (nicht über das Dashboard)?
.htaccess in den WordPress-Permalink-Einstellungen

.htaccess in den WordPress-Permalink-Einstellungen

Wenn nicht, dann: Gehe ins Dashboard → Einstellungen → Permalinks. Wenn hier am Ende der Seite steht, dass du die .htaccess mit entsprechendem Code befüllen musst: Erstelle eine Datei mit diesem Dateinamen, füge den Code ein und lade die Datei ins Hauptverzeichnis hoch.

Achtung: Verwende auch hier nicht die .htaccess, die wir in Schritt 2 als Backup gespeichert haben. Die .htaccess ist eine ebenfalls sehr kritische Datei und sollte an dieser Stelle wirklich ganz neu erstellt werden, wenn es WordPress selbst nicht schafft.

Schritt 8: Dateiberechtigungen per FTP-Programm aktualisieren

Als nächstes sollte dafür gesorgt werden, dass die gerade hochgeladenen Ordner und Dateien nicht mehr von außen bearbeitet werden können. Hier liegt eine der häufigsten Fehlerquellen für Malware und Schadware: Die Dateiberechtigungen aller Ordner und Dateien der WordPress-Installation haben komplette Lese- und Schreibrechte (777), auch für außenstehende Skripte.

Hier sollten die Dateiberechtigungen also eingeschränkt werden. Und zwar wie folgt und von oben nach unten:

Für Filezilla: Rechtsklick auf eine Datei oder einen Ordner → Dateiberechtigung…
Datei-/Ordnername vom Hauptpfad aus gesehenDateiberechtigungvererben*
DAS HAUPTVERZEICHNIS705ja
/.htaccess404nein
/wp-config.php404nein
/index.php404nein
/wp-blog-header.php404nein
/wp-admin/705ja
/wp-includes/705ja
/wp-content/705ja
*vererben = Diese Dateiberechtigungen auf alle Dateien und Verzeichnisse (in diesem Verzeichnis) anwenden.

Schritt 9: Passwörter austauschen

Je nach Schadware ist es möglich, dass sich diese unter anderem Zugangsdaten und Passwörter des FTP-Zugangs oder die Zugangsdaten der Benutzer (auch des Administrators) gemerkt hat. So käme die Schadware nach kurzer Zeit wieder in das System rein. Es ist also unabdingbar, die Passwörter aller Benutzer in WordPress, inklusive dem Administrator, sowie das FTP-Zugangspasswort zu ändern.

Schritt 10: Prüfen, prüfen, prüfen

Als finaler Schritt steht eine finale Überprüfung an.

  • Funktioniert das Aufrufen von Seiten und Artikeln fehlerfrei?
  • Kann ich die Suchfunktion benutzen?
  • Ist die Darstellung auf den Kategorie- und Schlagwortseiten sauber?
  • Kann ich einen Test-Artikel mit neu hochgeladenem Testbild veröffentlichen?
  • Meldet sich mein Virenscanner auf den einzelnen Unterseiten?
  • Stimmen die Einstellungen des Themes und der Plugins?
  • Habe ich alle Passwörter geändert?

Schritt 11 (Vorbeugemaßnahme): WordPress Updates immer installieren

Malware auf WordPress entfernen

Typische Fehlermeldung unter Firefox wenn eine Website Malware und Schadware verbreitet. (Screenshot)

Jetzt sollte deine WordPress-Seite nicht nur von der Malware befreit, sondern auch auf dem aktuellsten Stand sein. Und das sollte es auch bleiben, auch wenn es etwas lästig mit den WordPress Updates ist.

Dennoch: Updates schließen Sicherheitslücken. Sollte ein Plugin oder ein Theme nach einem Update nicht mehr sauber arbeiten, warte das Update des jeweiligen Plugins ab. Es ist nicht empfehlenswert, veraltete und nicht mehr aktualisierte Plugins zu verwenden. Lieber hier nach einer Alternative suchen als das Risiko, erneut von einer Schadware oder Malware erwischt zu werden, einzugehen.

Schritt 12: BulletProof Security Plugin für optimalen Schutz auf WordPress installieren

Das Plugin BulletProof Security wurde entwickelt, um genau solche Schwachstellen aufzuzeigen und bietet optimalen Schutz für WordPress. Eine detailliertere Anleitung dazu findest du hier auf nBlogs:

Ich hoffe ich konnte euch soweit weiterhelfen und eure Seite von bösartiger Malware wieder bereinigen. Wenn dem so ist, lasst doch einen Link oder ein Gefällt mir da. 😉

Fragen? Dann ab damit in die Kommentare. 😉

9 Comments

  1. Hallo Pascal!

    Vielen Dank für Deine Anleitung, die ich so bis Punkt 9 nachvollzogen habe. Als ich jedoch die Passwörter ändern wollte, zeigte er mir auf der Seit an:

    Forbidden

    You don’t have permission to access / on this server.
    Apache Server at bmc-rookies.de Port 80

    Warum passiert das jetzt? Wie bekomme ich wieder Zugriff?

    Viele Grüße
    Alex

    1. Hallo Alex,

      probiere es dann so:

      Die Dateiberechtigung in FTP des Ordners /wp-admin/ und Unterordner und Dateien von 705 auf 755 setzen. Dann solltest du in der Lage sein das Passwort zu ändern. Ich würde anschließend die Rechte aber wieder auf 705 setzen. 😉

      Wenn das nicht klappt, die Rechte aller Dateien und Ordner nochmal auf 755 setzen, die Passwörter ändern und anschließend den Punkt 8 mit den Dateiberechtigungen durchführen.

      Schöne Grüße und viel Erfolg. 🙂

      Pascal

  2. Also die Unterordner können gut und gern auf 705 stehen, sobald ich aber das root auf 705 (und nicht mind. auf 754) stelle kommt der 403er…

  3. Danke für das ausführliche Tutorial. Habe soeben eine Malware verseuchte WordPress Installation erfolgreich „restauriert“ und zu guter Letzt das BulletProof Plugin installiert. Super Tipp!

    1. @Pascal: Freut mich, dass dir das Tutorial weitergeholfen hat. Mit dem aktivierten BulletProof Security Plugin sollten dann die Angriffe keine Bedrohung mehr darstellen. 🙂

      Schöne Grüße

      Pascal (also der von nBlogs… 😉 )

  4. Danke für diesen informativen und umfangreichen Beitrag. –
    Hatte gestern dieselbe Meldung von Google. Habe diesmal nicht sofort etwas unternommen (beim letzten Mal war der ganze Blog im A….) – und siehe da, heute war dieser rote Bildschirm (siehe oben) wieder weg und alles läuft wieder normal.
    Weiterhin alles Gute und viel Erfolg!
    Walter Bracun

  5. Hallo, vielen Dank für das toll gemachte Tutorial.
    Leider verstehe ich etwas nicht ….

    „Wenn hier am Ende der Seite steht, dass du die .htaccess mit entsprechendem Code befüllen musst: Erstelle eine Datei mit diesem Dateinamen, füge den Code ein und lade die Datei ins Hauptverzeichnis hoch.“ –> Wie mache ich das? Was für eine Datei muss ich wie erstellen?

    Über einen Tipp hierzu würde ich mich sehr freuen – ich habe eine verseuchte WP-Seite und möchte dieses Tutorial gerne ausprobieren.
    Danke!

    1. Hallo Holger,

      hast du schon geprüft, ob du Artikel aufrufen kannst?

      Wenn du das kannst, erscheint nämlich im Administrationsbereich unter Einstellungen → Permalinks etwas am Ende, das so aussieht:

      Anpassungen der .htaccess-Datei für Permalinks in WordPress

      Wenn das eben der Fall ist – also der Code auftaucht:

      1. Den .htaccess-Code kopieren
      2. Den Code in einem Editor einfügen (wie MS Editor, aber nicht MS Word)
      3. Die Datei als „.htaccess“ abspeichern ohne Dateiname, nur die Dateiendung. Wenn dein Rechner das nicht zulässt, kannst du die Datei auch als a.htaccess abspeichern.
      4. Die .htaccess per FTP-Programm auf dein Hauptverzeichnis hochladen
      5. Falls die Datei „a.htaccess“ heißt, jetzt auf dem Server per FTP in „.htaccess“ umbenennen (eben ohne Dateinamen, nur Dateiendung).

      Hope that helps. =)

Schreibe einen Kommentar

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