Napadený e-shop na PrestaShopu: falešné „ověřte, že jste člověk“ je ClickFix

Nástroje · 7 min čtení

Napadený e-shop na PrestaShopu: falešné „ověřte, že jste člověk“ je ClickFix

Píše vám zákazník: když otevřel váš e-shop, okno „ověřte, že jste člověk“ ho požádalo, ať stiskne dvě klávesy, něco vloží a dá Enter. Podíváte se a nic divného nevidíte. Pokud se vám to stalo, váš e-shop na PrestaShopu byl napaden pomocí ClickFix: někdo do něj podstrčil kousek kódu, který vašim návštěvníkům ukazuje falešnou captchu, aby si sami nainstalovali škodlivý program, obvykle takový, který krade hesla.

Samo to nezmizí: někdo se do vašeho e-shopu dostal a nechal to tam. Dá se to vyčistit, ale doopravdy záleží na tom, zavřít dveře, kterými přišel. A nejste sami: 3. září Netskope napočítal přes 5 400 napadených webů v této kampani, téměř všechny malé firmy. Ty, které zkoumali jeden po druhém, byly většinou na WordPressu a někdy na PrestaShopu.

Co je ClickFix a proč ho nevidíte?

Stránka se za falešnou captchou rozmaže a ta vás požádá, ať stisknete klávesu Windows a R, vložíte a stisknete Enter. To, co se vloží, je příkaz, který stránka předtím bez upozornění zkopírovala, a jeho spuštění nainstaluje program útočníka. Skutečná captcha vás nikdy nežádá, abyste na počítači cokoli otevírali.

To, že to nevidíte, neznamená, že to tam není. Kód ve vašem e-shopu si past při každém otevření stránky stahuje odjinud a útočník rozhoduje, co a komu se ukáže, aniž by na váš e-shop znovu sáhl. Míří na počítače s Windows a varianta, kterou 6. října popsal The Hacker News, dokonce schová program do prohlížeče návštěvníka dřív, než ho o cokoli požádá.

Jak poznám, jestli to můj e-shop má?

  • Požádejte zákazníka o snímek obrazovky a čas, kdy se to objevilo: s tím váš vývojář ví, co hledat.
  • Otevřete e-shop z počítače s Windows, v anonymním okně, bez přihlášení do administrace a z jiného připojení, třeba přes hotspot v mobilu.
  • Zkontrolujte Search Console v části Zabezpečení a ruční akce → Problémy se zabezpečením. Pokud to Google už zjistil, Chrome možná vaše zákazníky varuje, že je váš web nebezpečný.

Na začátek stačí snímek obrazovky od zákazníka.

Co udělat ještě dnes a v jakém pořadí?

  1. Udělejte úplnou zálohu, souborů i databáze, a uložte ji mimo server dřív, než na cokoli sáhnete. Ten, kdo bude čistit, ji bude potřebovat.
  2. Přepněte e-shop do režimu údržby v Nastavení eshopu → Hlavní → Údržba obchodu. Ta stránka nenačítá JavaScript šablony ani moduly v hlavičce, takže falešnou captchu skoro vždycky odřízne, a Googlu řekne, že máte jen dočasně zavřeno. Ověřte si to z jiného připojení: vaše IP může e-shop pořád vidět.
  3. Změňte všechna hesla: zaměstnanců v administraci, hostingu, FTP i databáze. V Nástroje → Zaměstnanci smažte každého zaměstnance, kterého neznáte, a v Nástroje → Zabezpečení ukončete všechny relace administrace. Udělejte to znovu, až bude e-shop čistý.
  4. Najděte kód i zadní vrátka se svým vývojářem: kdo se dostane dovnitř, obvykle po sobě nechá soubory, aby se mohl vrátit. Kde hledat, najdete níže.
  5. Zavřete dveře, kterými přišli, jinak se to zítra stane znovu.
  6. Před znovuotevřením vymažte mezipaměti: tu PrestaShopu v Nástroje → Výkon a Cloudflare, pokud ho používáte. E-shop může servírovat sloučenou kopii JavaScriptu šablony, která kód drží i po vyčištění originálu. Pokud vás Google označil, požádejte o kontrolu.
  7. Pokud zákazník příkaz vložil, řekněte mu, ať si spustí antivirovou kontrolu a změní hesla uložená v prohlížeči. A pokud útočník mohl vidět data vašich zákazníků, promluvte si s tím, kdo u vás řeší ochranu osobních údajů: GDPR vám dává 72 hodin na ohlášení.

Kde se v PrestaShopu skrývá?

