Zhakowany sklep PrestaShop: fałszywa captcha „jesteś człowiekiem” to ClickFix

Narzędzia · 7 min czytania

Zhakowany sklep PrestaShop: fałszywa captcha „jesteś człowiekiem” to ClickFix

Klient pisze do Ciebie: kiedy otworzył Twój sklep, okienko „potwierdź, że jesteś człowiekiem” kazało mu nacisnąć dwa klawisze, coś wkleić i nacisnąć Enter. Sprawdzasz i nie widzisz nic złego. Jeśli Ci się to przydarzyło, Twój sklep PrestaShop został zhakowany przez ClickFix: ktoś wstawił do niego kawałek kodu, który pokazuje odwiedzającym fałszywą captchę, żeby sami zainstalowali złośliwy program, zwykle taki, który kradnie hasła.

Samo nie zniknie: ktoś dostał się do Twojego sklepu i to tam zostawił. Da się to wyczyścić, ale naprawdę ważne jest zamknięcie drzwi, którymi wszedł. I nie jesteś sam: 3 września Netskope naliczył ponad 5400 zainfekowanych stron w tej kampanii, prawie wszystkie należące do małych firm. Te, które zbadano jedna po drugiej, to głównie WordPress, a czasem PrestaShop.

Czym jest ClickFix i dlaczego go nie widzisz?

Strona rozmywa się za fałszywą captchą, która prosi o naciśnięcie klawisza Windows i R, wklejenie i naciśnięcie Enter. To, co się wkleja, to polecenie, które strona już wcześniej skopiowała, nikomu nic nie mówiąc, a jego uruchomienie instaluje program atakującego. Prawdziwa captcha nigdy nie prosi o otwarcie czegokolwiek na Twoim komputerze.

To, że tego nie widzisz, nie znaczy, że tego nie ma. Kod w Twoim sklepie przy każdym otwarciu strony pobiera pułapkę z innego miejsca, a atakujący decyduje, co pokazać i komu, nie dotykając więcej Twojego sklepu. Celuje w komputery z Windows, a wariant, który The Hacker News opisał 6 października, ukrywa program w przeglądarce odwiedzającego, zanim w ogóle o cokolwiek poprosi.

Jak sprawdzić, czy mój sklep to ma?

  • Poproś klienta o zrzut ekranu i godzinę, o której to się pojawiło: z tym Twój programista wie, czego szukać.
  • Otwórz sklep z komputera z Windows, w oknie prywatnym, bez logowania do panelu i z innego łącza, na przykład z hotspotu w telefonie.
  • Sprawdź Search Console, w Bezpieczeństwo i ręczne działania → Problemy dotyczące bezpieczeństwa. Jeśli Google już to wykrył, Chrome może ostrzegać Twoich klientów, że Twoja strona jest niebezpieczna.

Zrzut ekranu od klienta wystarczy, żeby zacząć.

Co zrobić dziś i w jakiej kolejności?

  1. Zrób pełną kopię zapasową, plików i bazy danych, i trzymaj ją poza serwerem, zanim czegokolwiek dotkniesz. Ten, kto będzie sprzątać, będzie jej potrzebował.
  2. Włącz w sklepie tryb przerwy technicznej, w Preferencje → Ogólny → Przerwa techniczna. Ta strona nie ładuje ani JavaScriptu szablonu, ani modułów z nagłówka, więc prawie zawsze odcina fałszywą captchę, a Google'owi mówi, że jesteś zamknięty tylko na chwilę. Sprawdź z innego łącza: Twój adres IP nadal widzi sklep.
  3. Zmień wszystkie hasła: pracowników panelu, hostingu, FTP i bazy danych. W Zaawansowane → Zespół usuń każdego pracownika, którego nie rozpoznajesz, a w Zaawansowane → Bezpieczeństwo zamknij wszystkie sesje panelu. Zrób to jeszcze raz, gdy sklep będzie czysty.
  4. Znajdź kod i tylne drzwi razem ze swoim programistą: kto się włamuje, zwykle zostawia pliki, żeby móc wrócić. Gdzie szukać, piszemy niżej.
  5. Zamknij drzwi, którymi wszedł, bo inaczej jutro stanie się to znowu.
  6. Wyczyść pamięć podręczną przed ponownym otwarciem: PrestaShop, w Zaawansowane → Wydajność, i Cloudflare, jeśli z niego korzystasz. Sklep może serwować połączoną kopię JavaScriptu szablonu, która zachowuje kod nawet po wyczyszczeniu oryginału. Jeśli Google Cię oznaczył, poproś o ponowne sprawdzenie.
  7. Jeśli klient wkleił polecenie, powiedz mu, żeby przeskanował komputer antywirusem i zmienił hasła zapisane w przeglądarce. A jeśli intruz mógł zobaczyć dane Twoich klientów, porozmawiaj z osobą, która zajmuje się u Ciebie ochroną danych: RODO daje Ci 72 godziny na zgłoszenie.

Gdzie ukrywa się w PrestaShop?

