Das Wichtigste in 30 Sekunden

  • Malware in WordPress versteckt sich oft wochenlang, bevor sichtbare Schäden auftreten. Typische erste Hinweise sind unbekannte Weiterleitungen, Warnseiten im Browser und unbekannte Admin-Konten.
  • Für einen verlässlichen Scan brauchen Sie Zugriff auf Serverebene, nicht nur auf das WP-Dashboard. Kostenlose Tools wie Sucuri SiteCheck prüfen nur das ausgelieferte HTML.
  • Bereinigung folgt einer festen Reihenfolge: erst isolieren, dann Core, Plugins und Themes neu aufspielen, dann Datenbank und Uploads durchsuchen, zuletzt alle Zugangsdaten ändern.
  • Nach der Bereinigung müssen Sie die Einfallstür kennen, sonst infiziert dieselbe Lücke die Seite innerhalb von Stunden erneut.
  • Bei tiefem Befall mit mehreren Backdoors oder befallener Datenbank ist professionelle Hilfe kein Luxus, sondern der schnellere Weg.

Eine WordPress-Seite, die Besucher auf Glücksspiel-Domains umleitet. Ein Hosting-Account, der gesperrt wurde, weil der Server tausende Spam-Mails pro Stunde verschickte. Eine Seite, die in der Google Search Console als „gefährlich“ markiert ist, obwohl sie für den Betreiber völlig normal aussieht. All das sind Zeichen einer Malware-Infektion, und alle drei Szenarien haben gemeinsam, dass die Infektion schon Wochen oder Monate früher begann. Dieser Ratgeber zeigt, wie Sie Schadcode systematisch aufspüren, vollständig entfernen und die Lücke schließen, durch die er hereinkam.

Den allgemeinen Notfallplan bei einem gehackten WordPress erklärt der Ratgeber Website gehackt: Der Notfallplan in fünf Schritten. Dieser Artikel ist die technische Vertiefung: Malware-Technik, Scan-Methoden, manuelle Suche und vollständige Bereinigung.

Anzeichen für einen WordPress-Malware-Befall

Kurz gesagt: Viele Infektionen zeigen wochenlang keine sichtbaren Symptome. Die Seite läuft für eingeloggte Admins normal, während Besucher umgeleitet werden oder Schadcode im Hintergrund Daten abgreift.

Angreifer sind daran interessiert, möglichst lange unentdeckt zu bleiben. Daher wird Malware oft so eingebaut, dass sie nur für nicht eingeloggte Besucher aktiv ist oder sich erst zeitversetzt aktiviert. Trotzdem gibt es verlässliche Warnsignale:

Sichtbare Symptome beim Besucher: Besucher landen plötzlich auf unbekannten Domains (Phishing, Glücksspiel, Pharmacy-Spam). Die Seite zeigt Werbebanner oder Pop-ups, die der Betreiber nie eingebaut hat. Browser zeigen eine rote Warnung mit „Diese Website enthält schädliche Programme“.

Technische Hinweise: Die Google Search Console meldet Sicherheitsprobleme oder zeigt unbekannte URLs im Index, etwa Seiten in chinesischen oder kyrillischen Schriftzeichen. Ihr Hosting-Anbieter sperrt den Account wegen ungewöhnlichem ausgehendem Datenverkehr oder hohem E-Mail-Volumen. Eine Dateiprüfung zeigt, dass Dateien in wp-includes/ oder wp-admin/ ein Änderungsdatum tragen, das nach dem letzten Update liegt. In der WordPress-Benutzerverwaltung taucht ein Administrator auf, den Sie nicht angelegt haben.

Stille Infektionen: Kein sichtbares Symptom, aber der Server versendet Spam, führt Krypto-Mining aus oder dient als Relay für Angriffe auf andere Seiten. Logs des Hosting-Anbieters oder ein externer Monitor decken das auf.

Erste Diagnose: kostenlose Scanner und ihre Grenzen

Der schnellste erste Schritt ist der Sucuri SiteCheck. Das Werkzeug analysiert den ausgelieferten Quelltext Ihrer Seite auf bekannte Malware-Signaturen, eingebettete Iframes, externe Skript-Quellen und das Safe-Browsing-Status-Ergebnis von Google. Der Scan dauert unter einer Minute und liefert einen ersten Überblick, kostet nichts und setzt keinen Server-Zugriff voraus.

