Zhakowana strona WordPress — jak rozpoznać infekcję i usunąć malware z hostingu krok po kroku

Zhakowana strona WordPress — jak rozpoznać infekcję i usunąć malware z hostingu krok po kroku (grafika wygenerowana przez AI)

Zhakowana strona WordPress — jak rozpoznać infekcję i usunąć malware z hostingu krok po kroku

Włamanie na stronę prawie nigdy nie wygląda jak w filmach. Nie ma czaszki na czarnym tle ani napisu „HACKED”. Jest za to strona, która nagle ładuje się dwa razy wolniej, przekierowuje część odwiedzających na podejrzane oferty, a w wynikach Google dostaje ostrzeżenie „Ta witryna może być niebezpieczna”. Właściciel dowiaduje się ostatni — zwykle od klienta.

Ten poradnik prowadzi Cię przez całą ścieżkę: rozpoznanie, opanowanie sytuacji, czyszczenie i profilaktykę. Bez zgadywania i bez kasowania rzeczy, których nie da się odzyskać.

Po czym poznać, że strona jest zainfekowana

Rzadko jest jeden dowód. Zwykle zbiera się kilka drobiazgów naraz:

  1. Przekierowania, których nie ustawiałeś — najczęściej tylko dla ruchu z wyszukiwarki albo tylko na telefonach, żeby administrator niczego nie zauważył.
  2. Ostrzeżenie w Google lub w przeglądarce — czerwony ekran ostrzegawczy to sygnał, że infekcja trwa już jakiś czas.
  3. Nowe pliki PHP w miejscach, gdzie nie powinno ich być — w wp-content/uploads, w katalogu motywu, w katalogu głównym.
  4. Nagły skok wysyłki poczty z Twojej domeny i lawina zwrotek o niedostarczonych wiadomościach.
  5. Konta administratora, których nie zakładałeś.
  6. Dziwne wyniki wyszukiwania — Twoja domena zaczyna rankować na frazy z zupełnie innej branży.
  7. Wzrost zużycia zasobów — strona zjada nagle wyraźnie więcej mocy niż zwykle, bo ktoś używa jej do wysyłki spamu albo do ataków na inne serwisy.

Objawy z punktów 4 i 7 bywają mylone ze zwykłym przeciążeniem. Jeśli nie masz pewności, czy to atak wolumetryczny, czy infekcja, przyda się nasz wpis o tym, czym jest ochrona anty-DDoS — to dwa różne problemy i dwie różne reakcje.

Pierwsze 30 minut: zanim zaczniesz sprzątać

Największą szkodę robi zwykle nie malware, tylko panika. Zanim skasujesz cokolwiek:

  • Zrób kopię stanu zainfekowanego. Tak, zainfekowanego. To Twój materiał dowodowy i bezpiecznik — jeśli w trakcie czyszczenia usuniesz o jeden plik za dużo, masz do czego wrócić.
  • Zmień hasła w kolejności: panel hostingu → FTP/SSH → baza danych → konta administratora WordPressa. Zmiana samego hasła do WP nic nie daje, jeśli atakujący siedzi na FTP. Jak zbudować hasła, których nie trzeba zapisywać na kartce, opisaliśmy w poradniku o bezpieczeństwie konta i weryfikacji dwuetapowej.
  • Nie wyłączaj strony na stałe. Tryb serwisowy wystarczy. Twarde wyłączenie domeny na kilka dni potrafi kosztować w wynikach wyszukiwania więcej niż sama infekcja.
  • Spisz oś czasu. Kiedy pojawił się pierwszy objaw, co instalowałeś w poprzedzającym tygodniu, kto ma dostęp. To skraca szukanie źródła z godzin do minut.

Którędy malware najczęściej wchodzi

W praktyce prawie zawsze jedna z czterech dróg:

  • Nieaktualna wtyczka lub motyw. Zdecydowanie najczęstszy scenariusz. Dotyczy też wtyczek wyłączonych — nieaktywny plugin nadal leży na dysku i nadal ma podatny kod.
  • Stara wersja PHP. Wersje, które nie dostają już poprawek bezpieczeństwa, są łatwym celem. Na linii Cloud w RapidDC dostępne są wersje PHP od 5.4 do 8.3 (źródło: rapiddc.pl/hosting-www) — samo posiadanie nowej wersji nie wystarczy, trzeba ją jeszcze wybrać. Pokazujemy to w poradniku o zmianie wersji PHP na hostingu.
  • Wykradzione dane dostępowe. Najczęściej z zainfekowanego komputera, na którym stoi klient FTP z zapamiętanym hasłem.
  • Środowisko bez separacji. Jeśli jedno zainfekowane konto może dosięgnąć plików sąsiada, infekcja rozlewa się bokiem.

Czyszczenie krok po kroku

1. Skanowanie — najpierw serwer, potem WordPress

Skaner działający wewnątrz WordPressa ma zasadniczą wadę: uruchamia go to samo środowisko, które jest zainfekowane. Skanowanie po stronie serwera widzi wszystkie pliki konta, także te poza katalogiem WordPressa, i nie da się go wyłączyć z poziomu przejętej wtyczki.

Właśnie dlatego na linii HostingMAX ochrona Imunify360 działa na wszystkich pakietach, od Starter po Extreme (źródło: rapiddc.pl/hostingmax). W specyfikacji linii Cloud takiej ochrony nie znajdziesz — to konkretna różnica, którą warto znać, zanim zaczniesz porównywać same ceny.

2. Kwarantanna zamiast kasowania

Podejrzane pliki przenieś, nie usuwaj. Sporo infekcji wstrzykuje kod do istniejących plików motywu — skasowanie takiego pliku wywala pół strony.

