PrestaShop gehackt: Das falsche Captcha im Shop ist ClickFix

Werkzeuge · 7 Min. Lesezeit

PrestaShop gehackt: Das falsche Captcha im Shop ist ClickFix

Ein Kunde schreibt Ihnen: Als er Ihren Shop geöffnet hat, erschien ein „Bestätigen Sie, dass Sie ein Mensch sind“, das ihn aufforderte, zwei Tasten zu drücken, etwas einzufügen und mit Enter zu bestätigen. Sie schauen nach und sehen nichts Ungewöhnliches. Wenn Ihnen das passiert, ist Ihr PrestaShop-Shop gehackt und mit ClickFix infiziert: Jemand hat einen Code eingeschleust, der Ihren Besuchern dieses falsche Captcha zeigt, damit sie selbst ein Schadprogramm installieren, meist eines, das Passwörter stiehlt.

Das verschwindet nicht von allein: Jemand ist in Ihren Shop eingedrungen und hat den Code dort hinterlassen. Er lässt sich entfernen, aber entscheidend ist, die Tür zu schließen, durch die er gekommen ist. Und Sie sind nicht allein: Am 3. September zählte Netskope mehr als 5.400 infizierte Websites dieser Kampagne, fast alle von kleinen Unternehmen. Die einzeln untersuchten liefen meist mit WordPress und manchmal mit PrestaShop.

Was ist ClickFix, und warum sehen Sie es nicht?

Die Seite verschwimmt hinter einem falschen Captcha, das dazu auffordert, die Windows-Taste und R zu drücken, einzufügen und Enter zu drücken. Eingefügt wird ein Befehl, den die Seite bereits unbemerkt kopiert hat, und wer ihn ausführt, installiert das Programm des Angreifers. Ein echtes Captcha verlangt nie, dass Sie auf Ihrem Computer etwas öffnen.

Dass Sie es nicht sehen, heißt nicht, dass es nicht da ist. Der Code in Ihrem Shop holt die Falle bei jedem Seitenaufruf von woanders, und der Angreifer entscheidet, was wem angezeigt wird, ohne Ihren Shop erneut anzufassen. Ziel sind Windows-Computer, und die Variante, die The Hacker News am 6. Oktober beschrieben hat, versteckt das Programm sogar schon im Browser des Besuchers, bevor sie ihn zu irgendetwas auffordert.

Wie erkenne ich, ob mein Shop betroffen ist?

  • Bitten Sie den Kunden um einen Screenshot und die Uhrzeit: Damit weiß Ihr Techniker, wonach er suchen muss.
  • Öffnen Sie den Shop an einem Windows-Computer im privaten Fenster, ohne im Backoffice angemeldet zu sein, und über eine andere Verbindung, etwa den Hotspot Ihres Handys.
  • Sehen Sie in der Search Console unter Sicherheit und manuelle Maßnahmen → Sicherheitsprobleme nach. Hat Google es schon erkannt, warnt Chrome Ihre Kunden womöglich bereits, dass Ihre Website gefährlich ist.

Der Screenshot des Kunden reicht, um loszulegen.

