Die sichtbaren Dateien zu löschen ist der Teil, den alle machen, und für sich genommen scheitert er: Der Weg hinein steht noch offen, und die Website ist binnen Stunden wieder infiziert. Die Reihenfolge unten schließt erst die Tür und räumt dann das Zimmer auf.

1. Zuerst vom Netz nehmen

Eine übernommene Website verschickt Spam oder liefert Ihren Besuchern Schadsoftware aus, während Sie arbeiten. Stoppen Sie das vor allem anderen.

# a holding page that returns 503, so search engines come back later
# rather than dropping your pages

2. Alles kopieren, bevor Sie etwas ändern

Legen Sie eine vollständige Kopie an — Dateien und Datenbank —, bevor Sie irgendetwas löschen. Sie ist Beweismaterial: Sie sagt Ihnen, wie man hereinkam, und ohne sie raten Sie.

3. Den Weg hinein finden

Fast immer einer von vieren. Suchen Sie im Zugriffsprotokoll rund um den Zeitstempel nach dem ersten Auftreten einer veränderten Datei.

  • Ein veraltetes Plugin oder Theme — mit Abstand der häufigste Fall.
  • Ein wiederverwendetes Passwort — anderswo geleakt und hier ausprobiert.
  • Ein Upload-Verzeichnis, das PHP ausführt — eine als Bild hochgeladene und dann ausgeführte Datei.
  • Gestohlene FTP- oder SSH-Zugangsdaten, oft von einem infizierten Arbeitsplatzrechner.
find . -type f -mtime -7 -name "*.php" | head -50
grep -rl "eval(base64_decode" . | head

4. Aus einer bekannt guten Kopie säubern, nicht durch Editieren

Ersetzen Sie Kern, Plugins und Themes durch frische Downloads. Behalten Sie nur Ihre eigenen Inhalte und Uploads — und sehen Sie diese durch: Eine PHP-Datei in einem Upload-Ordner ist nie legitim.

find wp-content/uploads -name "*.php" -o -name "*.phtml"

5. Der Schritt, den fast alle auslassen

Ändern Sie jede Zugangsinformation, die der übernommene Server sehen konnte, und machen Sie jede Sitzung ungültig. Lassen Sie das aus, spaziert der Angreifer mit dem Passwort wieder herein, das er längst hat.

  • Jedes Admin-Konto des CMS.
  • Der Datenbankbenutzer und die Konfigurationsdatei, die ihn enthält.
  • FTP-, SFTP- und SSH-Schlüssel.
  • API-Schlüssel und Zahlungsdaten, die auf dem Server liegen.
  • WordPress: Ändern Sie die Salts in wp-config.php — das meldet alle ab, auch die Angreifer.

6. Dann die Tür schließen

  1. Alles aktualisieren — Kern, Plugins, Themes, PHP.
  2. Entfernen, was Sie nicht nutzen — Ein deaktiviertes Plugin ist immer noch eine Datei auf der Platte, die erreichbar ist.
  3. Uploads am Ausführen hindern — Kein PHP-Handler im Upload-Verzeichnis.
  4. Zwei-Faktor für das Panel und das CMS —
Bitten Sie Ihren Hoster um das Zugriffsprotokoll des Tages, an dem es begann. Die Anfrage, die die erste Datei abgelegt hat, steht darin — und sie benennt die Lücke in einer Zeile.