secaudit.eu
Notfall

WordPress-Malware entfernen: Schritt für Schritt

WordPress-Malware entfernen in acht Schritten: Website eindämmen, Beweise sichern, Einfallstor finden, aus sauberen Quellen ersetzen, Zugänge ändern und härten.

Von , AngelForce OÜ 7 Min. Lesezeit

Auch auf: English Français Español Italiano Polski Português Türkçe

Wer WordPress-Malware zuverlässig entfernen will, ersetzt alles Ersetzbare aus sauberen Quellen, schließt die Lücke, durch die der Angreifer kam, und ändert jedes Geheimnis, das er gesehen haben könnte. Die eine verdächtige Datei zu löschen, reicht nicht: Angreifer hinterlassen meist mehr als einen Weg zurück.

Der folgende Plan hat acht Schritte. Arbeiten Sie sie der Reihe nach ab und führen Sie dabei Protokoll, denn die Notizen brauchen Sie für Google, Ihren Hoster und unter Umständen für die Datenschutzaufsicht. Sind Sie noch nicht sicher, ob Ihre Website überhaupt kompromittiert ist, beginnen Sie mit unseren 12 Anzeichen für eine gehackte WordPress-Website.

Diagramm: die acht Schritte zum Entfernen von WordPress-Malware
Acht Schritte von der Eindämmung bis zur Dokumentation. Die DSGVO-Frist läuft ab dem Moment, in dem Sie von dem Angriff erfahren.

Bevor Sie WordPress-Malware entfernen: selbst bereinigen, Backup oder Profi?

Entscheiden Sie das zuerst, denn es verändert den restlichen Plan.

  • Ein sauberes Backup einspielen, wenn Sie ungefähr wissen, wann die Infektion begann, und ein Backup von davor haben. Die Schritte 3, 5 und 6 brauchen Sie trotzdem, sonst kommt der Angreifer durch dieselbe Lücke zurück. Bestellungen, Kommentare oder Formulareinträge seit dem Backup gehen verloren, wenn Sie sie nicht vorher exportieren.
  • Einen Profi holen, wenn die Website Zahlungen abwickelt oder sensible Daten verarbeitet, die Infektion nach einer früheren Bereinigung zurückkam, mehrere Websites auf demselben Server betroffen sind, Sie einen forensischen Bericht für Versicherung oder Behörde brauchen oder sich auf der Kommandozeile nicht sicher fühlen. Viele Hoster bieten das ebenfalls an.
  • Selbst bereinigen, wenn Sie SSH- und WP-CLI-Zugang haben, wissen, welche Plugins und Themes Sie einsetzen, und genug Zeit für gründliche Arbeit mitbringen.

Eindämmen: Schaden begrenzen, Beweise sichern

Schritt 1: Die Website eindämmen

Nehmen Sie die Website vom Netz oder schränken Sie den Zugriff ein, damit sich keine Besucher infizieren. wp maintenance-mode activate zeigt Besuchern einen Wartungshinweis, wirkt aber nur auf Anfragen, die WordPress laden: Eine direkt aufgerufene Hintertür-Datei läuft weiter. Wirksam eindämmen lässt sich nur auf dem Server. Bitten Sie Ihren Hoster, den öffentlichen Zugriff zu sperren oder auf Ihre IP-Adresse zu beschränken.

Sperren Sie dann den Admin-Bereich. Dieser Befehl meldet alle Benutzer ab:

wp user list --field=ID | xargs -n 1 wp user session destroy --all

Ändern Sie Ihr eigenes Administratorpasswort von einem sauberen Gerät aus. Notieren Sie unbekannte Konten, löschen Sie sie aber erst nach Schritt 2. Auf einer infizierten Website können Sie WP-CLI-Befehle um --skip-plugins --skip-themes ergänzen, damit kein Plugin- und Theme-Code ausgeführt wird; Must-Use-Plugins und die wp-config.php werden trotzdem geladen.

Schritt 2: Den infizierten Zustand sichern