Was Sie heute tun sollten, der Reihe nach

  1. Erstellen Sie ein vollständiges Backup, Dateien und Datenbank, und bewahren Sie es außerhalb des Servers auf, bevor Sie irgendetwas anfassen. Wer aufräumt, braucht es.
  2. Versetzen Sie den Shop in den Wartungsmodus, unter Shop-Einstellungen → Allgemein → Wartung. Diese Seite lädt weder das JavaScript des Templates noch die Module im Seitenkopf, stoppt das falsche Captcha also fast immer, und Google erfährt, dass Sie nur vorübergehend geschlossen haben. Prüfen Sie das über eine andere Verbindung: Ihre IP sieht den Shop weiterhin.
  3. Ändern Sie alle Passwörter: Mitarbeiter im Backoffice, Hosting, FTP und Datenbank. Löschen Sie unter Erweiterte Einstellungen → Benutzerrechte jeden Mitarbeiter, den Sie nicht kennen, und beenden Sie unter Erweiterte Einstellungen → Security alle Backoffice-Sitzungen. Wiederholen Sie das, sobald der Shop sauber ist.
  4. Suchen Sie den Code und die Hintertür mit Ihrem Techniker: Wer eindringt, hinterlässt meist Dateien, um wiederzukommen. Wo Sie suchen müssen, steht weiter unten.
  5. Schließen Sie die Tür, durch die sie gekommen sind, sonst passiert es morgen wieder.
  6. Leeren Sie die Caches vor dem Wiedereröffnen: den von PrestaShop unter Erweiterte Einstellungen → Leistung und den von Cloudflare, falls Sie es nutzen. Der Shop liefert womöglich eine zusammengefasste Kopie des Template-JavaScripts aus, die den Code behält, auch wenn das Original bereinigt ist. Hatte Google Sie markiert, beantragen Sie eine Überprüfung.
  7. Hat ein Kunde den Befehl eingefügt, informieren Sie ihn, damit er einen Virenscan macht und die im Browser gespeicherten Passwörter ändert. Und falls der Eindringling die Daten Ihrer Kunden sehen konnte, sprechen Sie mit Ihrem Datenschutzverantwortlichen: Die DSGVO gibt Ihnen 72 Stunden für die Meldung.

Wo versteckt es sich in PrestaShop?

In der Datenbank, in einem Feld, das der Shop auf jeder Seite ausgibt, oder in den Dateien: Netskope fand es an legitime JavaScript-Dateien angehängt und in Ordnern, die eine echte Erweiterung imitieren. Der französische Händler, der am 5. Oktober im PrestaShop-Forum davon berichtete, fand mit seinem 1.7.8-Shop nichts in der Datenbank, und die Hintertüren lagen in Dateien in mehreren Ordnern.

  • Felder für eigenen Code. Viele Templates und Analyse-Module haben ein Feld, um Code in den Seitenkopf einzufügen; im Template Warehouse unter Design → IqitThemeEditor, Reiter für Codes. Jeder Code, dessen Herkunft Sie nicht kennen, fliegt raus, auch wenn er wie ein bekanntes Tool aussieht: Einer aus dieser Kampagne gab sich als Microsoft Clarity aus.
  • Seiten und Produktseiten. CMS-Seiten sowie Produkt- und Kategoriebeschreibungen akzeptieren HTML, und da passt ein Skript hinein.
  • Module. Unter Module → Modul-Verwaltung jedes Modul, das Sie nicht selbst installiert haben.
  • Einzelne Dateien. In einem sauberen PrestaShop enthalten die Ordner für Bilder, Uploads und Downloads kein anderes PHP als index.php. Eine Datei mehr, oder eine, deren Name mit einem Punkt beginnt und die Ihr FTP-Programm ausblendet, ist eine Hintertür.

Die Prüfung unter Erweiterte Einstellungen → Informationen → Liste der geänderten Dateien schaut nur, ob sich Core-Dateien geändert haben: nicht das Template, nicht die Module, nicht die Bilder und keine neu hinzugefügten Dateien. Eine leere Liste heißt nicht, dass der Shop sauber ist.

Wie sind sie hereingekommen, und wie schließe ich die Tür?

