Beweise vor Bereinigung
Auf dem Server änderte sich nichts, bevor die Sicherung geprüft und die Befunde berichtet waren.
WordPress Incident Response
Eine polnische Rechts- und Buchhaltungskanzlei vermutete einen Hack ihrer WordPress-Websites. Wir haben alles gesichert, den Angriff rekonstruiert, den Spam entfernt und jeden Zugang des Angreifers geschlossen.
Die Kanzlei betreibt drei WordPress-Websites auf einem gemeinsamen Hosting-Konto: Unternehmensseite, Leistungsseite und Help Center. Niemand wusste, wie tief das Problem reicht, und niemand wollte eine Bereinigung, die alle Spuren vernichtet.
„Die Seiten sind gehackt, mindestens eine. Sichere sie, prüfe Dateien und Datenbanken. Ändere vorerst nichts.“
01
02
Jede Spam-Änderung kam aus einem echten Administratorkonto, nach einer normalen Anmeldung im ersten Versuch. Brute Force lief ebenfalls, aber das Passwort war bereits bekannt. Die beiden sauberen Websites hatten dieselben Administratoren.
Erster versteckter Link auf der Startseite.
Kredit-, Casino- und Krypto-Links in zwei weiteren Wellen.
Die Leistungsseite erhält einen Block mit litauischen Casino-Links.
Letzte Änderung der Startseite, von einer AWS-IP-Adresse.
Sicherung, Untersuchung und Bereinigung beginnen.
Dateien, Datenbanken, Zugriffslogs und alte Archive aller drei Websites, rund 10 GB, lokal kopiert, bevor die Analyse begann. Die Datenbanken byte-genau, damit polnische und kyrillische Texte exakt wiederherstellbar bleiben.
WordPress-Core Datei für Datei mit der offiziellen Version verglichen. Plugins, Themes, Uploads und mu-plugins auf Web-Shells geprüft, Datenbanken auf versteckte Blöcke und fremde Admins, Logs auf Anmeldungen und Änderungen. Zusätzlich geprüft, was Googlebot sieht.
30 Spam-Blöcke aus 11 Datenbankeinträgen entfernt, darunter 9 alte Revisionen, damit der Spam nicht per Wiederherstellung zurückkommt. Jede Änderung gegen den Hash des Eintrags geprüft, sichtbarer Text unverändert.
Öffentliche Archive gelöscht, ein gefälschtes Plugin und ein Backdoor-Ordner entfernt, xmlrpc.php gesperrt, Sicherheitsschlüssel rotiert, Datenbank-Passwörter geändert. Eine fremde E-Mail-Adresse für Passwort-Resets an 15 Stellen ersetzt.
Remote Code Execution in WPML (CVSS 9.9) und beliebiges Dateilesen in Smart Slider 3 Pro mit Einzeiler-Patches geschlossen. Ein abgestürzter Admin-Bereich repariert, Updates neu konfiguriert, 2FA für alle Admins und Redakteure verpflichtend.
03
Auf dem Server änderte sich nichts, bevor die Sicherung geprüft und die Befunde berichtet waren.
Jede Änderung wurde vorgeschlagen, vom Kunden freigegeben und erst dann umgesetzt.
Jede geänderte Datei und Tabelle wurde vorher gesichert und lässt sich in Minuten zurückdrehen.
Als der Kunde einen entfernten Dateimanager zurückwollte, war er in einer Minute wiederhergestellt.
04
Zwei alte Archive im öffentlichen Web-Root der Hauptseite lieferten jedem HTTP 200, der die URL kannte. Solche Archive enthalten meist wp-config.php mit Datenbank-Passwörtern. Beweisen lässt sich nicht, dass das Admin-Passwort so abfloss, aber es war der wahrscheinlichste Weg. Heute liefern sie 404.
Zugriff über SSH und cPanel UAPI. Gearbeitet wurde mit WP-CLI und direktem SQL über eine latin1-Verbindung, mit byte-genauer Ersetzung und MD5-Prüfung, damit mehrsprachige Inhalte intakt bleiben.
Der Spam war mit position:absolute und Versätzen wie left:-503011px versteckt, dazu weißer oder 8–12 px großer Text. Zwei Kopien waren als escapter HTML-Code eingefügt, Besucher sahen auf der Startseite rohen Code.
Patches: WPML rendert Shortcode-Inhalte des Sprachumschalters nicht mehr als Twig-Template (CVE-2024-6386). Der Export in Smart Slider 3 Pro verlangt jetzt Bearbeitungsrechte und ein Sicherheitstoken (CVE-2026-3098).
Die Zwei-Faktor-Anmeldung nutzt eine Authenticator-App (TOTP) mit Backup-Codes und 30 Tagen Übergangsfrist. Die Admins erhielten eine einseitige PDF-Anleitung mit Screenshots, QR-Codes unkenntlich gemacht.
Die Untersuchung führte ein KI-Coding-Agent per SSH unter menschlicher Kontrolle durch. Der Agent übernahm Log-Analyse, Dateivergleich und Datenbankarbeit. Menschen trafen jede Entscheidung und gaben jede Änderung frei.
Verdacht, dass Ihre WordPress-Website kompromittiert ist?