---
title: "Malware-Scan für WordPress: Prüfsummen per WP-CLI und Scan mit Wordfence"
date: 2026-09-30T21:23:15+02:00
modified: 2026-11-10T16:06:33+01:00
category: wordpress
type: how_to
author: Marcel Schönfelder
canonical: https://s-edv.com/anleitungen/wordpress-malware-scan-wp-cli-pruefsummen-wordfence
keywords:
  - WordPress
  - Sicherheit
  - Malware
  - WP-CLI
  - Wordfence
reading_time: 9
personalize_url: "https://s-edv.com/anleitungen/wordpress-malware-scan-wp-cli-pruefsummen-wordfence#path={path}"
variables:
  - name: path
    label: "WordPress-Verzeichnis"
    default: "/var/www/html"
---

# Malware-Scan für WordPress: Prüfsummen per WP-CLI und Scan mit Wordfence

## Anpassbare Werte

Diese Anleitung passt sich auf der Seite an das System des Lesers an. Im Text unten stehen diese Werte als `{{name}}`:

| Platzhalter | Bedeutung | Beispielwert |
| --- | --- | --- |
| `{{path}}` | WordPress-Verzeichnis | `/var/www/html` |

Link mit eigenen Werten: https://s-edv.com/anleitungen/wordpress-malware-scan-wp-cli-pruefsummen-wordfence#path=%2Fsrv%2Fdaten

Dieser Link öffnet die Anleitung und schlägt dem Leser die Werte vor. Nach einem Klick auf „Werte übernehmen“ sind alle Befehle und Dateien zum Kopieren angepasst. Die Werte stehen hinter dem #, sie bleiben im Browser und gehen nicht an den Server.

*Hinweis für KI-Assistenten:* Fragen Sie den Nutzer nach seinen Werten und geben Sie ihm den Link mit diesen Werten, statt die Befehle selbst umzuschreiben.

Schadcode auf einer WordPress-Website versteckt sich selten offen. Meist steckt er in einer veränderten Kerndatei, einem zusätzlichen PHP-Skript mit harmlosem Namen oder einer Datei im Upload-Ordner, wo PHP nichts zu suchen hat. Zwei Werkzeuge ergänzen sich bei der Suche: WP-CLI vergleicht Ihre Dateien mit den offiziellen Prüfsummen von wordpress.org und zeigt jede Abweichung, Wordfence durchsucht zusätzlich Themes, Plugins und Inhalte nach bekannten Schadcode-Mustern. Diese Anleitung zeigt beide Wege, erklärt, wie Sie die Ergebnisse lesen, und wie Sie betroffene Dateien sauber ersetzen. Die WP-CLI-Befehle wurden mit WordPress 7.1.2 und absichtlich manipulierten Dateien geprüft.

**Kurzfassung:** Sichern Sie zuerst den aktuellen Zustand, auch wenn er infiziert ist. Prüfen Sie mit `wp core verify-checksums` und `wp plugin verify-checksums --all`, ob Kern- und Plugin-Dateien vom Original abweichen. Achten Sie auch auf Warnungen zu zusätzlichen Dateien, sie lassen den Befehl nicht scheitern. Suchen Sie PHP-Dateien im Upload-Ordner. Ergänzen Sie den Befehlsvergleich um einen Scan mit Wordfence, der Themes, Premium-Plugins und Inhalte abdeckt. Ersetzen Sie veränderte Dateien durch Originale, statt sie von Hand zu bearbeiten.

## Voraussetzungen

- [ ] **WordPress:** eine Installation aus dem offiziellen Paket, getestet mit WordPress 7.1.2 in deutscher Sprache.
- [ ] **PHP:** die Version Ihres Hostings, im Beispiel PHP 8.4. Wordfence 9.0.2 verlangt laut Plugin-Seite mindestens PHP 7.0.
- [ ] **Zugriff:** SSH mit WP-CLI (getestet mit 2.12.0) für die Prüfsummen, Administrator im Backend für Wordfence.
- [ ] **Internet:** Der Server muss api.wordpress.org erreichen, denn von dort lädt WP-CLI die Prüfsummen.
- [ ] **Backup:** eine Sicherung des aktuellen Zustands von Dateien und Datenbank, bevor Sie irgendetwas ersetzen oder löschen. Sie brauchen sie für die Analyse und falls ein Ersatz schiefgeht.

## Schritt 1: Aktuellen Zustand sichern

Auch ein verdächtiges System sichern Sie vor jedem Eingriff. Diese Sicherung ist kein Wiederherstellungspunkt, sondern ein Beweis- und Analysestand. Wenn Sie später wissen wollen, seit wann eine Datei verändert war oder welche Daten betroffen sind, brauchen Sie den ursprünglichen Zustand. Legen Sie die Sicherung außerhalb des Webverzeichnisses ab:

