Zum Hauptinhalt springen

Die Anzeichen einer kompromittierten WordPress-Site sind oft subtil und für eingeloggte Admins unsichtbar. Moderne Malware ist darauf ausgelegt, unentdeckt zu bleiben. Sie zeigt Spam oft nur Suchmaschinen-Bots oder Besuchern von Google, nicht eingeloggten Admins. Diese Anzeichen sollten aufhorchen lassen.

Sichtbare Symptome

  • Besucher werden auf fremde Seiten umgeleitet, oft nur mobil, nur beim ersten Besuch oder nur von Google kommend.
  • Google zeigt fremde Titel, japanische Zeichen oder Pharma-/Casino-Inhalte in den Suchergebnissen (site:example.ch prüfen).
  • Browser oder Google warnen vor der Seite („Diese Website wurde möglicherweise gehackt“).
  • Gefälschte CAPTCHA- oder „Browser aktualisieren“-Overlays (häufige Verbreitungswege für Infostealer).
  • Fremde Pop-ups, Werbung oder Skripte, die nicht vom Theme stammen.

Im Backend

  • Unbekannte Administratoren, auch solche, die in der Benutzerliste fehlen (Malware kann Benutzer aus der Liste ausblenden; per WP-CLI oder direkt in der Datenbank prüfen).
  • Unbekannte Plugins, insbesondere mit generischen Namen oder in mu-plugins/.
  • Geänderte Optionen: siteurl/home, admin_email, default_role.
  • Eigenes Passwort funktioniert plötzlich nicht mehr.

Im Dateisystem

  • PHP-Dateien in wp-content/uploads/
  • Abweichungen bei wp core verify-checksums und wp plugin verify-checksums --all
  • Verdächtige Muster: eval(base64_decode(, gzinflate(, str_rot13(, assert(, preg_replace mit /e, sehr lange Zeichenketten, Variablenfunktionen wie $f = 'ass'.'ert'
  • Dateien mit Namen, die Core-Dateien imitieren (wp-confg.php, wp-l0gin.php) oder unerwartete .htaccess-Dateien in Unterverzeichnissen
  • Kürzlich geänderte Dateien: find . -name '*.php' -mtime -7 (Zeitstempel können gefälscht sein)

In der Datenbank

  • <script>-Tags oder versteckte Links in wp_posts und wp_options (z. B. in Widget-Inhalten oder Theme-Optionen)
  • Unbekannte Cron-Events: wp cron event list
  • Verdächtige Einträge in wp_usermeta (Capabilities)
wp db search '<script' --all-tables --stats
wp db search 'eval(' --all-tables --stats
wp user list --role=administrator

Auf Server-Ebene

  • Hohe CPU-Last ohne Besucheranstieg (Krypto-Mining, Spamversand)
  • Hoster meldet Spam-Versand oder sperrt das Konto
  • Viele POST-Requests auf einzelne, unbekannte PHP-Dateien im Access-Log
  • Neue Cronjobs im System-Crontab, neue SSH-Keys in authorized_keys

Bei Verdacht

Nicht vorschnell Dateien löschen. Zuerst Beweise sichern (Kopie von Dateien, Datenbank und Logs), dann gemäss Malware-Bereinigung Schritt für Schritt vorgehen. Wer vorschnell aufräumt, vernichtet die Spuren, die zeigen, wie der Angreifer hereinkam.

Weiterführende Artikel

Quellen und Dokumentation