3. Pliki

Najprostszy pewny ruch: podmień rdzeń WordPressa, wszystkie wtyczki i motyw na świeże paczki ze źródła. Zachowaj wyłącznie wp-config.php (po przejrzeniu) i katalog uploads (po przeskanowaniu). Uploads to ulubione miejsce backdoorów, bo teoretycznie nie powinno tam być ani jednego pliku .php.

4. Baza danych

Sprawdź tabelę użytkowników pod kątem nieznanych administratorów, tabelę opcji pod kątem wstrzykniętych skryptów i treści z widocznymi znacznikami <script>. Bazę czyść dopiero po plikach — inaczej backdoor odtworzy zmiany.

5. Rotacja kluczy

Wygeneruj nowe sole i klucze w wp-config.php. To wylogowuje wszystkie sesje, także tę, którą ma atakujący.

Kiedy lepiej przywrócić kopię zapasową

Ręczne czyszczenie ma sens, gdy infekcja jest świeża i wiesz, kiedy się zaczęła. Jeśli nie wiesz — przywrócenie kopii sprzed infekcji jest szybsze i pewniejsze.

Tu wszystko zależy od tego, jak głęboko sięga Twoja historia backupu. Linia Cloud oferuje kopie z historią do 3 dni, a HostingMAX — codzienny backup z 5-dniową historią (źródło: rapiddc.pl/hosting-www, rapiddc.pl/hostingmax). To realna różnica: infekcja wykryta po tygodniu bywa starsza niż najstarsza dostępna kopia. Dlatego backup po stronie hostingu warto traktować jako wygodę, a nie jako jedyną kopię — rozwijamy ten wątek we wpisie o znaczeniu automatycznego backupu hostingu.

Po przywróceniu koniecznie zaktualizuj wszystko, co było nieaktualne. Inaczej odtworzysz stronę razem z podatnością, przez którą weszła infekcja.

Żeby nie wrócić do punktu wyjścia

  • Aktualizuj rdzeń, wtyczki i motywy — i kasuj to, czego nie używasz, zamiast tylko dezaktywować.
  • Trzymaj się wspieranej wersji PHP.
  • Włącz weryfikację dwuetapową na panelu hostingu i w WordPressie.
  • Zablokuj wykonywanie PHP w katalogu uploads.
  • Ustaw sobie przypomnienie na comiesięczny przegląd kont administratorów.
  • Wybierz środowisko, które skanuje samo z siebie — zamiast liczyć, że w krytycznym momencie zdążysz uruchomić skan ręcznie.

Podsumowanie

Infekcja WordPressa to zwykle nie kwestia pecha, tylko nieodrobionej pracy domowej: stara wtyczka, stare PHP, jedno hasło w kilku miejscach. Dobra wiadomość jest taka, że każdy z tych punktów da się domknąć w jedno popołudnie — a odpowiednio dobrany hosting zdejmuje z Ciebie sporą część tej roboty.

Jeśli szukasz środowiska, w którym ochrona Imunify360 i codzienny backup z 5-dniową historią są w standardzie na każdym pakiecie, zajrzyj na HostingMAX. Jeśli wystarczy Ci prostsze, tańsze wejście na dyskach SSD z panelem DirectAdmin — sprawdź linię Cloud i porównaj obie specyfikacje na spokojnie, zanim podejmiesz decyzję.

FAQ – najczęściej zadawane pytania o zhakowaną stronę WordPress

Skąd mam wiedzieć, czy strona jest zainfekowana, czy po prostu wolna?

Wolna strona jest wolna dla wszystkich i zawsze tak samo. Zainfekowana zachowuje się wybiórczo — przekierowuje tylko ruch z wyszukiwarki, tylko na urządzeniach mobilnych albo tylko dla niezalogowanych. Jeśli objaw znika, gdy jesteś zalogowany jako administrator, to bardzo mocna przesłanka za infekcją.

Czy wystarczy zainstalować wtyczkę antywirusową w WordPressie?

Wtyczka to sensowny dodatek, ale nie fundament — działa wewnątrz środowiska, które właśnie zostało przejęte, i widzi tylko katalog WordPressa. Skanowanie po stronie serwera obejmuje całe konto i nie da się go wyłączyć z poziomu zainfekowanej strony. Na linii HostingMAX ochrona Imunify360 dostępna jest na wszystkich pakietach.

Ile kopii zapasowych wstecz powinienem mieć?

Tyle, żeby przetrwać przerwę w Twojej uwadze — czyli minimum kilkanaście dni, jeśli sprawdzasz stronę raz na tydzień. Hosting daje wygodne kopie o krótkiej historii (do 3 dni na linii Cloud, 5 dni na HostingMAX), dlatego drugą, niezależną kopię warto trzymać poza serwerem.

Czy po usunięciu malware Google samo zdejmie ostrzeżenie?

Nie od razu. Po wyczyszczeniu strony trzeba zgłosić ją do ponownego sprawdzenia w Google Search Console. Bez tego zgłoszenia ostrzeżenie potrafi utrzymywać się jeszcze długo po tym, jak problem zniknął.

Czy zmiana hostingu usuwa infekcję?

Nie. Przenosisz pliki i bazę razem z backdoorem, więc infekcja wraca w nowym miejscu. Migrację robi się po wyczyszczeniu strony albo z czystej kopii zapasowej sprzed infekcji — nigdy zamiast czyszczenia.


Artykuł powstał z wykorzystaniem narzędzi sztucznej inteligencji (AI) pod nadzorem zespołu RapidDC. Grafika ilustracyjna została wygenerowana przez AI.