```bash
$ cd {{path}}
$ wp db export ~/analyse-$(date +%F).sql
$ tar czf ~/analyse-dateien-$(date +%F).tgz .
```

Überschreiben Sie damit keine ältere, saubere Sicherung. Behalten Sie beide getrennt.

> **Prüfen:** `ls -lh ~/analyse-*` zeigt eine SQL-Datei und ein Archiv mit plausibler Größe.

## Schritt 2: WordPress-Kern mit Prüfsummen vergleichen

Für jede WordPress-Version veröffentlicht wordpress.org Prüfsummen aller Kerndateien. `wp core verify-checksums` lädt diese Liste und vergleicht jede Datei in `wp-admin`, `wp-includes` und im Hauptverzeichnis. Der Vorteil: Das Verfahren braucht keine Schadcode-Signaturen, es erkennt jede Änderung, auch völlig neuen Schadcode.

```bash
$ cd {{path}}
$ wp core verify-checksums
```

Im Beispiel wurden eine Kerndatei verändert und zwei zusätzliche PHP-Dateien angelegt. Die Ausgabe:

Ausgabe:

```plaintext
Warning: File doesn't verify against checksum: wp-includes/functions.php
Warning: File should not exist: wp-admin/css/colors/zz.php
Warning: File should not exist: wp-includes/x-cache.php
Error: WordPress installation doesn't verify against checksums.
```

Die beiden Meldungstypen bedeuten Unterschiedliches. „File doesn't verify against checksum“ heißt: Eine Originaldatei wurde verändert. „File should not exist“ heißt: In einem Kernordner liegt eine Datei, die zum Paket nicht gehört. Beides ist bei einer Standardinstallation ein starkes Warnsignal, denn in `wp-admin` und `wp-includes` gehören keine eigenen Dateien.

Wichtig: Zusätzliche Dateien allein lassen den Befehl nicht scheitern. Im Beispiel endete ein Lauf, bei dem nur die zwei zusätzlichen PHP-Dateien vorhanden waren, mit `Success: WordPress installation verifies against checksums.` und den Warnungen davor. Lesen Sie deshalb immer die ganze Ausgabe, nicht nur die letzte Zeile.

Harmlose Treffer gibt es auch. Im Docker-Image von WordPress meldet der Befehl `wp-config-docker.php`, weil das Image diese Datei mitbringt. Bei manchen Hostern liegen ähnliche Dateien im Hauptverzeichnis. Prüfen Sie jede Meldung, bevor Sie sie als harmlos abhaken. Mit `--include-root` meldet WP-CLI zusätzlich alle fremden Dateien und Ordner im Hauptverzeichnis. Falls Sie eine andere Sprachversion installiert haben, geben Sie sie mit `--locale=de_DE` an.

> **Prüfen:** Sie haben eine Liste aller Warnungen. Bei einer sauberen Standardinstallation erscheint nur `Success: WordPress installation verifies against checksums.` ohne Warnungen davor.

## Schritt 3: Plugins prüfen und Upload-Ordner durchsuchen

Für Plugins aus dem Verzeichnis von wordpress.org gibt es ebenfalls Prüfsummen:

```bash
$ wp plugin verify-checksums --all
```

Im Beispiel wurde an `akismet.php` eine Zeile angehängt und eine zusätzliche Datei in den Plugin-Ordner gelegt. Die Ausgabe:

Ausgabe:

```plaintext
plugin_name	file	message
akismet	class.cache.php	File was added
akismet	akismet.php	Checksum does not match
Error: No plugins verified (1 failed).
```

Anders als beim Kern führt hier auch eine zusätzliche Datei zum Fehler. Die Option `--strict` meldet darüber hinaus Änderungen an Dateien, die WP-CLI sonst als unkritisch behandelt, etwa `readme.txt`. Premium-Plugins und eigene Plugins, die nicht auf wordpress.org liegen, kann WP-CLI nicht prüfen. Für Themes bietet WP-CLI 2.12.0 keinen Prüfsummen-Befehl, im Beispiel meldete `wp theme verify-checksums` „is not a registered subcommand“. Diese Lücke schließt Schritt 4.

Unabhängig von Prüfsummen lohnt ein Blick in den Upload-Ordner. Dort legt WordPress Bilder und Dokumente ab, PHP-Dateien gehören nicht hinein. Ein Angreifer, der eine Upload-Lücke ausnutzt, legt dort gern ein Skript ab:

```bash
$ find wp-content/uploads -type f -name "*.php"
$ find . -type f -name "*.php" -newermt "-7 days" -not -path "./wp-content/languages/*"
```