V databázi, v poli, které e-shop vypisuje na každé stránce, nebo v souborech: Netskope ho našel připojený k legitimním souborům JavaScriptu a ve složkách, které napodobují skutečný plugin. Francouzský obchodník, který to 5. října popsal na fóru PrestaShopu, s e-shopem na verzi 1.7.8, v databázi nenašel nic a zadní vrátka byla v souborech v několika složkách.

  • Pole pro vlastní kód. Spousta šablon a analytických modulů má pole pro vložení kódu do hlavičky stránky; v šabloně Warehouse je v Vzhled → IqitThemeEditor, na záložce s kódy. Každý kód, který neumíte vysvětlit, pryč, i když vypadá jako známý nástroj: jeden použitý v této kampani se vydával za Microsoft Clarity.
  • Stránky a detaily produktů. Stránky CMS a popisy produktů a kategorií přijímají HTML a skript se tam vejde.
  • Moduly. V Moduly → Správce modulů každý modul, který jste neinstalovali sami.
  • Zatoulané soubory. V čistém PrestaShopu neobsahují složky s obrázky, nahranými soubory a soubory ke stažení žádné PHP kromě index.php. Jeden navíc, nebo takový, jehož název začíná tečkou a který váš FTP program skrývá, jsou zadní vrátka.

Kontrola v Nástroje → Informace → Seznam změněných souborů sleduje jen to, jestli se změnily soubory jádra: ne šablonu, ne moduly, ne obrázky a ne přidané soubory. Prázdný seznam neznamená čistý e-shop.

Jak se dostali dovnitř a jak zavřít dveře?

Netskope zatím neví, jak byly ty weby napadeny. U PrestaShopu jsou obvyklé dveře modul se známou chybou, který nikdo neaktualizoval, ukradené nebo snadné heslo do administrace a „nulled“ moduly, tedy placené moduly stažené zdarma z pirátských webů, které často přicházejí se zadními vrátky už nainstalovanými.

  • Aktualizujte moduly, začněte fasetovým vyhledáváním. 3. června PrestaShop varoval před vážnou chybou v ps_facetedsearch, modulu filtrů katalogu, který je součástí PrestaShopu: kdokoli i bez účtu mohl na vašem serveru spustit kód. Opravené je to ve verzi 4.0.4; pokud jste měli starší, počítejte s tím, že to mohla být cesta dovnitř. A odeberte moduly, které nepoužíváte.
  • Chraňte administraci. Dlouhé a pro každého zaměstnance jiné heslo, žádné sdílené účty a adresa administrace, která není /admin. Druhý krok s kódem v telefonu není součástí základu, ale přidá ho modul.
  • Dejte před e-shop firewall, například Cloudflare: zastaví spoustu automatických útoků dřív, než se dostanou k e-shopu, jak jsme vysvětlili v článku jak omezit počet požadavků na IP bez blokování Googlu. Sám PrestaShop upozorňuje, že je to vrstva navíc, ne náhrada za aktualizace.
  • Odejděte z verze 1.7. PrestaShop ji přestal udržovat, když vydal verzi 9.0, v červnu 2025. Právě na ní běžel e-shop z fóra.

Pro váš technický tým

Dotazy jen pro čtení; nahraďte ps_ prefixem e-shopu. Warehouse ukládá svá pole s kódem escapovaná, takže hledejte i <script.

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;

V souborech, z kořenové složky e-shopu:

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 .

Indikátory kampaně jsou v seznamu Netskope. Přeinstalovat jádro a moduly z čistých balíčků stejné verze je bezpečnější než mazat soubor po souboru; potom vymažte var/cache a themes/*/assets/cache. PrestaShop 9 obsahuje soubory .htaccess, které blokují spouštění PHP v img, upload, download, js, vendor a modules: ověřte, že tam pořád jsou, a na Nginxu, který je nečte, přeneste ta pravidla do konfigurace serveru.

Kdy požádat o pomoc?

Pokud jste něco našli a nemáte, kdo by to vyčistil, pokud se to po vyčištění vrátilo, nebo pokud nevíte, kde začít. Je to součást naší služby technické podpory a údržby: vyčistíme e-shop, zjistíme, jak se dostali dovnitř, a zavřeme dveře. Pošlete nám snímek obrazovky od zákazníka a svou verzi PrestaShopu a podíváme se na to ještě ten den nebo další.

Napište nám, co váš zákazník viděl

S čím vám můžeme pomoci

Zobrazit všechny služby →

Číst dál

Pomůžeme vám s vaším projektem? Pojďme si promluvit

Řekněte nám, co vaše firma potřebuje

Modul, aplikace, server, který vám dělá potíže, nebo něco naléhavého. Odpovíme do 24 hodin s pevnou nabídkou, cenou a termínem.