Bevor Sie irgendetwas ändern, sichern Sie die gehackte Website genau so, wie sie ist. Sie brauchen diesen Stand, um das Einfallstor zu finden, um Fragen von Versicherung oder Behörde zu beantworten und als Rückfallebene, falls bei der Bereinigung etwas kaputtgeht.

# im WordPress-Hauptverzeichnis ausführen; ~/beweise sollte außerhalb des Webroots liegen
mkdir -p ~/beweise
wp db export ~/beweise/db-infiziert-$(date +%F).sql
tar -czf ~/beweise/dateien-infiziert-$(date +%F).tar.gz .
sha256sum ~/beweise/*

Die sha256sum-Zeile hält Prüfsummen fest, damit Sie später belegen können, dass die Kopien unverändert sind. Laden Sie außerdem die Access- und Error-Logs herunter; viele Hoster bewahren sie nur begrenzte Zeit auf.

Bereinigen: Lücke schließen, Betroffenes ersetzen

Schritt 3: Das Einfallstor finden

Wer diesen Schritt überspringt, bereinigt dieselbe Website womöglich nächste Woche erneut. Typische Einfallstore sind verwundbare Plugins oder Themes, gestohlene oder mehrfach verwendete Passwörter und andere infizierte Websites im selben Hosting-Konto.

  • Verwundbare Plugins und Themes. Führen Sie wp plugin list --fields=name,status,version,update und wp theme list aus und prüfen Sie jedes veraltete Element in einer Schwachstellendatenbank. Tempo zählt: Laut dem Sicherheitsanbieter Patchstack lag bei stark ausgenutzten Schwachstellen im Jahr 2025 der gewichtete Median bis zur massenhaften Ausnutzung bei 5 Stunden (State of WordPress Security in 2026).
  • Gestohlene Zugangsdaten. Prüfen Sie, wann unbekannte Admin-Konten angelegt wurden, und suchen Sie nach Logins von unbekannten IP-Adressen.
  • Server-Logs. Suchen Sie nach POST-Anfragen an ungewöhnliche Dateien rund um den Zeitpunkt der ersten geänderten Datei.
grep '"POST ' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
find . -type f -name '*.php' -mtime -14 -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort

Ersetzen Sie access.log durch Ihre eigene Logdatei. Der erste Befehl zeigt die Pfade mit den meisten POST-Anfragen, der zweite die PHP-Dateien, die in den letzten 14 Tagen geändert wurden. Zeitstempel lassen sich fälschen, werten Sie sie also als Indizien. Finden Sie das Einfallstor nicht, gehen Sie vom schlimmsten Fall aus: Ersetzen Sie alle Plugins und Themes und ändern Sie sämtliche Zugangsdaten.

Schritt 4: Aus sauberen Quellen ersetzen

Ersetzen statt reparieren: Frische Kopien aus der offiziellen Quelle sind zuverlässiger, als verschleierten Code Zeile für Zeile zu lesen.

WordPress-Core. Löschen Sie wp-admin und wp-includes und laden Sie dieselbe Version neu herunter, damit auch dort versteckte Zusatzdateien verschwinden. Führen Sie das im WordPress-Hauptverzeichnis aus, also im Ordner mit der wp-load.php und wp-admin:

VER=$(wp core version)
[ -n "$VER" ] && [ -f wp-load.php ] && rm -rf wp-admin wp-includes && \
  wp core download --version="$VER" --skip-content --force
wp core verify-checksums --include-root

Die zweite Zeile löscht nur, wenn eine Version ermittelt wurde und Sie sich im WordPress-Hauptverzeichnis befinden. --include-root (ab WP-CLI 2.8) meldet zusätzlich unbekannte Dateien im Hauptverzeichnis.

Plugins und Themes. Ersetzen Sie jeden Plugin- und Theme-Ordner durch eine frische Kopie von WordPress.org oder aus dem Kundenbereich des Anbieters. Bei Plugins von WordPress.org überschreibt wp plugin install <slug> --force die installierte Kopie; wp plugin verify-checksums --all meldet anschließend geänderte und hinzugefügte Dateien. Löschen Sie alles, was Sie nicht nutzen, und greifen Sie nie zu „Nulled“-Versionen, also geknackten Kauf-Plugins.

Uploads. Uploads lassen sich nicht neu installieren, also prüfen Sie sie: Suchen Sie mit find wp-content/uploads -type f -iname '*.php' nach PHP-Dateien, vergleichen Sie den Ordner mit einem Backup von vor der Infektion und entfernen Sie alles, was keine Mediendatei ist.

Konfiguration und Drop-ins. Prüfen Sie wp-config.php, .htaccess, .user.ini, wp-content/mu-plugins und Drop-ins wie object-cache.php von Hand.

Datenbank. Malware steckt auch in Beiträgen, Optionen, Benutzern und geplanten Ereignissen:

wp user list --role=administrator --skip-plugins --skip-themes
wp option get siteurl && wp option get home
wp db search '<script' --all-tables
wp cron event list --fields=hook,next_run_relative,recurrence

wp db search findet auch legitime Skripte, etwa Analytics-Snippets. Löschen Sie unbekannte Administratoren, Spam-Beiträge und eingeschleuste Optionen erst, nachdem Sie jeden Eintrag geprüft haben.

Schritt 5: Alle Zugangsdaten und die Salts ändern

Gehen Sie davon aus, dass der Angreifer die wp-config.php und jedes auf dem Server gespeicherte Geheimnis gelesen hat. Ändern Sie:

  • jedes WordPress-Konto mit Administrator- oder Redakteursrechten, und widerrufen Sie Anwendungspasswörter, die Sie nicht kennen;
  • die Zugänge zum Kundenbereich des Hosters, zu SFTP/FTP und SSH, einschließlich hinterlegter SSH-Schlüssel;
  • das Datenbankpasswort, beim Hoster und gleichzeitig in der wp-config.php;
  • API-Schlüssel in Plugins: Zahlungsanbieter, SMTP, Backup-Speicher, CDN;
  • das E-Mail-Postfach, an das Passwort-Resets für Admins gehen.

Tauschen Sie anschließend die Authentifizierungsschlüssel und Salts in der wp-config.php aus. Laut WordPress-Entwicklerdokumentation macht das alle bestehenden Cookies ungültig. Alle Benutzer müssen sich neu anmelden, auch ein Angreifer mit gestohlener Sitzung.

wp config shuffle-salts

Nachsorge: härten, überwachen, dokumentieren

Schritt 6: Die Website härten

  • Aktualisieren Sie Core, Plugins und Themes; unser Ratgeber zu unsicheren WordPress-Plugins erklärt Prüfung und automatische Updates.
  • Ergänzen Sie define( 'DISALLOW_FILE_EDIT', true ); in der wp-config.php, um die Datei-Editoren im Dashboard zu entfernen. DISALLOW_FILE_MODS geht weiter und blockiert auch Updates über das Dashboard sowie automatische Updates. Setzen Sie es nur ein, wenn Sie auf anderem Weg aktualisieren.
  • Aktivieren Sie die Zwei-Faktor-Authentifizierung für alle Administratoren. Der WordPress-Core bringt sie nicht mit.
  • Unterbinden Sie die PHP-Ausführung im Upload-Ordner. Für Apache 2.4 in wp-content/uploads/.htaccess:
<FilesMatch "\.(?i:php|phtml|phar)$">
    Require all denied
</FilesMatch>

Bei nginx gehört diese Regel vor Ihren allgemeinen location ~ \.php$-Block, denn nginx verwendet die erste passende Regex-Location:

location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ { deny all; }

Testen Sie die Konfiguration vor dem Neuladen mit nginx -t und prüfen Sie danach, ob Bilder weiterhin laden.

Schritt 7: Überwachen und Überprüfung beantragen

Beobachten Sie die Website in den folgenden Wochen genau: Wiederholen Sie die Prüfsummen- und Upload-Prüfung, vergleichen Sie Dateilisten mit Ihrem sauberen Stand und lesen Sie die Access-Logs. Kommt die Infektion zurück, ist das Einfallstor noch offen. Spätestens dann ist ein Profi gefragt.

Security Audit & Compliance von secaudit.eu unterstützt Sie in dieser Phase: Das Plugin vergleicht Dateien mit einer gespeicherten Baseline, prüft die Core-Prüfsummen und sucht nach versteckten Admins, verdächtigen Cron-Events und verstecktem SEO-Spam. Es erkennt und meldet, bereinigt die Website aber nicht für Sie.

Hat Google Ihre Website markiert, öffnen Sie in der Search Console den Bericht Sicherheitsprobleme, sobald alles sauber ist, wählen Überprüfung anfordern und beschreiben, was Sie behoben haben. Laut Google dauert die Prüfung bei Phishing etwa einen Tag, bei Malware einige Tage und bei gehacktem Spam bis zu mehreren Wochen. Beantragen Sie die Entfernung von Mail-Sperrlisten erst, wenn kein Spam mehr verschickt wird.

Schritt 8: Datenpanne nach DSGVO prüfen und dokumentieren

Dieser Schritt steht am Ende der Liste, doch seine Frist läuft ab dem ersten Tag. Wurden Kundendaten, Benutzerkonten, Formulareinträge oder Bestellungen offengelegt, verändert oder waren sie nicht verfügbar, liegt in der Regel eine Datenpanne vor. Dann müssen Sie die zuständige Aufsichtsbehörde unverzüglich und möglichst binnen 72 Stunden, nachdem Ihnen die Verletzung bekannt wurde, informieren, es sei denn, sie führt voraussichtlich nicht zu einem Risiko (Art. 33 DSGVO). Besteht ein hohes Risiko für die Betroffenen, müssen Sie auch diese benachrichtigen (Art. 34).

Unabhängig von Ihrer Entscheidung dokumentieren Sie Sachverhalt, Auswirkungen und ergriffene Abhilfemaßnahmen: Art. 33 Abs. 5 verlangt das für jede Verletzung, auch für nicht gemeldete. Unser Ratgeber Datenpanne in 72 Stunden melden führt durch die Bewertung. Fällt Ihr Unternehmen unter das deutsche NIS2-Umsetzungsgesetz (NIS2UmsuCG), gelten für erhebliche Sicherheitsvorfälle zusätzlich Meldepflichten gegenüber dem BSI, beginnend mit einer ersten Meldung (Frühwarnung) binnen 24 Stunden.

Häufige Fragen

Kann ein Sicherheits-Plugin die Malware für mich entfernen?

Manche Tools bieten eine automatische Bereinigung bekannter Malware an. Keines kann Ihnen aber sicher sagen, wie der Angreifer hereinkam oder welche Passwörter er mitgenommen hat. Die Schritte 3, 5 und 6 bleiben also Ihre Aufgabe.

Löscht eine Neuinstallation des WordPress-Core meine Inhalte?

Nein. Beiträge, Seiten und Einstellungen liegen in der Datenbank, und mit --skip-content bleiben Ihre Plugins, Themes und Uploads unangetastet. Ersetzt werden nur die Core-Dateien in wp-admin, wp-includes und im Hauptverzeichnis; die wp-config.php bleibt erhalten.

Dieser Artikel ist eine allgemeine Information und keine Rechtsberatung.

Prüfen Sie Ihre eigene Website

Security Audit & Compliance ist das WordPress-Plugin von secaudit.eu: Es sucht nach Malware, verstecktem Spam, veränderten Kerndateien und unsicherem Code und ordnet seine Befunde DSGVO Art. 32, NIS2 Art. 21 und den OWASP Top 10 zu.

Sehen, was das Plugin prüft
Melike Görel

Melike Görel schreibt die secaudit.eu-Ratgeber zu WordPress-Sicherheit und EU-Compliance für die AngelForce OÜ, das Softwareunternehmen aus Tallinn hinter secaudit.eu.

Mit KI-Unterstützung erstellt und vor der Veröffentlichung auf Fakten geprüft. Dieser Artikel ist eine allgemeine Information und keine Rechtsberatung.