Contents
- 1 Fallstudie: Wie eine deutsche Unternehmens-Website gehackt wurde
Einleitung
- 1.1 Ausgangslage: Ein erfolgreicher Mittelständler – und ein vernachlässigter Server
- 1.2 Die ersten Anzeichen des Hacks
- 1.2.1 Forensik: Woher kam der Angriff?
- 1.2.2 Log-Analyse auf dem Cloud-Server
- 1.2.3 Manipulierte Dateien
- 1.2.4 Sofortmaßnahmen: Eindämmen, bevor man säubert
- 1.2.5 1. Server dicht machen
- 1.2.6 2. Website offline nehmen
- 1.2.7 Gründliche Bereinigung
- 1.2.8 WordPress-Core ersetzt
- 1.2.9 Theme komplett neu installiert
- 1.2.10 Plugins radikal neu aufgesetzt
- 1.2.11 Die Uploads-Bibliothek bereinigt
- 1.2.12 Datenbank bereinigt
- 1.2.13 Wieder online – aber erst nach Härtung des Servers
- 1.3 Systematische Server-Härtung
- 1.3.1 Betriebssystem aktualisiert
- 1.3.2 SSH komplett abgesichert
- 1.3.3 Firewall restriktiv konfiguriert
- 1.3.4 ModSecurity + OWASP-Ruleset aktiviert
- 1.3.5 PHP im Hardened Mode
- 1.3.6 Dateirechte neu gesetzt
- 1.3.7 Fail2ban endlich richtig eingestellt
- 1.3.8 Server-Monitoring aktiviert
- 1.3.9 Zusätzliche WordPress-Security-Maßnahmen
- 1.4 Der wichtigste Schritt: Die Wiederaufnahme durch Google
- 1.5 Was der Angriff letztlich verursacht hat
- 1.6 Lessons Learned – was die Firma heute besser macht
- 1.7 Fazit
Fallstudie: Wie eine deutsche Unternehmens-Website gehackt wurde
Einleitung
Cyberangriffe auf mittelständische deutsche Unternehmen passieren häufiger, als viele denken. Meist trifft es Firmen, die ihre Website zwar nutzen, aber selten aktiv pflegen. Genau so ein Fall landete bei mir: eine kompromittierte Unternehmensseite, versteckte Malware, ein angeschlagener Cloud-Server und ein Inhaber, der erst durch Google-Warnungen bemerkte, dass etwas nicht stimmte.
Im Folgenden präsentiere ich den gesamten Fall: Was genau passiert ist, wie der Angriff funktionierte, wie die kompromittierten Bereiche systematisch bereinigt wurden – und wie der Server am Ende so gehärtet wurde, dass der Kunde heute deutlich besser geschützt dasteht als zuvor.
Ausgangslage: Ein erfolgreicher Mittelständler – und ein vernachlässigter Server
Das Unternehmen betreibt seit Jahren eine dreisprachige WordPress-Website, hostet sie auf einem kleinen Cloud-Server (Ubuntu LTS) und betreibt dort auch ein internes Tool für die Mitarbeiter. Alles funktionierte jahrelang problemlos.
Wie so oft bestand das Problem nicht in Technikversagen, sondern im Nicht-Updaten:
— WordPress-Version nicht aktualisiert
— 2 Plugins mit Sicherheitslücken
— Theme seit 2021 ohne Patch
— PHP veraltet 7.4
— Admin-Login ohne 2FA und Login-Page publikum
— SFTP deaktiviert, stattdessen altes FTP offen
— Fail2ban nicht installiert
— Keine Malware-Scanner server-side
— Keine authentifizierten Cronjobs
— Cloud-Firewall nicht optimiert
Der Kunde bemerkte, dass die Seite Weiterleitungen auf dubiose Gewinnspiele und Glücksspielseiten enthielt. Kurz darauf stufte Google die Seite als „potenziell gefährlich“ ein. Der Traffic brach ein.
Die ersten Anzeichen des Hacks
Beim ersten Check waren die Symptome eindeutig:
— Zufällige Weiterleitungen nur auf mobilen Geräten
— Injected JavaScript am Ende von HTML-Ausgaben
— Unbekannte Dateien im Uploads-Verzeichnis
— Base64-verschlüsselte PHP-Dateien in den Plugin-Ordnern
— Zusätzliche Cronjobs
— „WP-Admin“ funktionierte, doch dort wurden verschleierte Nutzerkonten angelegt
— Undichte htaccess-Regeln, die nur bestimmte User-Agents betrafen
Das war kein simpler automatisierter Hack. Die Angreifer hatten sich:
— Zugriff verschafft
— Persistenz geschaffen
— Mehrere Backdoors platziert
— Unsichtbare Weiterleitungen nur für Googlebot-ähnliche User-Agents eingebaut
— Einen Remote-Command-Loader eingebunden
Die Kombination deutete auf eine typische SEO-Spam-Injection-Attacke hin, die oft über Plugin-Lücken oder gestohlene FTP-Zugangsdaten erfolgt.
Forensik: Woher kam der Angriff?
Bevor irgendetwas gelöscht wird, muss man die Quelle finden. Sonst kehrt der Hacker zurück.
Log-Analyse auf dem Cloud-Server
Die Apache- und Nginx-Logs zeigten verdächtige Requests:
— POST-Requests auf admin-ajax.php von russischen Proxy-Servern
— Zugriffe auf eine längst gelöschte Plugin-Datei
— Wiederholte XML-RPC-Anfragen
— Ein Login-Brute-Force-Angriff – aber mit Erfolg (schwaches Passwort)
Der Initialzugriff kam wahrscheinlich über ein Plugin (Revolution Slider – klassischer Einfallspunkt), bestätigt durch:
/wp-content/plugins/revslider/temp/update_extract/
Dort lag eine Datei, die der Kunde selbst nie kannte.
Manipulierte Dateien
Ich fand über 160 manipulierte Dateien, u.a.:
— functions.php des Themes
— wp-settings.php
— In Plugins mind. 1 versteckte Datei mit obfuskiertem Code
— Reihe von Dateien im Uploads-Verzeichnis, getarnt mit normalen Bildnamen (z. B. img_00923.php.jpg)
Das Ziel war klar: dauerhafte Kontrolle und Nutzung der Website für Weiterleitungs-Spam.
Sofortmaßnahmen: Eindämmen, bevor man säubert
Noch bevor die eigentliche Bereinigung beginnt, müssen zwei Dinge passieren:
1. Server dicht machen
— FTP sofort deaktiviert
— SSH-Port isoliert und Rate-Limits gesetzt
— Fail2ban richtig konfiguriert
— Cloud-Firewall auf „Default-Deny“ gestellt
— root-Login blockiert
— Neue SSH-Keys gesetzt
— Vorgeschaltete WAF aktiviert
2. Website offline nehmen
Das ersparte weiteren Schaden und verhindert, dass der Angreifer live weiterarbeiten konnte.
Gründliche Bereinigung
Hier beginnt die eigentliche Arbeit: Nicht blind Dateien löschen, sondern strukturiert alles aufrollen.
WordPress-Core ersetzt
Ich lade grundsätzlich eine frische WordPress-Version herunter, vergleiche via diff und ersetze alle kompromittierten Dateien. Denn sobald systemkritische Dateien manipuliert wurden, ist ein Austausch sicherer als jede manuelle Reparatur.
Theme komplett neu installiert
Da das Theme nicht mehr supported wurde, war der Code potenziell verwundbar. Ich exportierte Child-Theme-Anpassungen, löschte alles und spielte eine saubere Version ein.
Plugins radikal neu aufgesetzt
Alle Plugins wurden:
— vollständig gelöscht
— frisch aus dem offiziellen Repository geladen
— aktualisiert
— auf Sicherheitslücken geprüft
— Veraltete oder dubiose Plugins flogen komplett raus.
Die Uploads-Bibliothek bereinigt
Das ist der schlimmste Ort, weil Angreifer dort Backdoors gut tarnen.
Ich scannte jedes File:
— alles, was mit .php endet → sofort gelöscht
— Dateien > 1 MB mit komischem Hash → entfernt
— Doppelte Dateiendungen („.jpg.php“) → gelöscht
Datenbank bereinigt
SQL-Injection-Spuren waren vorhanden:
— 7 manipulierte wp_options-Einträge
— 3 gefälschte Admin-Konten
— Cronjobs mit eval-Code
Maßnamen:
— Malware-Optionen gelöscht
— Transients gesäubert
— Cron-Jobs resettet
— Tabellen indiziert
— defekte Einträge repariert
Wieder online – aber erst nach Härtung des Servers
Die Website war zu diesem Zeitpunkt wieder sauber, aber das reicht nicht. Ein sauberer WordPress-Ordner auf einem schlecht konfigurierten Server bedeutet nur, dass der Hacker irgendwann zurückkommt.
Deshalb folgte der Teil, der die meisten Dienstleister weglassen: den Server wirklich sicher zu machen.
Systematische Server-Härtung
Betriebssystem aktualisiert
Ich spielte alle Updates ein, inklusive Kernel-Patches. Veraltete Pakete wie PHP 7.4 wurden entfernt, stattdessen PHP 8.4 installiert.
SSH komplett abgesichert
— Login nur über SSH-Keys
— Passwort-Login deaktiviert
— root-User gesperrt
— Zugriff nur von definierten IP-Ranges
— Brute-Force-Limits verschärft
— Zeitsperren für Fehlversuche verlängert
Firewall restriktiv konfiguriert
Inbound erlaubt:
— 80
— 443
— 22 (aber nur mittels IP-Allowlist)
Outbound stark begrenzt, damit Malware im Ernstfall nicht „nach Hause telefonieren“ kann.
ModSecurity + OWASP-Ruleset aktiviert
Damit stoppt Exploits wie:
— SQL Injection
— XSS
— Directory Traversal
— RCE-Payloads
— automatisch blockieren.
PHP im Hardened Mode
-- disable_functions erweitert
-- open_basedir konfiguriert
-- allow_url_fopen deaktiviert
— Upload-Beschränkungen gesetzt
— Memory-Limits angepasst
— Mail-Versand auf authentifizierte Kanäle reduziert
Dateirechte neu gesetzt
Ein Klassiker: zu weite Rechte.
Ich habe alles nach dem Prinzip „so wenig wie nötig“ neu gesetzt:
— 640 für sensitive Dateien
— 750 für Verzeichnisse
— wp-config nach oben verschoben
— Ownership per user-separation
Fail2ban endlich richtig eingestellt
Bisher lief Fail2ban, aber blockte kaum. Jetzt:
— 12 Filter
— brute force für ssh, nginx, wp-login
— feste Ban-Times
— automatische Notification
Server-Monitoring aktiviert
Mit Alerting auf:
— unerwartete Dateiänderungen
— CPU-Spikes
— Cron-Manipulation
— ungewöhnlichen Ausgehend-Traffic
— Login-Versuche aus unbekannten Regionen
Zusätzliche WordPress-Security-Maßnahmen
Damit der Kunde auch langfristig Ruhe hat:
— 2FA für alle Admins
— Login-Rate-Limit
— Blockierung von XML-RPC
— REST-API-Härtung
— Script-Integrity-Check
— Malware-Scanner im Cron
— Plugin-Auto-Updates (nur Security-Updates)
— Backup-Rotation mit externem Storage
Der wichtigste Schritt: Die Wiederaufnahme durch Google
Nach der Bereinigung:
— Website in GSC neu gescannt
— „Schädliche Inhalte“ entfernt
— Neue Sitemap eingereicht
— 2-Tage später → Warnung verschwunden
— Rankings erholten sich schrittweise über 3–4 Wochen
Was der Angriff letztlich verursacht hat
— 40 % Traffic-Einbruch
— 3 verlorene Keywords auf Seite 1
— Abmahnungen durch Weiterleitungen auf Glücksspielseiten
— Downtime von zwei Tagen
— Mitarbeiter konnten internes Tool nicht nutzen
— Vertrauensverlust bei Kunden
Die gute Nachricht: Nach dem Cleanup und der Härtung läuft der Server heute schneller, stabiler und sicherer als je zuvor.
Lessons Learned – was die Firma heute besser macht
Der Kunde hält sich jetzt an ein paar einfache Regeln:
— Updates nicht ignorieren
— Kein FTP mehr
— Keine Admin-Accounts für Praktikanten
— Backups regelmäßig checken
— Server-Monitoring ernst nehmen
— Sensible Passwörter, nicht „Firma2020!“
— 2FA überall
Und – am wichtigsten – regelmäßige Security-Audits.
Fazit
Dieser Fall zeigt, was bei vielen Unternehmen Realität ist: Man nutzt eine Website als zentrales Marketing-Werkzeug, aber behandelt Security wie eine lästige Nebensache. Bis etwas passiert.
Der Angriff selbst war kein Meisterwerk – er war das Ergebnis monatelanger Sicherheitslücken. Doch die Bereinigung und vor allem die Server-Härtung haben das Unternehmen heute in eine Lage gebracht, in der es Angriffe deutlich besser abwehrt.
Es spricht sich niemand gerne öffentlich aus, wenn die eigene Firmenwebsite gehackt wurde. Aber intern hat dieser Fall die Prioritäten verändert: Sicherheit ist kein Luxus, sondern Grundvoraussetzung. Und wer sie ignoriert, bezahlt irgendwann dafür – mit Traffic, Umsatz oder Reputation.