Was SiteCheck nicht kann: Backdoors in PHP-Dateien finden, die nicht im ausgelieferten HTML auftauchen. Ein Webshell, der als harmlose Bilddatei getarnt im Upload-Verzeichnis liegt, bleibt unsichtbar. Dasselbe gilt für verschleierter Code tief in Theme-Dateien oder für Datenbankeinträge, die Schadcode nachladen. Für die vollständige Diagnose brauchen Sie Zugriff auf Serverebene.

Das WordPress-Plugin Wordfence bietet einen serverseitigen Dateivergleich: Es lädt den Referenz-Hash aller offiziellen WordPress-Kerndateien und aller Plugins aus dem wordpress.org-Repository und vergleicht jede lokale Datei damit. Jede Abweichung wird als Befund gelistet, und Sie können sich den Unterschied direkt im Plugin anzeigen lassen. Das ist präzise für alles, was aus dem Repository stammt. Bei proprietären Themes oder außerhalb des Repositories gekauften Plugins fehlt die Referenz, und der Abgleich schlägt fehl. Die kostenlose Version deckt den Dateivergleich ab; der Echtzeit-Feed für neue Bedrohungen ist eine Premium-Funktion.

Manuelle Suche: verdächtige Dateien, Code-Muster, fremde User

Wer Shell-Zugriff hat (SSH oder ein Dateimanager im Hosting-Panel), kann direkt suchen. Die häufigsten Malware-Muster sind verschlüsselter PHP-Code mit eval(base64_decode(...)) oder eval(gzinflate(...)), der beim Aufruf entschlüsselt und ausgeführt wird. Diese Konstrukte kommen in legitimem WordPress-Code nicht vor.

grep -r --include="*.php" "eval(base64_decode" /var/www/html/wp-content/
grep -r --include="*.php" "eval(gzinflate" /var/www/html/wp-content/
grep -r --include="*.php" "system|exec|passthru|shell_exec" /var/www/html/wp-content/uploads/

Das Verzeichnis wp-content/uploads/ ist besonders interessant, weil es für den Webserver schreibbar sein muss und deshalb ein häufiges Ziel ist. PHP-Dateien haben im Upload-Ordner nichts zu suchen:

find /var/www/html/wp-content/uploads/ -name "*.php"

Jeder Treffer ist verdächtig. Eine Datei wie uploads/2024/01/image_helper.php ist kein Bild, sondern fast immer ein Webshell.

Fremde Admin-Konten in der Datenbank: In der Tabelle wp_users suchen Sie nach Konten mit der Benutzerrolle administrator, die Sie nicht kennen. Über WP-CLI geht das schnell:

wp user list --role=administrator

Unbekannte Konten sofort löschen, nicht nur deaktivieren. In der Tabelle wp_usermeta können weiterhin Berechtigungen hängen, die über einen aktiven WP-Benutzer hinausgehen.

Dateien nach Änderungsdatum filtern: Wenn Sie wissen, wann Ihre letzte legitime Änderung war, können Sie neuere Dateien gezielt ausfindig machen:

find /var/www/html/ -newer /var/www/html/wp-config.php -name "*.php" ! -path "*/uploads/*"

Das listet alle PHP-Dateien, die jünger sind als die wp-config.php. Unbekannte Einträge in Core-Verzeichnissen sind ein klares Warnsignal.

Symptome, Ursachen und Maßnahmen auf einen Blick

