W większości przypadków, w których do nas dzwoni ktoś z podejrzeniem „że coś jest nie tak ze stroną", diagnoza jest ta sama: WordPress zostaje zainfekowany. Nie przez zaawansowanego hakera, który celowo się dobrał do konkretnej firmy. Przez skaner-bota, który automatycznie chodzi po internecie i szuka stron z przestarzałą wtyczką, nieaktualnym WP albo słabym hasłem. Jeśli ma szczęście — trafia na Twoją.
Problem z zainfekowaną stroną polega na tym, że rzadko od razu ją widać. Atakujący zwykle nie chce Ci zepsuć strony — chce ją wykorzystać. Do rozsyłania spamu, do ukrytych linków SEO, do przekierowań kupieckich, do kopania kryptowaluty na Twoim serwerze. Objawy są subtelne i często pojawiają się z kilkudniowym opóźnieniem. Poniżej siedem sygnałów ostrzegawczych, które warto sprawdzić, jeśli cokolwiek Cię niepokoi — plus konkretne kroki naprawcze.
Sygnał 1: przekierowania na obce strony
Objaw: otwierasz własną stronę, a zamiast niej — po chwili — wyskakuje inna strona. Zwykle ukraińskie / rosyjskie domeny typu .ru lub .biz, strony „rentgenem kosmetycznym" albo kasyno online. Najczęściej przekierowanie dzieje się tylko raz na urządzenie i tylko z wyniku Google (nie po wpisaniu adresu ręcznie) — bo złośliwy kod sprawdza document.referrer.
Skąd się bierze: atakujący wstrzykuje JavaScript do functions.php, header.php albo do rekordu w tabeli wp_options. Kod uruchamia się w przeglądarce użytkownika i sprawdza, skąd przyszedł. Jeśli z Google — przekierowuje. Jeśli Ty otwierasz stronę po zalogowaniu w WP — przekierowania nie widać.
Szybki test: otwórz swoją stronę w trybie incognito z wpisanego w Google wyniku. Jeśli przerzuca Cię gdzie indziej — masz to potwierdzone.
Sygnał 2: ostrzeżenie „Niebezpieczna strona" w Chrome
Objaw: użytkownik (albo Ty) otwiera stronę, a Chrome zamiast niej pokazuje czerwony ekran z komunikatem: „Uwaga: witryna przed Tobą może być niebezpieczna" albo „Phishingowa witryna". Reszta przeglądarek — Firefox, Edge, Safari — zachowuje się podobnie, bo wszystkie korzystają z tego samego rejestru Google Safe Browsing.
Skąd się bierze: Google automatycznie skanuje internet i jeśli wykryje na Twojej stronie elementy charakterystyczne dla malware (przekierowania, podejrzane skrypty, znane payload-y), dodaje domenę do listy zagrożeń. 90% odwiedzających cofa się na tym etapie.
Szybki test: wpisz w Google: https://transparencyreport.google.com/safe-browsing/search?url=twojadomena.pl. Dostaniesz oficjalny raport.
Strona zablokowana przez Google Safe Browsing traci 80–90% ruchu z wyszukiwarki w ciągu 24 godzin. Z każdym kolejnym dniem straty rosną eksponencjalnie.— — raport Sucuri 2025
Sygnał 3: obce treści w wynikach wyszukiwania Google
Objaw: wpisujesz w Google site:twojadomena.pl — i widzisz własne strony z tytułami po japońsku, z linkami do kasyn, z ofertami leków bez recepty. Albo widzisz podstrony typu /nike-jordan-buty-meskie/, których nigdy nie tworzyłeś.
Skąd się bierze: to tzw. SEO spam injection albo Japanese SEO hack. Atakujący wstrzykuje do Twojej strony ukryte podstrony z linkami afiliacyjnymi. Dla zwykłego odwiedzającego są niewidoczne — pokazywane są tylko Googlebotowi. Efekt: Twoja domena (z zaufaniem SEO) wypozycjonuje im spam, a Twój ruch przepada.
Szybki test: site:twojadomena.pl w Google. Jeśli widzisz podstrony, których nie utworzyłeś — masz injection. Dodatkowy test: zaloguj się do Google Search Console i sprawdź zakładkę Indeksowanie → Strony. Liczba zaindeksowanych podstron większa niż powinna być = red flag.
Sygnał 4: błąd bazy danych albo biała strona
Objaw: zamiast strony — komunikat typu Error establishing a database connection, albo całkiem biała strona (White Screen of Death). Strona przestała działać z sekundy na sekundę.
Skąd się bierze: to nie zawsze wirus — czasem to przepełniony serwer, wygaszony hosting, błąd aktualizacji. Ale równie często malware przeciążył bazę (np. próbuje wysłać 10 000 maili spamu w 30 sekund i wywalił limity MySQL). Albo atakujący kasuje plik wp-config.php, żeby ukryć ślady.
Szybki test: wejdź do panelu hostingu i sprawdź: (1) obciążenie CPU serwera w ostatnich godzinach — czy nie wyskoczyło do 100%, (2) logi serwera pod kątem podejrzanych wywołań do /wp-admin/admin-ajax.php albo /xmlrpc.php.
Sygnał 5: nowy użytkownik admin, którego nie dodawałeś
Objaw: wchodzisz do Użytkownicy → Wszyscy w panelu WP i widzisz konto z adresem mailowym, którego nie znasz. Często z nazwą typu admin123, wpsupport, devteam, z adresem gmail.com albo protonmail.com.
Skąd się bierze: atakujący dodał sobie konto administratora przez lukę w jednej z Twoich wtyczek (najczęściej brute-force formularza logowania albo wykorzystanie znanej dziury w starej wersji popularnego pluginu). Od tego momentu ma pełen dostęp — nawet jeśli Ty zmienisz swoje hasło, on ma własne.
Szybki test: panel WP → Użytkownicy → przełącz filtr na „Administrator". Powinieneś zobaczyć tylko siebie (i ewentualnie jednego webmastera, z którym pracujesz). Wszystko inne to alarm.
Sygnał 6: Twoje maile wpadają do folderu „spam"
Objaw: wysyłasz komuś maila ze skrzynki kontakt@twojadomena.pl, a on nie dociera. Albo dociera — do folderu spam. To nie przypadek hostingu ani błąd Outlooka.
Skąd się bierze: atakujący wysyła z Twojego serwera tysiące spamu do losowych adresów. Twój IP trafia na listy RBL (Real-time Blackhole List). Od tego momentu Gmail, Outlook, Onet — wszystkie główne dostawcy mailowi — traktują Twoje wiadomości jako podejrzane.
Szybki test: wpisz IP swojego serwera (znajdziesz w panelu hostingu) do mxtoolbox.com/blacklists.aspx. Jeśli jest na którejś z list — masz problem.
Sygnał 7: nienaturalnie długie ładowanie strony
Objaw: strona, która jeszcze miesiąc temu ładowała się w 1–2 sekundy, teraz potrzebuje 10–15 sekund. Serwer działa, ale coś ciężkiego uruchamia się przy każdym otwarciu podstrony.
Skąd się bierze: najczęściej crypto-mining — skrypt, który na Twoim serwerze kopie kryptowalutę dla atakującego. Albo cron job, który przy każdym wejściu użytkownika wysyła setki zapytań do bazy. Twoja strona nadal działa, ale 80% zasobów serwera idzie na cudzy zysk.
Szybki test: narzędzie GTmetrix albo PageSpeed Insights — jeśli Twoja strona ma teraz TTFB > 3 sekundy (kiedyś miała < 500 ms), coś jest nie tak.
Strona jest zhakowana — co robić krok po kroku
Jeśli któryś z powyższych sygnałów potwierdził się — nie kasuj od razu niczego, nie próbuj „czyścić na oko". Diagnoza malware wymaga metodycznej procedury. Oto czego sami się trzymamy:
- Zrób pełny backup w stanie obecnym — przed jakąkolwiek ingerencją. Nawet zainfekowany backup jest cenny, bo pokazuje, co atakujący zmienił.
mysqldumpbazy + archiwum plików/wp-content/. - Zmień wszystkie hasła — panel WP, hosting, FTP, baza danych,
wp-config.php(klucze solnikowe), wszystkie konta administratorów. Wygeneruj mocne hasła (bitwarden,1Password). - Usuń podejrzanych użytkowników — w panelu
Użytkownicy, kasujemy wszystkich nieznanych adminów. Ostrożnie — atakujący mógł zostawić pluginek, który odtworzy userów po kasacji. - Skan antymalware — wtyczka
Wordfence(darmowa wersja skanuje),MalCare,Sucuri. Pokazują listę zmodyfikowanych plików i podejrzanych wzorców w kodzie. - Wymiana plików rdzenia WP — pobierz świeżego WP z
wordpress.org, nadpisz/wp-admin/i/wp-includes/./wp-content/zostaw (bo tam są Twoje wtyczki i motyw), ale sprawdź go osobno. - Sprawdź i wymień motyw + wtyczki — aktualne wersje, tylko z oficjalnego repozytorium lub od sprzedawcy. Nigdy nie używaj „nulled" wtyczek pobranych z forów.
- Usuń backdoory — szukaj w
/wp-content/uploads/,/wp-content/themes/i/plików typuwp-config-backup.php,class-wp-includes.php, pliku z losową nazwą rozpoczynającą się od kropki. To są typowe kryjówki. - Zmień
wp-config.phpsekretne klucze — skorzystaj zapi.wordpress.org/secret-key/1.1/salt/i wklej wygenerowane wartości. - Skanuj jeszcze raz — po wszystkich zmianach, Wordfence musi pokazać zero znalezionych zagrożeń.
- Zgłoś do Google — jeśli byłeś na czarnej liście Safe Browsing, w Google Search Console →
Bezpieczeństwo i działania ręczne→ Poproś o sprawdzenie. Trwa 24–72h.
Kiedy to przekracza Twoje siły — a przekracza w 9 na 10 przypadków — oddaj to komuś, kto robi to zawodowo. Nasza procedura jest udokumentowana, mamy checklistę na 34 punkty, robimy to na kopii roboczej (nie na Twojej produkcji) i nie przekazujemy Ci strony, dopóki skany nie pokażą czystego wyniku przez 72 godziny.
Jak zapobiec — siedem zasad na co dzień
- Aktualizuj regularnie — WordPress core i wtyczki. Minimum raz w miesiącu, z testem na kopii. Zero-day patche — natychmiast.
- Usuwaj nieużywane wtyczki i motywy — każdy nieaktywny kod to potencjalny wektor ataku.
- Silne hasła i 2FA —
Google Authenticatoralbo podobna wtyczka dla panelu WP. Koniec z hasłemadmin123. - Limit logowań — wtyczka typu
Limit Login Attemptsblokuje brute-force po 3 nieudanych próbach. - SSL i aktualna wersja PHP — minimum 8.2. Stare wersje są nieobsługiwane i podatne na znane dziury.
- Codzienny backup poza hostingiem — jeśli serwer padnie, Twoja kopia na tym samym serwerze też przepadnie. Backupy u nas idą na nasze własne serwery, nie na hosting klienta.
- Monitoring — czy to Wordfence z alertami mailowymi, UptimeRobot, czy nasza opieka — ktoś ma zauważyć zmianę, zanim zrobi się problem.
Większość z tych zasad obejmuje nasza opieka — pakiety od 389 zł netto/mc. Ale nawet jeśli nie korzystasz z niczyjej pomocy — trzymanie się tej siedmiopunktowej listy to 95% obrony przed zwykłymi, automatycznymi atakami botów.
Końcowa myśl. Zhakowana strona nie oznacza, że jesteś „celem". Oznacza, że zostałeś trafiony w masowym skanie — tak samo jak tysiąc innych firm tego samego dnia. Różnica polega na tym, jak szybko to zauważysz i jak szybko zareagujesz. Jeśli zareagujesz w ciągu 24h — odbudowa jest rutynowa. Jeśli dowiesz się po tygodniu, gdy Google już zablokował domenę — praca potrafi się rozciągnąć na kilka dni.