Jak sprawdzić, czy WordPress został zhakowany lub zainfekowany?
Nie każdy atak wygląda jak scena z filmu.
Czasem zobaczysz ekran z żądaniem okupu i komunikat, że jeśli nie zapłacisz w kryptowalucie, stracisz wszystkie dane. Innym razem trafisz na czarną stronę z informacją, że witryna została przejęta.
I tak - takie przypadki zdarzały się również u moich klientów.
Problem w tym, że większość włamań nie wygląda aż tak widowiskowo. Infekcja często jest znacznie bardziej dyskretna. Ukrywa się pod warstwami, których nie widać na pierwszy rzut oka:
- podejrzanym kodem w plikach,
- masową wysyłką spamu,
- treściami pokazywanymi wyłącznie robotom Google lub innych wyszukiwarek,
- przekierowaniami uruchamianymi tylko dla części użytkowników,
- próbami dodania do bazy danych kodu w postaci
- zmianami, które zaczynają niszczyć SEO, zanim ktokolwiek zauważy, że doszło do włamania.
I właśnie te mniej oczywiste sygnały bywają najgroźniejsze. Jak rozpoznać problemy, których często nie widać od razu?
Przekierowania w miejscach, w których nigdy ich nie było
Wchodzisz na stronę i po chwili zostajesz przerzucony gdzieś indziej.
Pojawia się komunikat, że musisz zainstalować dodatek, naprawić system albo kliknąć przycisk, żeby urządzenie znowu działało mimo, że działa bez żadnego problemu.
Właśnie mogłeś trafić na efekt złośliwego przekierowania.
Czasem taki mechanizm znajduje się bezpośrednio w plikach WordPressa. Rzadziej, ale widziałem również takie przypadki zostaje dodany do konfiguracji serwera, na przykład do pliku .htaccess.
I teraz robi się ciekawie.
Ty, jako właściciel strony, możesz nie zobaczyć niczego podejrzanego.
Przekierowanie może działać wyłącznie:
- dla użytkowników mobilnych,
- dla nowych odwiedzających,
- dla wybranych adresów IP,
- po wejściu z wyszukiwarki,
- dla robotów Google.
Dlatego takie infekcje bywają trudne do wykrycia. Dla Ciebie strona wygląda normalnie, ale dla Google lub części użytkowników jest już czymś zupełnie innym.
Spam w wynikach wyszukiwania.
To jeden z tych problemów, które potrafią czaić się przez tygodnie, a czasem nawet miesiące - ciężko jest je zauważyć .
Infekcja może przyjmować różne formy:
- spam injection - dziwne tytuły, opisy i frazy w treści,
- cloaking - Google widzi inną stronę niż użytkownik,
- rogue pages - podstrony, których nigdy nie tworzyłeś.
Ty widzisz wszystko normalnie.
Wchodzisz na stronę - wygląda dobrze. Tytuł się zgadza, treść działa, podstrony są na miejscu. Na pierwszy rzut oka nic się nie dzieje.
Dopiero sprawdzasz swoją domenę w Google i widzisz coś, czego zdecydowanie nie powinno tam być.
Zamiast normalnego wyniku pojawiają się dziwne znaki, obce alfabety, spamowe frazy albo tytuły, których nigdy nie dodawałeś. To silny sygnał, że mogło dojść do infekcji.
Często jest to efekt malware, które pokazuje jedną wersję strony Tobie, a inną robotom wyszukiwarek. Innymi słowy: Ty widzisz porządek, a Google widzi spam.
Jest to szczególnie groźne, ponieważ zanim zauważysz problem, szkody mogą już dotyczyć:
- widoczności strony,
- indeksacji podstron,
- pozycji w wynikach wyszukiwania,
- reputacji domeny.
Google nie zawsze pokazuje błąd. Czasami pokazuje dokładnie to, co malware chciał mu pokazać.
Jak sprawdzić, czy domena została zhakowana?
Sprawdź wyniki wyszukiwania, mapę strony oraz raport dotyczący problemów bezpieczeństwa w Google Search Console.
Wpisz również w Google: site:twojadomena.pl
Wyniki pokażą zaindeksowane adresy powiązane z Twoją domeną.
Szukaj szczególnie podstron:
- których nie tworzyłeś,
- z losowymi adresami URL,
- napisanych w obcych językach,
- dotyczących hazardu, leków, podróbek albo phishingu,
- zawierających podejrzane przekierowania,
- lub dziwne tytuły i meta opisy dla stron które tworzyłeś.
To często pierwszy moment, w którym infekcja wychodzi na jaw.
Nie masz pewności, czy strona została zainfekowana?
Automatyczny skaner może wskazać podejrzany plik, ale nie zawsze pokaże, skąd wziął się problem i czy infekcja nie ukryła się również w bazie danych, zadaniach CRON albo innych stronach na hostingu.
Sprawdzę stronę, pliki, użytkowników i najważniejsze mechanizmy, aby ustalić, czy rzeczywiście doszło do włamania.
Sprawdź bezpieczeństwo stronyNowy, niezidentyfikowany administrator witryny
Wchodzisz do panelu WordPressa i widzisz coś, czego nie powinno tam być. Nowe podstrony. Nowe wpisy. Nowi użytkownicy. Problem polega na tym, że nie utworzyła ich żadna osoba, którą znasz.
Sprawdzasz listę użytkowników i pojawia się niespodzianka: nowe konta z podejrzanymi adresami e-mail, losowymi nazwami albo loginami wyglądającymi jak wynik niezbyt ambitnego generatora znaków.
To bardzo poważny sygnał.
Jeśli ktoś utworzył nowe konto administratora, mógł zostawić sobie trwały dostęp do strony. Sama zmiana hasła do Twojego konta może wtedy niewiele zmienić.
Co ważne, nie zawsze oznacza to lukę bezpośrednio na serwerze lub stronie.
Problem może wynikać również z:
- przejętych danych logowania,
- używania tego samego hasła w kilku miejscach,
- zainfekowanego komputera,
- kradzieży aktywnej sesji administratora,
- podatnej wtyczki pozwalającej utworzyć nowe konto.
W praktyce oznacza to jedno: nawet jeśli strona wygląda normalnie, ktoś może już mieć dostęp do jej zaplecza.
Sprawdź przede wszystkim użytkowników z rolą „Administrator”, ich adresy e-mail oraz daty utworzenia kont.
Podejrzane lub zmienione pliki WordPressa
Nie każda infekcja powoduje przekierowania, tworzy nowego administratora albo od razu zaczyna wysyłać tysiące wiadomości. Czasami jedynym widocznym śladem są pliki, które zostały zmienione, dodane lub zastąpione.
Podejrzane mogą być między innymi:
- nowe pliki w katalogu głównym WordPressa,
- nieznane pliki w katalogach
wp-admin,wp-includes, - pliki PHP znajdujące się w katalogu
wp-content/uploads, - zmiany w pliku
.htaccess, - dodatkowy kod w
wp-config.php, - pliki o nazwach podobnych do systemowych,
- nietypowe daty modyfikacji,
- pliki, które pojawiają się ponownie po ich usunięciu.
Szczególną uwagę warto zwrócić na pliki PHP znajdujące się w katalogu uploads. Standardowo przechowywane są tam zdjęcia, dokumenty i inne materiały przesyłane przez panel. Pojawienie się wykonywalnego kodu może więc wymagać dokładniejszego sprawdzenia.
Nie oznacza to jednak, że każdy zmieniony plik jest automatycznie zainfekowany. Aktualizacja WordPressa, wtyczki, motywu albo poprawka wykonana przez programistę również może zmienić jego zawartość.
Dlatego pliki warto porównywać z oficjalnymi wersjami, kopią zapasową lub sumami kontrolnymi.
Jak sprawdzić sumy kontrolne WordPressa?
Przy dostępie do WP-CLI można sprawdzić pliki rdzenia za pomocą polecenia: wp core verify-checksums
Dla wtyczek dostępnych w oficjalnym repozytorium można wykorzystać: wp plugin verify-checksums --all
Niezgodność oznacza, że plik różni się od oficjalnej wersji i wymaga sprawdzenia. Nie zawsze potwierdza jednak obecność wirusa — plik mógł zostać wcześniej zmodyfikowany legalnie.
Poprawny wynik również nie daje pewności, że cała instalacja jest czysta. Infekcja może znajdować się w motywie, bazie danych, katalogu uploads, autorskiej wtyczce albo zadaniu CRON.
Jedna zielona kontrolka nie jest jeszcze certyfikatem zdrowia całej strony.
Ostrzeżenia hostingu, zadania CRON i masowa wysyłka spamu
O tych problemach często dowiadujesz się nie z WordPressa, ale od firmy hostingowej.
I zwykle nie jest to wiadomość, którą chcesz dostać, ponieważ może wiązać się z ograniczeniami nałożonymi na konto, blokadą poczty, a nawet wyłączeniem strony i mało przyjaznym komunikatem błędu 500.
Może to być informacja o:
- zawieszeniu usług,
- wykryciu malware,
- zablokowaniu konta pocztowego wysyłającego spam,
- przeciążeniu serwera,
- podejrzanych procesach,
- automatycznej zmianie nazw zainfekowanych plików, na przykład przez dodanie oznaczenia VIRUS.
To nie są już subtelne sygnały. Zwykle oznaczają, że problem zdążył się rozwinąć.
W jednym z przypadków, który opisuję szerzej w osobnym artykule, infekcja nie ograniczała się wyłącznie do plików WordPressa.
Włamywacz dodał również zadanie CRON, które po częściowym usunięciu wirusa ponownie przywracało malware. Strona była czyszczona, przez chwilę działała poprawnie, a następnie infekcja wracała i cały proces zaczynał się od nowa.
To klasyczny przykład sytuacji, w której usunięto objaw, ale nie źródło problemu.
Może to prowadzić do:
- zablokowania konta hostingowego,
- ograniczenia wysyłki poczty,
- umieszczenia adresu IP serwera na czarnych listach,
- problemów z dostarczaniem normalnych wiadomości,
- pogorszenia reputacji domeny.
Warto pamiętać, że usługodawca nie zawsze od razu pokaże pełny obraz sytuacji.
Najpierw możesz dostać powiadomienie o wykrytym wirusie. Dopiero później okaże się, że problem dotyczył również zadań CRON, poczty, bazy danych albo innych mechanizmów utrzymujących infekcję.
Przy czyszczeniu strony robi to dużą różnicę. Usunięcie kilku podejrzanych plików nie wystarczy, jeżeli mechanizm, który je odtwarza, nadal spokojnie czeka na swoją kolej.
Jakimi narzędziami sprawdzić, czy WordPress jest zainfekowany?
Czasami obecność infekcji można zauważyć bez specjalistycznych narzędzi. Wystarczy podejrzane przekierowanie, nieznany administrator albo wiadomość od hostingu.
W mniej oczywistych przypadkach warto połączyć kilka metod diagnostycznych. Każde narzędzie sprawdza inny fragment strony i żadne nie daje stuprocentowej gwarancji, że instalacja jest całkowicie czysta.
| Narzędzie | Co pozwala sprawdzić | Ograniczenie |
|---|---|---|
| Google Search Console | Spam, phishing i problemy bezpieczeństwa wykryte przez Google | Brak ostrzeżenia nie wyklucza infekcji |
| Operator site: | Podejrzane podstrony widoczne w indeksie | Wyniki mogą być niepełne lub nieaktualne |
| Skaner hostingu | Złośliwe lub zmodyfikowane pliki na serwerze | Może wykrywać tylko znane wzorce |
| Wordfence lub podobne narzędzie | Znane malware, zmiany w plikach i podejrzane adresy | Może zwracać fałszywe alarmy |
| WP-CLI | Zgodność rdzenia i wtyczek z oficjalnymi sumami | Nie sprawdza całej bazy, motywu i wszystkich wtyczek |
| SFTP lub menedżer plików | Daty, rozmiary, nazwy i zawartość plików | Wyniki wymagają ręcznej interpretacji |
| Logi serwera | Nietypowe żądania, błędy i aktywność | Trzeba wiedzieć, czego w nich szukać |
| Kopia zapasowa | Różnice między obecnym a wcześniejszym stanem | Kopia również może pochodzić już z okresu infekcji |
Jak sprawdzić WordPressa krok po kroku?
Jeżeli podejrzewasz włamanie, zacznij od zebrania informacji. Nie usuwaj od razu pierwszego pliku wskazanego przez skaner, ponieważ możesz usunąć objaw, ale pozostawić źródło infekcji.
- Sprawdź stronę jako zwykły użytkownik
Otwórz ją:- w trybie incognito,
- na telefonie,
- na innym urządzeniu,
- po wejściu bezpośrednio,
- po kliknięciu wyniku w Google,
- przy użyciu innego połączenia internetowego.
- Sprawdź wyniki wyszukiwania i Search Console
Przejrzyj:- wyniki dla operatora
site:, - mapę strony,
- raport indeksowania,
- raport dotyczący problemów bezpieczeństwa,
- wiadomości przesłane przez Google.
- wyniki dla operatora
- Sprawdź panel WordPressa
Skontroluj:- konta administratorów,
- wtyczki i motywy,
- nowe strony oraz wpisy,
- zmienione menu,
- obce linki,
- ustawienia witryny.
- Sprawdź informacje od hostingu
Zwróć uwagę na:- dokładną ścieżkę wykrytego pliku,
- datę jego modyfikacji,
- nazwę wykrytego zagrożenia,
- informację, czy plik został usunięty, zablokowany czy przeniesiony do kwarantanny,
- problemy dotyczące poczty lub innych stron na tym samym koncie.
- Sprawdź pliki i zadania cykliczne
Porównaj pliki z oficjalnymi wersjami lub kopią zapasową. Sprawdź również CRON WordPressa, zadania skonfigurowane w hostingu oraz podejrzane skrypty uruchamiane automatycznie. - Porównaj kilka niezależnych wyników
Jeden objaw powinien skłonić do dalszego sprawdzenia. Kilka zgodnych sygnałów, na przykład przekierowania, obcy administrator i pliki wykryte przez hosting znacznie mocniej wskazuje na infekcję.
Czy każdy podejrzany objaw oznacza infekcję?
Nie każdy błąd lub nietypowe zachowanie strony oznacza, że WordPress został zhakowany. Wolne działanie może wynikać z przeciążonego hostingu, problemu z bazą danych albo źle działającej wtyczki. Błąd 500 może pojawić się po nieudanej aktualizacji, błędzie PHP albo zmianie konfiguracji serwera.
Spam przesyłany przez formularz kontaktowy często oznacza brak odpowiednich zabezpieczeń antybotowych, ale nie musi świadczyć o przejęciu całej strony. Duża liczba nieudanych logowań pokazuje, że ktoś próbuje się włamać. Nie oznacza jeszcze, że próba była skuteczna.
Podobnie zmieniony plik może być wynikiem aktualizacji lub wcześniejszej poprawki programistycznej.
Pojedynczy objaw jest więc powodem do sprawdzenia strony. Kilka powiązanych sygnałów, potwierdzonych przez różne narzędzia, powinno być traktowane znacznie poważniej.
Kiedy można uznać, że infekcja jest bardzo prawdopodobna?
Ryzyko infekcji jest wysokie, jeżeli:
- użytkownicy są przekierowywani na obce strony,
- w Google znajdują się spamowe wyniki lub nowe podstrony których nie tworzyłeś,
- pojawiło się nieznane konto administratora,
- hosting wskazał konkretne złośliwe pliki,
- pliki odtwarzają się po ich usunięciu,
- z serwera wychodzi nieautoryzowany spam,
- nieznane zadanie CRON uruchamia podejrzany kod,
- kilka niezależnych narzędzi wskazuje ten sam problem.
W takiej sytuacji nie warto ograniczać się do kliknięcia przycisku „napraw” przy pierwszym wyniku skanowania. Trzeba sprawdzić całą instalację i ustalić, w jaki sposób doszło do infekcji.
Co zrobić, gdy infekcja została potwierdzona?
Jeżeli wyniki diagnostyki potwierdzają infekcję, przed rozpoczęciem czyszczenia:
- wykonaj kopię obecnego stanu strony,
- zachowaj logi i wiadomości od hostingu,
- zapisz listę wykrytych plików,
- sprawdź pozostałe strony na tym samym koncie,
- ogranicz dostęp do witryny, jeżeli może zagrażać użytkownikom.
Następnie przejdź do pełnej procedury opisującej, jak usunąć wirusa z WordPressa. Samo usunięcie jednego pliku może nie wystarczyć, jeżeli infekcja pozostawiła dodatkowe konto, zadanie CRON albo inny mechanizm ponownego dostępu.
Jak ograniczyć ryzyko kolejnej infekcji?
Po usunięciu problemu trzeba jeszcze sprawdzić przyczynę włamania, zaktualizować stronę, zmienić dane dostępowe, zabezpieczyć logowanie i wdrożyć regularne kopie zapasowe oraz monitoring.
Pełną listę działań znajdziesz w przewodniku pokazującym, jak zabezpieczyć stronę WordPress.