Symptom Mögliche Ursache Erste Maßnahme
Besucher werden auf fremde Domains umgeleitet Weiterleitung in .htaccess, Theme-Datei oder Datenbank .htaccess durch saubere Version ersetzen, Datenbank auf Redirect-Code durchsuchen
Google Search Console meldet Sicherheitsprobleme Bekannte Malware-Signatur im ausgelieferten HTML oder in Dateien Sucuri SiteCheck laufen lassen, betroffene Seite im HTML-Quelltext prüfen
Hosting-Account wegen Spam gesperrt Schadcode versendet E-Mail über PHP-Mail-Funktion Beim Anbieter Log anfordern, Ausgangsdatei identifizieren und löschen
Unbekannter Admin-Benutzer in WP Backdoor hat Konto angelegt, oft nach erfolgreicher Authentifizierung über eine Lücke Sofort löschen, alle anderen Passwörter ändern, Logins prüfen
PHP-Dateien im Upload-Verzeichnis Eingeschleuster Webshell über unsichere Datei-Upload-Funktion Dateien löschen, Upload-Verzeichnis auf PHP-Ausführung sperren
Seite lädt externe Skripte unbekannter Herkunft Injektion in wp_options (z.B. wp_head-Hook) oder Theme-Dateien Datenbank-Eintrag active_plugins und theme_mods prüfen, Wordfence-Scan starten
Core-Dateien weichen vom Original ab Kerncode manipuliert, z.B. wp-load.php oder wp-settings.php Core-Verzeichnisse komplett durch frische WordPress-Version ersetzen

Schritt-für-Schritt-Bereinigung

Kurz gesagt: Erst isolieren und sichern, dann in dieser Reihenfolge: Core und Plugins neu aufspielen, Uploads bereinigen, Datenbank durchsuchen, .htaccess ersetzen, alle Passwörter ändern. Zum Schluss die Ursache abschließen.

Die WordPress.org-Dokumentation zu gehackten Seiten empfiehlt dieselbe Reihenfolge. Das ist kein Zufall: Wer die Schritte in falscher Reihenfolge geht, riskiert, dass eine übersehene Backdoor den frisch aufgespielten Core innerhalb von Minuten erneut kompromittiert.

Schritt 1: Website in den Wartungsmodus versetzen. Schalten Sie den Besucherzugriff ab, solange die Bereinigung läuft. Eine einfache Maintenance-Seite über .htaccess reicht. So liefern Sie während der Arbeit keinen Schadcode aus und können in Ruhe vorgehen.

Schritt 2: Vollständiges Backup erstellen. Auch im infizierten Zustand. Sie brauchen einen Stand, gegen den Sie Änderungen prüfen können, und einen Fallback für den Fall, dass bei der Bereinigung etwas schiefgeht. Den Backup-Plan erklärt der Ratgeber WordPress-Backup-Strategie: Der 3-2-1-Plan.

Schritt 3: Alle Passwörter sofort ändern. WordPress-Administratoren, FTP, Datenbank, Hosting-Panel. Solange ein Angreifer die Zugangsdaten kennt, ist jede Bereinigung vergeblich. Über WP-CLI: wp user update <id> --user_pass="<neues_passwort>". Starke Passwörter und Zwei-Faktor-Authentifizierung erklärt der Ratgeber WordPress Login absichern.

Schritt 4: Unbekannte Admin-Konten löschen. Liste über wp user list --role=administrator holen, alle unbekannten Einträge sofort entfernen.

Schritt 5: Core-Verzeichnisse ersetzen. Laden Sie die aktuelle WordPress-Version direkt von wordpress.org herunter und ersetzen Sie wp-admin/ und wp-includes/ vollständig. Die Datei wp-config.php und das Verzeichnis wp-content/ lassen Sie dabei unberührt.

Schritt 6: Plugins und Themes neu installieren. Löschen Sie alle Plugin-Verzeichnisse unter wp-content/plugins/ und installieren Sie jedes Plugin frisch aus der Originalquelle. Gehen Sie mit Themes genauso vor. Kein Theme, das Sie nicht aktiv nutzen, bleibt auf dem Server. Jedes inaktive Theme ist eine zusätzliche Angriffsfläche.

Schritt 7: Uploads-Verzeichnis bereinigen. Suchen Sie PHP-Dateien im Upload-Ordner (find /var/www/html/wp-content/uploads/ -name "*.php") und löschen Sie jeden Treffer. Überprüfen Sie zusätzlich, ob für dieses Verzeichnis die PHP-Ausführung auf Serverebene gesperrt ist.