W bazie danych, w polu, które sklep drukuje na każdej stronie, albo w plikach: Netskope znalazł go doklejonego do legalnych plików JavaScript i w folderach udających prawdziwą wtyczkę. Francuski sprzedawca, który opisał to 5 października na forum PrestaShop, ze sklepem 1.7.8, nie znalazł niczego w bazie danych, a tylne drzwi były w plikach w kilku folderach.

  • Pola na własny kod. Wiele szablonów i modułów analitycznych ma pole do wklejenia kodu w nagłówku strony; w szablonie Warehouse jest w Wygląd → IqitThemeEditor, w zakładce z kodami. Każdy kod, którego nie umiesz wyjaśnić, wylatuje, nawet jeśli wygląda na znane narzędzie: jeden z użytych w tej kampanii udawał Microsoft Clarity.
  • Strony i karty produktów. Strony CMS i opisy produktów i kategorii przyjmują HTML, a skrypt się tam zmieści.
  • Moduły. W Moduły → Menedżer modułów — każdy moduł, którego nie instalowałeś sam.
  • Zabłąkane pliki. W czystym PrestaShop foldery obrazków, wgrywanych plików i plików do pobrania nie zawierają żadnego PHP poza index.php. Jeden więcej albo taki, którego nazwa zaczyna się od kropki i który Twój program FTP ukrywa, to tylne drzwi.

Sprawdzenie w Zaawansowane → Informacja → Lista zmienionych plików patrzy tylko na to, czy zmieniły się pliki rdzenia: nie na szablon, nie na moduły, nie na obrazki i nie na dodane pliki. Pusta lista nie oznacza czystego sklepu.

Jak weszli i jak zamknąć drzwi?

Netskope jeszcze nie wie, jak te strony zostały przejęte. W PrestaShop zwykłe drzwi to moduł ze znaną luką, którego nigdy nie zaktualizowano, skradzione albo łatwe hasło do panelu i moduły „nulled”, czyli płatne moduły pobrane za darmo z pirackich stron, które często przychodzą z już zainstalowanymi tylnymi drzwiami.

  • Zaktualizuj moduły, zaczynając od wyszukiwania fasetowego. 3 czerwca PrestaShop ostrzegł przed poważną luką w ps_facetedsearch, module filtrów katalogu dostarczanym z PrestaShop: każdy, bez konta, mógł uruchomić kod na Twoim serwerze. Jest naprawiona w 4.0.4; jeśli miałeś starszą wersję, załóż, że to mogła być droga wejścia. I usuń moduły, których nie używasz.
  • Chroń panel administracyjny. Długie, różne hasło dla każdego pracownika, żadnych wspólnych kont i adres panelu inny niż /admin. Drugiego kroku z kodem w telefonie nie ma w standardzie, ale dodaje go moduł.
  • Postaw przed sklepem zaporę, taką jak Cloudflare: zatrzymuje wiele zautomatyzowanych ataków, zanim dotrą do sklepu, jak wyjaśnialiśmy w tekście jak ograniczyć liczbę zapytań na IP, nie blokując Google. Sam PrestaShop podkreśla, że to dodatkowa warstwa, a nie zastępstwo aktualizacji.
  • Przejdź z 1.7. PrestaShop przestał ją wspierać, kiedy wydał 9.0, w czerwcu 2025. To była wersja, na której działał sklep z forum.

Dla Twojego zespołu technicznego

Zapytania tylko do odczytu; zamień ps_ na prefiks sklepu. Warehouse zapisuje swoje pola z kodem w postaci zakodowanej, więc szukaj też <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;

W plikach, z katalogu głównego sklepu:

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 .

Wskaźniki kampanii są na liście Netskope. Ponowna instalacja rdzenia i modułów z czystych paczek tej samej wersji jest bezpieczniejsza niż usuwanie plik po pliku; potem wyczyść var/cache i themes/*/assets/cache. PrestaShop 9 ma pliki .htaccess, które blokują uruchamianie PHP w img, upload, download, js, vendor i modules: upewnij się, że nadal tam są, a na Nginx, który ich nie czyta, przenieś te reguły do konfiguracji serwera.

Kiedy poprosić o pomoc?

Jeśli coś znalazłeś, a nie masz kogo poprosić o sprzątanie, jeśli wróciło po czyszczeniu albo jeśli nie wiesz, od czego zacząć. To część naszej usługi wsparcia i opieki technicznej: czyścimy sklep, ustalamy, jak weszli, i zamykamy drzwi. Wyślij nam zrzut ekranu od klienta i swoją wersję PrestaShop, a przyjrzymy się temu tego samego albo następnego dnia.

Napisz, co zobaczył Twój klient

W czym możemy pomóc

Zobacz wszystkie usługi →

Czytaj dalej

Potrzebujesz pomocy przy swoim projekcie? Porozmawiajmy

Powiedz nam, czego potrzebuje Twoja firma

Moduł, aplikacja, serwer, który sprawia problemy, albo coś pilnego. Odpowiadamy w ciągu 24 godzin, ze stałą wyceną: cena i termin.