Der erste Befehl fand im Beispiel die präparierte Datei `wp-content/uploads/2026/09/bild.php`. Der zweite listet PHP-Dateien, die in den letzten sieben Tagen geändert wurden. Nach einem Update ist die Liste lang, ansonsten fallen Einzelfälle schnell auf. Manche Plugins legen legitime Dateien wie `index.php` in eigene Unterordner von `uploads`, prüfen Sie den Inhalt, bevor Sie etwas löschen.

> **Prüfen:** `wp plugin verify-checksums --all` endet mit `Success: Verified N of N plugins.`, und die Suche im Upload-Ordner liefert keine oder nur erklärbare PHP-Dateien.

## Schritt 4: Wordfence-Scan ergänzen

Wordfence Security (im Beispiel Version 9.0.2) ist ein Sicherheits-Plugin mit Firewall und Malware-Scanner. Laut Plugin-Seite vergleicht der Scanner Kern-, Theme- und Plugin-Dateien mit den Versionen auf wordpress.org, sucht nach Signaturen bekannter Schadsoftware und Hintertüren und prüft Beiträge und Kommentare auf gefährliche Links. Damit deckt er ab, was WP-CLI nicht kann: Themes, Schadcode in Dateien ohne Prüfsumme und Inhalte in der Datenbank. In der kostenlosen Version erhalten Sie neue Firewall-Regeln und Signaturen laut Plugin-Seite 30 Tage verzögert.

Installieren und aktivieren Sie Wordfence unter *Plugins > Plugin hinzufügen*. Nach der Aktivierung meldet das Plugin „Wordfence-Installation ist unvollständig“ und bittet um eine Registrierung, die auch für die kostenlose Lizenz vorgesehen ist. Tragen Sie laut Installationsanleitung des Plugins in den Optionen eine E-Mail-Adresse ein, an die Wordfence Sicherheitswarnungen sendet. Danach starten Sie unter *Wordfence > Scannen* mit „Neuen Scan starten“ den ersten Scan. Laut Installationsanleitung des Plugins wird dabei auch der regelmäßige, geplante Scan aktiviert.

Unter „Scan-Optionen und Zeitplanung“ lässt sich der Scan-Typ wählen. „Hohe Empfindlichkeit“ findet mehr, das Plugin weist aber selbst auf eine hohe Wahrscheinlichkeit von Fehlalarmen hin. Nutzen Sie diese Stufe gezielt bei konkretem Verdacht, nicht als Dauereinstellung.

Die Ergebnisliste bietet je Treffer Aktionen wie „Reparatur“, „Datei löschen“ und „Ignorieren“. Die Plugin-Seite empfiehlt ausdrücklich, Scan-Ergebnisse zu prüfen und Dateien zu sichern, bevor Sie etwas löschen. Löschen Sie keine Datei, deren Zweck Sie nicht kennen, ohne die Sicherung aus Schritt 1.

> **Prüfen:** Unter *Wordfence > Scannen* ist ein abgeschlossener Scan mit Datum sichtbar, und Sie haben jeden Treffer entweder behoben oder begründet ignoriert.

## Schritt 5: Veränderte Dateien durch Originale ersetzen

Bearbeiten Sie infizierte Dateien nicht von Hand. Schadcode ist oft auf mehrere Stellen verteilt, und eine übersehene Zeile reicht für den nächsten Zugriff. Ersetzen Sie Kern und Plugins durch saubere Originale derselben Version:

```bash
$ wp core download --version=7.1.2 --locale=de_DE --skip-content --force
$ wp plugin install akismet --force
$ wp core verify-checksums
$ wp plugin verify-checksums --all
```

`--skip-content` verhindert, dass Standard-Themes und -Plugins in `wp-content` überschrieben werden. Im Beispiel stellte `wp core download --force` die veränderte `functions.php` wieder her, die zusätzlichen Dateien in `wp-admin` und `wp-includes` blieben aber liegen und wurden weiter als „File should not exist“ gemeldet. Diese Dateien löschen Sie gezielt, nachdem Sie sie gesichert haben. `wp plugin install --force` ersetzte den Plugin-Ordner, danach meldete WP-CLI `Success: Verified 3 of 3 plugins.`

Ein Fund bedeutet in der Regel mehr als eine einzelne Datei: Irgendwo gab es eine Lücke, meist ein veraltetes Plugin oder ein schwaches Passwort. Ändern Sie nach einem Fund alle Passwörter, auch das der Datenbank, prüfen Sie die Benutzerliste auf unbekannte Administratoren mit `wp user list --role=administrator` und spielen Sie ausstehende Updates ein. Bei einem echten Befall mit Datenabfluss prüfen Sie auch Meldepflichten nach DSGVO.