Schritt 8: Datenbank durchsuchen. Malware schreibt sich häufig in wp_options, wp_posts oder wp_postmeta. Suchen Sie nach Mustern wie <script src= mit unbekannten Domains, eval(, base64_decode( oder eingebetteten iframe-Tags in Feldern, in denen solche Konstrukte nichts verloren haben. Das Such-und-Ersetze-Plugin von interconnect/it oder WP-CLI eignen sich dafür.

Schritt 9: .htaccess ersetzen. Ersetzen Sie die Datei durch eine saubere Standardversion (zu finden im WordPress-Repository-Download) und prüfen Sie sie auf Weiterleitungsregeln zu unbekannten Domains. Angreifer verstecken Redirects in einzelnen Zeilen am Ende der Datei oder in Kommentarblöcken.

Schritt 10: Ursache abschließen. Erst wenn die Einfallstür bekannt ist, ist die Bereinigung wirklich abgeschlossen. War es ein veraltetes Plugin, das patchen und auf aktuellem Stand halten. War es ein schwaches Passwort, sind alle Passwörter zu erneuern. War es eine nicht gepatchte Lücke in einem Premium-Theme, auf die neueste Version aktualisieren. Ein vollständiges Sicherheitskonzept für WordPress-Plugins behandelt der Ratgeber Sicherheits-Plugins für WordPress.

Härtung nach der Bereinigung

Die WordPress.org-Dokumentation zu Hardening listet die wichtigsten Maßnahmen, um eine saubere Installation schwerer angreifbar zu machen. Die wirkungsvollsten im Überblick:

Updates konsequent einhalten. Der häufigste Einfallsweg ist eine bekannte Schwachstelle in einem veralteten Plugin, für die seit Wochen ein Patch existiert. Das BSI empfiehlt ausdrücklich, Software-Updates zeitnah einzuspielen. Für WordPress-Kern sind automatische Sicherheits-Updates seit Version 3.7 verfügbar und sollten aktiv bleiben.

Dateirechte richtig setzen. Verzeichnisse auf 755, Dateien auf 644, die wp-config.php auf 440 oder 400. Ein Webserver, der mehr Rechte als nötig hat, erleichtert dem Angreifer das Schreiben von Backdoors.

XML-RPC deaktivieren, sofern Sie die Schnittstelle nicht für mobile Apps oder externe Dienste brauchen. Sie ist ein häufiges Angriffsziel für Brute-Force-Attacken und kann über einen einzelnen Eintrag in der .htaccess gesperrt werden.

Login absichern. Begrenzung der Anmeldeversuche (Wordfence, Fail2ban auf Serverebene) und wenn möglich eine IP-Beschränkung für /wp-admin/. Zwei-Faktor-Authentifizierung für alle Administratoren. Details im Ratgeber WordPress Login absichern.

PHP-Ausführung im Upload-Ordner sperren. Ein einfacher Eintrag in einer .htaccess-Datei im Upload-Verzeichnis verhindert, dass hochgeladene PHP-Dateien ausgeführt werden können:

<Files *.php>
  deny from all
</Files>

Google-Sperre aufheben

Wenn Google Ihre Seite als gefährlich markiert hat, verschwindet die Warnung nicht automatisch nach der Bereinigung. Sie müssen aktiv eine Überprüfung beantragen. Öffnen Sie in der Google Search Console unter Sicherheitsprobleme die betroffene Meldung und fordern Sie eine erneute Überprüfung an. Google prüft dann, ob die Seite tatsächlich sauber ist, und hebt die Warnung in der Regel binnen weniger Tage auf. Solange die Warnung besteht, brechen der organische Traffic und die Conversions massiv ein.

Falls Ihr Server für Spam-Versand missbraucht wurde, prüfen Sie zusätzlich, ob Ihre Domain oder IP-Adresse auf einer Blockliste gelandet ist (MXToolbox, Spamhaus). Viele Hosting-Anbieter geben auf Anfrage Einblick in die Logs des ausgehenden E-Mail-Verkehrs.

Ein Fall aus der Praxis

In einem Projekt, das wir übernommen haben, meldete der Betreiber, dass Besucher manchmal auf eine Pharmazie-Spam-Seite umgeleitet wurden, er selbst sah die Weiterleitung nie. Das ist ein typisches Muster: Die Umleitung war so eingebaut, dass sie nur bei Zugriffen aus Suchmaschinen-Referrern aktiv war, also bei Besuchern, die über Google kamen. Eingeloggte Admins und direkte Zugriffe sahen die normale Seite.

Der Sucuri SiteCheck war unauffällig, weil er die Weiterleitung nicht auslöste. Erst ein Dateivergleich über Wordfence zeigte eine Abweichung in einer functions.php des Child-Themes: 14 Zeilen verschlüsselter Base64-Code, eingebettet nach dem normalen Theme-Header. Der Code lud eine externe PHP-Datei nach, die die Weiterleitung je nach User-Agent und Referrer steuerte.

Die Infektionsquelle war ein veraltetes Kontaktformular-Plugin, das seit drei Monaten eine bekannte Remote-Code-Execution-Lücke hatte. Das Plugin war nicht mehr aktiv genutzt, aber nicht deinstalliert. Die Bereinigung dauerte einen halben Tag, inklusive Datenbank-Check und vollständigem Plugin-Neubau. Ohne das externe Monitoring, das der neue Betreiber eingerichtet hatte, wäre die Infektion vermutlich monatelang unbemerkt geblieben.

Wann Sie professionelle Hilfe brauchen

Selbst bereinigen ist technisch möglich, wenn Sie Shell-Zugriff haben und die beschriebenen Schritte durchführen können. Es gibt aber Situationen, in denen professionelle Hilfe der schnellere und zuverlässigere Weg ist:

  • Die Bereinigung war abgeschlossen, die Seite wurde aber binnen 48 Stunden erneut infiziert. Das bedeutet: die Einfallstür ist noch offen.
  • Es gibt mehrere Backdoors an verschiedenen Stellen (Dateien, Datenbank, Theme), und der Überblick ist verloren.
  • Kundendaten wurden möglicherweise abgegriffen. Dann gilt neben der Bereinigung auch die 72-Stunden-Meldepflicht nach Art. 33 DSGVO gegenüber der Datenschutzbehörde.
  • Die Infektion läuft schon Monate, und der Umfang der Manipulation ist unklar.
  • Kein Shell-Zugriff, kein Backup und kein technisches Hintergrundwissen für die Datenbankbereinigung vorhanden.

Kein Heldentum bei tiefem Befall. Was ein erfahrener Techniker in zwei Stunden löst, kann sich für jemanden ohne SSH-Erfahrung zu einem mehrtägigen, fehleranfälligen Projekt auswachsen. Und für jede Stunde, die vergeht, läuft der Schadcode weiter. Was ein Totalausfall bedeutet und wie ein professioneller Notfallplan aussieht, erklärt der Ratgeber Disaster Recovery: Notfallplan bei Totalausfall.

Sofort-Checkliste: Malware gefunden

  • Website in den Wartungsmodus versetzt, Besucherzugriff gesperrt?
  • Vollständiges Backup erstellt (auch im infizierten Zustand)?
  • Alle Passwörter geändert: WordPress-Admin, FTP, Datenbank, Hosting-Panel?
  • Unbekannte Admin-Konten in wp_users geprüft und entfernt?
  • Core-Verzeichnisse (wp-admin, wp-includes) durch frische Kopie ersetzt?
  • Alle Plugins und Themes aus Originalquellen neu installiert?
  • PHP-Dateien im Upload-Verzeichnis gesucht und gelöscht?
  • Datenbank auf eval, base64_decode, fremde iframe- und script-Tags durchsucht?
  • .htaccess durch saubere Standardversion ersetzt?
  • Einfallstür identifiziert und geschlossen (Plugin, Passwort, Dateirecht)?
  • Wordfence oder vergleichbares Monitoring eingerichtet?
  • Überprüfung in der Google Search Console beantragt (falls Sperre aktiv)?
  • Domain auf Blocklisten geprüft (falls Spam-Versand aktiv war)?
  • DSGVO-Meldepflicht geprüft: waren personenbezogene Daten betroffen?
Das Wichtigste zum Mitnehmen

  • Malware in WordPress bleibt oft wochenlang unsichtbar. Regelmäßiges Monitoring ist der früheste Indikator.
  • Kostenlose Scanner wie Sucuri SiteCheck prüfen nur das HTML. Vollständige Diagnose erfordert serverseitigen Zugriff.
  • Bereinigung funktioniert nur, wenn die Einfallstür bekannt und geschlossen ist. Sonst folgt die nächste Infektion in Stunden.
  • Bei Kundendaten gilt die 72-Stunden-Meldepflicht nach DSGVO, auch während der Bereinigung.

Häufige Fragen

Wie merke ich, ob meine WordPress-Seite Malware hat, ohne selbst ins Hosting zu schauen?

Der schnellste Weg ohne Hosting-Zugriff ist der Sucuri SiteCheck: URL eingeben, und das Werkzeug prüft innerhalb einer Minute das ausgelieferte HTML auf bekannte Schadcode-Signaturen und den Google Safe-Browsing-Status. Ergänzend zeigt die Google Search Console unter dem Punkt Sicherheitsprobleme, ob Google Malware oder ungewünschte Software erkannt hat. Beide Tools sind kostenlos und setzen kein technisches Vorwissen voraus.

Reicht es, WordPress und alle Plugins zu aktualisieren, um Malware loszuwerden?

Nein. Updates schließen bekannte Sicherheitslücken und verhindern künftige Infektionen über denselben Weg. Bereits eingeschleuster Code bleibt aber auf dem Server, auch nach dem Update. Die Bereinigung muss getrennt erfolgen: Dateien prüfen, Datenbank durchsuchen, Backdoors entfernen.

Meine Seite wurde erneut infiziert, kurz nach der Bereinigung. Was ist falsch gelaufen?

Fast immer ist die Einfallstür noch offen. Entweder wurde das verwundbare Plugin nicht aktualisiert oder deinstalliert, eine Backdoor wurde übersehen (häufig in der Datenbank oder in einem inaktiven Theme), oder ein kompromittiertes Passwort ist noch in Verwendung. Gehen Sie die Schritte in der angegebenen Reihenfolge erneut durch, diesmal mit besonderem Fokus auf Datenbank-Einträge und inaktive Themes.

Schützt ein Security-Plugin vollständig vor Malware?

Kein Plugin schützt vollständig, aber ein gutes Security-Plugin reduziert die Angriffsfläche erheblich. Wordfence zum Beispiel blockiert bekannte Exploit-Muster über eine Web Application Firewall, meldet Datei-Änderungen und prüft Logins. Was Security-Plugins leisten und welche für welche Szenarien sinnvoll sind, erklärt der Ratgeber Sicherheits-Plugins für WordPress: Welche wirklich helfen.

Bin ich nach einem Hack zur DSGVO-Meldung verpflichtet?

Das hängt davon ab, ob personenbezogene Daten betroffen sind. Wenn Ihr WordPress Kontaktformulare, Kundendaten, Newsletter-Abonnenten oder WooCommerce-Bestellungen enthält und ein Angreifer Zugriff darauf hatte oder haben konnte, sind Sie nach Artikel 33 DSGVO verpflichtet, die zuständige Datenschutzbehörde unverzüglich, in der Regel binnen 72 Stunden, zu benachrichtigen. Im Zweifel Datenschutzbeauftragten oder Rechtsanwalt kontaktieren.

Wie lange dauert eine professionelle WordPress-Bereinigung?

Eine klar abgegrenzte Infektion ohne Schaden in der Datenbank dauert erfahrungsgemäß zwei bis vier Stunden. Komplexere Fälle mit mehreren Backdoors, manipulierten Datenbankinhalten und langer Infektionsdauer können einen halben bis ganzen Arbeitstag in Anspruch nehmen, inklusive anschließender Absicherung und Monitoring-Einrichtung.

Quellen und weiterführende Informationen: WordPress.org: FAQ My Site Was Hacked (offiziell, Stand 2025), WordPress.org: Hardening WordPress (offiziell), WordPress.org: Security Overview, BSI: Software-Updates und Sicherheit, BSI: Empfehlungen für Webanwendungen, Sucuri SiteCheck (kostenloser Online-Scanner, Sucuri Inc.), Sucuri: Malware Removal (Sucuri Inc., Anbieter, transparent gekennzeichnet), Wordfence: How to Clean a Hacked WordPress Site (Defiant Inc., Anbieter, transparent gekennzeichnet), Google: Sicherheitsprobleme in der Search Console. Stand: Juni 2026. Dieser Artikel ist eine fachliche Einordnung und ersetzt keine Rechts- oder Sicherheitsberatung im Einzelfall.