PHP-Webshell über Ninja Forms: Was Angreifer auf deiner WordPress-Website hinterlassen

WordPress Frühjahrsputz 2026

So machst du deine Website wieder schnell, sicher und zuverlässig

50.000 WordPress-Websites betroffen. Das klingt abstrakt, bis du merkst: Deine könnte eine davon sein.

Anfang April 2026 hat Wordfence eine kritische Sicherheitslücke im Plugin Ninja Forms File Upload veröffentlicht. Die Lücke erlaubt es Angreifern, beliebige Dateien auf deinen Server zu laden. Was dann passiert, habe ich mir genauer angeschaut. Der Code, der dabei auf kompromittierten Websites landet, ist eine klassische PHP-Webshell. Unauffällig, effektiv und schwer zu finden.

Was ist eine PHP-Webshell überhaupt?

Eine Webshell ist eine Datei, die auf deinem Server liegt und Befehle ausführt. Wer Zugriff auf diese Datei hat, kann deinen Server fernsteuern. Dateien lesen, Passwörter auslesen, weitere Schadcode nachladen, Besucher umleiten.

Das Beunruhigende: Die Website läuft dabei ganz normal weiter. Deine Besucher merken nichts.

Du merkst nichts. Genau das ist das Ziel.

Was der Code konkret macht

Der Schadcode, der über die Ninja-Forms-Lücke hochgeladen wird, hat drei Stufen.


Stufe 1: Passwortschutz
Die Webshell reagiert nicht auf jeden Aufruf. Sie prüft, ob der Angreifer einen geheimen Schlüssel mitschickt, entweder als HTTP-Header oder als URL-Parameter. Nur wer den Wert wp_c9f8e7d6c5b4a kennt, kommt durch. Das schützt die Hintertür vor Scannern, zufälligen Besuchern und anderen Angreifern.

Stufe 2: Tarnung als 404-Fehler
Kommt die falsche Anfrage, antwortet die Datei mit einer normalen „Seite nicht gefunden“-Meldung. Für Sicherheitsscanner und Suchmaschinen sieht es aus, als gäbe es die Datei gar nicht. In Wirklichkeit wartet sie nur.

Stufe 3: Komplette Kontrolle über den Server
Kommt die richtige Anfrage, führt die Shell beliebige Betriebssystembefehle aus. Was auch immer der Angreifer eingibt, wird auf deinem Server ausgeführt. Mit den Rechten deines Webservers.

Die Variante, die besonders clever ist

Mir liegen drei Varianten desselben Codes vor. Zwei davon sind im Klartext. Eine ist zusätzlich mit Base64 kodiert, das ist eine einfache Verschleierung, die viele Sicherheitsscanner umgeht, weil verdächtige Begriffe darin nicht mehr lesbar sind.

Die dritte Variante hat aber einen Trick, der mich in der Praxis immer wieder überrascht: Sie tarnt sich als echte WordPress-Datei. Oben im Code steht: WordPress Cron Handler @package WordPress.

Das klingt wie eine legitime Systemdatei. Wer schnell drüberguckt, sieht nichts Verdächtiges.

Dann kommt die eigentliche Raffinesse. Echte WordPress-Dateien prüfen am Anfang: „Bin ich über WordPress geladen worden? Wenn nicht, brich ab.

Das ist ein bekanntes Sicherheitsmerkmal, nach dem viele Scanner suchen.

Diese Webshell macht genau das Gegenteil. Sie prüft: „Bin ich direkt aufgerufen worden und nicht über WordPress?“ Wenn ja, läuft der Schadcode. Wird die Datei zufällig über WordPress eingebunden, verhält sie sich unauffällig.


Was ich in der Praxis sehe: Genau diese invertierten Prüfungen werden bei oberflächlichen Analysen übersehen.

 

Bist du von der Ninja Forms Sicherheitslücke betroffen?

Wenn du das Plugin Ninja Forms File Upload nutzt und es nicht in den letzten Tagen aktualisiert hast, solltest du jetzt nachschauen.

Konkrete Hinweise auf einen erfolgreichen Angriff:

Schau in deinem wp-content/uploads-Ordner nach PHP-Dateien. Dort gehört keine einzige .php-Datei hin. Nie. Wenn du dort welche findest, ist das ein klarer Hinweis.

Prüfe deine Server-Logs auf Anfragen mit dem Parameter ?k=wp_c9f8e7d6c5b4a oder dem Header X-WP-Nonce: wp_c9f8e7d6c5b4a.

Wenn du diesen Schlüssel in deinen Logs siehst, hat jemand die Hintertür bereits benutzt.

Achte außerdem auf PHP-Dateien mit ungewöhnlichen Namen, die WordPress-Core imitieren, zum Beispiel wp-cron-handler.php oder ähnliches an Stellen, wo sie nicht hingehören.

Was jetzt zu tun ist

Sofort: Das Plugin aktualisieren oder deaktivieren und löschen. Damit schließt du die Lücke, über die die Datei hochgeladen wurde.

Aber Vorsicht: Das Update entfernt keine Dateien, die bereits hochgeladen wurden. Die Hintertür bleibt, auch wenn die Lücke geschlossen ist.

Wenn du Hinweise auf eine Kompromittierung gefunden hast, reicht ein Update nicht:
Spiel ein sauberes Backup ein, eines, das nachweislich vor dem Angriff erstellt wurde. Ändere danach alle Passwörter: WordPress-Admin, FTP, Datenbank, Hosting-Account. Konfiguriere deinen Server so, dass PHP-Dateien im Uploads-Ordner grundsätzlich nicht ausgeführt werden können.

Das ist eine kleine Einstellung mit großer Wirkung. Dieser Angriff wäre damit ins Leere gelaufen.
Wenn du dir bei der Bereinigung unsicher bist, lass es von jemandem machen, der das regelmäßig tut.

Eine saubere Bereinigung kostet weniger als ein zweiter Angriff, weil beim ersten eine Datei übersehen wurde.

Fazit

Diese Webshell ist kein hochkomplexer Angriff. Sie ist Standardware, die automatisiert auf Tausende Websites ausgerollt wird, sobald eine Lücke bekannt wird. Genau deswegen ist sie gefährlich.

Wer Plugins zeitnah aktualisiert, regelmäßige Backups macht und PHP im Uploads-Ordner sperrt, ist gegen den Großteil dieser Angriffe gut aufgestellt.

Die Ninja-Forms-Lücke ist eine gute Erinnerung, diese drei Punkte einmal zu prüfen.

Weitere Beiträge

Bild von Robin Herold

Robin Herold

Ich löse dein WordPress Problem und schreibe hier über Tipps und Tricks rund um WordPress, Sicherheit und mehr!

WordPress Notfall?

Deine Website wurde gehackt oder sie ist nicht mehr erreichbar?
Kontakt

Kommentare, Wünsche oder Feedback?

Du möchtest, dass ich über ein bestimmtes Thema schreibe oder mir Feedback zu einem bestehenden Beitrag schicken?

Feedback Blog