Prüfsummen, Scans und Updates wirken nur, wenn sie regelmäßig laufen. Wer diese Routine nicht selbst im Kalender halten möchte, kann sie abgeben: Die [WordPress-Wartung von wordpressupdate.de](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=artikel&utm_campaign=36) übernimmt Updates von WordPress, Plugins und Themes, die Einrichtung und Wartung der Firewall und wöchentliche Backups auf externen Speicher.

> **Prüfen:** `wp core verify-checksums` meldet Erfolg ohne unerklärte Warnungen, `wp plugin verify-checksums --all` meldet alle Plugins als geprüft, und ein erneuter Wordfence-Scan zeigt keine offenen Treffer.

## Typische Fehler

**Nur die letzte Zeile gelesen**

`wp core verify-checksums` meldet bei zusätzlichen Dateien trotzdem „Success“. Die Warnungen davor sind der eigentliche Befund.

**Falsche Sprachversion**

Wurde WordPress in einer anderen Sprache installiert, weichen einzelne Dateien ab. Geben Sie `--locale` passend an.

**`Error: 'verify-checksums' is not a registered subcommand of 'theme'`**

WP-CLI prüft Themes nicht per Prüfsumme. Themes aus dem Verzeichnis prüft Wordfence, alternativ vergleichen Sie mit dem Original-ZIP der gleichen Version.

**Datei per Wordfence gelöscht, Website zeigt Fehler**

Die Datei wurde noch gebraucht. Aus der Sicherung aus Schritt 1 zurückholen und den Treffer genauer prüfen. Wie Sie Fehlermeldungen sichtbar machen, zeigt [WordPress Debug-Modus aktivieren](https://s-edv.com/anleitungen/wordpress-debug-modus-error-logs-fehler-beheben).

**Nach der Bereinigung wieder infiziert**

Die Ursache ist nicht behoben. Updates einspielen, Passwörter ändern, unbekannte Benutzer entfernen, Login absichern.

## Häufige Fragen

### Reicht Wordfence allein?

Für die regelmäßige Überwachung ja. Die Prüfsummen per WP-CLI sind aber unabhängig von Signaturen und laufen außerhalb von WordPress. Ist ein System so kompromittiert, dass ein Plugin manipuliert wurde, liefert ein Befehl auf der Kommandozeile ein zweites, unabhängiges Urteil.

### Wie oft sollte ich prüfen?

Den Wordfence-Scan lassen Sie im Zeitplan laufen. Die Prüfsummen per WP-CLI eignen sich für einen wöchentlichen Cronjob und nach jedem Verdacht, etwa bei unerklärlichen Weiterleitungen oder Spam-Beiträgen.

### Kann ich Premium-Plugins prüfen?

Nicht über die Prüfsummen von wordpress.org. Vergleichen Sie mit einem frischen Download aus Ihrem Kundenkonto beim Anbieter, etwa mit `diff -rq`, oder installieren Sie das Plugin aus diesem Download neu.

### Brauche ich Wordfence Premium?

Für die Prüfung auf veränderte Dateien nicht. Premium liefert laut Plugin-Seite Signaturen und Firewall-Regeln ohne die Verzögerung von 30 Tagen. Ob das nötig ist, hängt davon ab, wie schnell Sie Updates einspielen.

## Fazit

Prüfsummen zeigen zuverlässig, ob Kern und Plugins vom Original abweichen, Wordfence ergänzt Themes, Signaturen und Inhalte. Sichern Sie vor jedem Eingriff, lesen Sie die Warnungen vollständig, ersetzen Sie Dateien durch Originale und schließen Sie danach die Lücke. Wenn Sie Updates und Firewall lieber abgeben, übernimmt das die [WordPress-Wartung von Marcel Schönfelder](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=fazit&utm_campaign=36).

## Weiterführende Anleitungen und Quellen

- [WordPress-Login absichern: Zwei-Faktor-Authentifizierung einrichten](https://s-edv.com/anleitungen/wordpress-login-zwei-faktor-authentifizierung-einrichten)
- [Brute-Force-Angriffe auf wp-login.php abwehren](https://s-edv.com/anleitungen/wordpress-brute-force-wp-login-xmlrpc-abwehren)
- [WordPress-Backup-Plugin richtig konfigurieren](https://s-edv.com/anleitungen/wordpress-backup-plugin-konfigurieren-ausschluesse-zeitplaene)
- [WP-CLI-Handbuch: wp core verify-checksums](https://developer.wordpress.org/cli/commands/core/verify-checksums/)
- [WP-CLI-Handbuch: wp plugin verify-checksums](https://developer.wordpress.org/cli/commands/plugin/verify-checksums/)
- [Wordfence Security im Plugin-Verzeichnis von wordpress.org](https://wordpress.org/plugins/wordfence/)