Netskope weiß noch nicht, wie diese Websites kompromittiert wurden. Bei PrestaShop sind die üblichen Türen ein Modul mit einer bekannten Lücke, das nie aktualisiert wurde, ein gestohlenes oder zu einfaches Backoffice-Passwort und „Nulled“-Module, also Bezahlmodule, die gratis von Piratenseiten geladen werden und oft schon mit eingebauter Hintertür kommen.

  • Aktualisieren Sie Ihre Module, zuerst die Facettensuche. Am 3. Juni warnte PrestaShop vor einer schweren Lücke in ps_facetedsearch, dem Modul für die Katalogfilter, das PrestaShop standardmäßig mitbringt: Jeder konnte ohne Konto Code auf Ihrem Server ausführen. Behoben ist sie in 4.0.4; hatten Sie eine ältere Version, gehen Sie davon aus, dass das der Weg hinein gewesen sein kann. Und löschen Sie Module, die Sie nicht nutzen.
  • Schützen Sie das Backoffice. Ein langes, eigenes Passwort pro Mitarbeiter, keine geteilten Konten und eine Backoffice-Adresse, die nicht /admin lautet. Einen zweiten Schritt mit Code auf dem Handy bringt PrestaShop nicht mit, ein Modul rüstet ihn nach.
  • Stellen Sie eine Firewall davor, etwa Cloudflare: Sie hält viele automatische Angriffe auf, bevor sie den Shop erreichen, wie wir in Anfragen pro IP begrenzen, ohne Google auszusperren gezeigt haben. PrestaShop selbst betont, dass das eine zusätzliche Schicht ist, kein Ersatz für Updates.
  • Verlassen Sie 1.7. PrestaShop hat die Pflege mit dem Erscheinen von 9.0 im Juni 2025 eingestellt. Das war die Version des Shops aus dem Forum.

Für Ihr technisches Team

Abfragen nur lesend; ersetzen Sie ps_ durch das Präfix des Shops. Warehouse speichert seine Code-Felder maskiert, deshalb auch nach <script suchen.

SELECT name, LEFT(value, 120)
  FROM ps_configuration
 WHERE value LIKE '%<script%'
    OR value LIKE '%&lt;script%'
    OR value LIKE '%eth_call%'
    OR name LIKE '%codes_js';
SELECT id_cms, id_lang
  FROM ps_cms_lang
 WHERE content LIKE '%<script%';
SELECT id_employee, email,
       id_profile, active,
       last_connection_date
  FROM ps_employee
 ORDER BY id_employee DESC;

In den Dateien, vom Stammverzeichnis des Shops aus:

find img upload download \
  -name '*.php' ! -name index.php
find . -name '.*.php'
find . -type f -mtime -30 \
  \( -name '*.php' -o -name '*.js' \) \
  -not -path './var/cache/*'
grep -rl -e eth_call -e prebsc \
  -e bsc-testnet -e claritydelivr \
  --include=*.js --include=*.php \
  --include=*.tpl .

Die Indikatoren der Kampagne stehen in der Liste von Netskope. Core und Module aus sauberen Paketen derselben Version neu aufzuspielen ist sicherer, als Datei für Datei zu löschen; danach var/cache und themes/*/assets/cache leeren. PrestaShop 9 bringt eine .htaccess mit, die PHP in img, upload, download, js, vendor und modules nicht ausführen lässt: prüfen, dass sie noch da sind, und unter Nginx, das sie nicht liest, diese Regeln in die Serverkonfiguration übernehmen.

Wann sollten Sie Hilfe holen?

Wenn Sie etwas gefunden haben und niemand es bereinigen kann, wenn es nach der Bereinigung zurückgekommen ist oder wenn Sie nicht wissen, wo Sie anfangen sollen. Das gehört zu unserem Support- und Wartungsservice: Wir bereinigen den Shop, finden heraus, wie sie hereingekommen sind, und schließen die Tür. Schicken Sie uns den Screenshot Ihres Kunden und Ihre PrestaShop-Version, und wir sehen es uns am selben oder am nächsten Tag an.

Erzählen Sie uns, was Ihr Kunde gesehen hat

So können wir Ihnen helfen

Alle Leistungen ansehen →

Weiterlesen

Dürfen wir Ihnen bei Ihrem Projekt helfen? Sprechen wir darüber

Erzähl uns, was dein Geschäft braucht

Ein Modul, eine App, ein Server, der Ärger macht, oder einfach eine Einschätzung. Die erste Beratung kostet nichts, und daraus wird ein Festangebot mit Preis und Termin.