Jak usunąć wirusa z WordPress (pełna procedura)

Jak usunąć wirusa z WordPress (pełna procedura)

Usunięcie wirusa z WordPressa potrafi być znacznie trudniejsze, niż wielu osobom się wydaje. Jedna z ostatnich sytuacji, z jaką się spotkałem, zaczęła się całkiem niewinnie - klient dodał do strony formularz. Działał poprawnie, zbierał dane, wszystko wyglądało w porządku.

Miał tylko jedną dodatkową „funkcję”.

Pozwalał atakować stronę.

Któregoś niedzielnego popołudnia sprawdzałem jedną z witryn i od razu coś zwróciło moją uwagę. Patrzę na tytuł strony - zamiast normalnego nagłówka widzę dziwne znaki w obcym piśmie. Taki moment, kiedy od razu wiadomo, że coś jest bardzo nie tak.

Jednak zwykle tak to wygląda: wirus rzadko przychodzi z wielkim alarmem. Częściej zaczyna się od drobnego sygnału, który łatwo zignorować.

I jeśli myślisz, że wirus bierze się wyłącznie z zaniedbań, to nie. Niedawno głośno było o przypadku przejęcia ponad 30 wtyczek WordPress, do których po zmianie właściciela dodano backdoory. Użytkownicy instalowali aktualizacje, myśląc, że robią coś dobrego.

Kreskówka przedstawiająca zamaskowaną postać w czarnym ubraniu skradającą się przed dużym żółtym okręgiem z kodem binarnym (zera i jedynki) na ciemnym tle.

Jak rozpoznać, że WordPress został zhakowany?

Nie każdy atak wygląda jak scena z filmu. Czasem zobaczysz ekran z żądaniem okupu. Komunikat, że jeśli nie zapłacisz w kryptowalucie, stracisz dane.

Czasem trafisz na czarną stronę z komunikatem, że witryna została przejęta.

I tak - takie przypadki zdarzały się u moich klientów.

Problem w tym, że większość włamań nie wygląda aż tak widowiskowo.

Często infekcja jest dużo bardziej dyskretna i tajemnicza. Ukrywa się pod warstwami, których nie widać na pierwszy rzut oka: dziwnym kodem w plikach, wysyłką maili masowo, spamem pokazywanym tylko robotom Google, przekierowaniami uruchamianymi tylko dla części użytkowników albo zmianami, które zaczynają psuć SEO, zanim ktokolwiek zauważy, że doszło do włamania.

I właśnie te mniej oczywiste sygnały bywają najgroźniejsze. Jak więc wyglądają te 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 jesteś przerzucany gdzieś indziej.  Pojawia się komunikat, że musisz zainstalować dodatek, naprawić system albo kliknąć coś, żeby urządzenie znowu działało - choć działa bez żadnego problemu.

Właśnie mogłeś trafić na efekt złośliwego przekierowania. Czasem siedzi ono w plikach WordPressa, czasem - rzadziej, ale widziałem takie przypadki - w regułach serwera, np. w .htaccess, Apache albo Nginx.

I teraz robi się ciekawie. Ty, jako właściciel strony, możesz nie zobaczyć nic podejrzanego.

Bo przekierowanie może działać tylko dla Googlebota, tylko dla wybranych adresów IP, tylko dla użytkowników mobilnych albo wyłącznie dla nowych odwiedzających.

I właśnie dlatego takie infekcje bywają trudne do wykrycia - strona dla Ciebie wygląda normalnie, a 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ę tygodniami, a czasem miesiącami. Problem może przyjmować różne formy: od spam injection (dziwne tytuły i meta), przez cloaking (Google widzi coś innego niż Ty), po rogue pages, czyli podstrony, których nigdy nie tworzyłeś.

Ty widzisz wszystko normalnie. Wchodzisz na stronę - wygląda dobrze. Tytuł się zgadza.  Treść działa. Na pierwszy rzut oka nic się nie dzieje.

Dopiero sprawdzasz swoją stronę w Google… i widzisz coś, czego nie powinno tam być.

Zamiast normalnego wyniku pojawiają się dziwne znaki, obce znaki pisma, spamowe frazy albo tytuły, których nigdy nie dodawałeś. To silny sygnał, że mogło dojść do infekcji.

To często efekt malware, które pokazuje jedną wersję strony Tobie, a inną robotom wyszukiwarek. Innymi słowy - Ty widzisz porządek, a wyszukiwarki spam.

I to jest wyjątkowo groźne, bo zanim to zauważysz, szkoda może już dotyczyć widoczności strony, indeksacji, a czasem nawet reputacji domeny.

To nie zawsze Google pokazuje błąd - czasem pokazuje dokładnie to, co malware chciał mu pokazać.

Jak sprawdzić czy moja domena nie została zhackowana?

Sprawdź wyniki wyszukiwania, mapę strony oraz raport Security Issues w Google Search Console.

Wykonaj też: site:twojadomena.pl

To pokaże wszystkie zaindeksowane strony.

Szukaj adresów:

  • których nie tworzyłeś,
  • z losowymi aliasami,
  • w obcych językach,
  • dotyczących hazardu, leków albo phishingu.

To często pierwszy moment, kiedy infekcja wychodzi na jaw.

Nowy, niezidentyfikowany administrator witryny

Wchodzisz do panelu WordPressa i widzisz coś, czego nie powinno tam być.

Nowe podstrony. Nowe wpisy. Nowi użytkownicy.

I 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, często z podejrzanymi adresami e-mail, losowymi nazwami albo schematami, które od razu wyglądają jak spam.

To bardzo poważny sygnał. Bo jeśli ktoś dodał nowe konto administracyjne, mógł zostawić sobie trwały dostęp do strony nawet po zmianie hasła.

I ważne nie zawsze oznacza to wyłącznie lukę na serwerze.

Problem może wynikać również z przejętych danych logowania, zainfekowanego komputera, z którego logujesz się do WordPressa, albo malware, które wykorzystało aktywną sesję administratora.

W praktyce oznacza to jedno: Nawet jeśli strona wygląda normalnie, ktoś może już mieć dostęp do jej zaplecza.

Szczególnie sprawdź użytkowników, którym przypisano rolę Administrator, oraz daty ich utworzenia.

Podejrzane pliki i cron jobs i mass mailing

O tych problemach często dowiadujesz się nie z WordPressa, tylko od hostingu i zwykle nie jest to wiadomość, którą chcesz dostać.

Może to być informacja o zawieszeniu usług, wykrytym malware, zablokowanym koncie pocztowym wysyłającym spam albo automatycznej zmianie nazw zainfekowanych plików, np. z dopiskiem VIRUS.

To już nie są subtelne sygnały, zwykle oznacza to, że problem zaszedł dalej.

W jednym z przypadków, który opisuję szerzej tutaj, infekcja nie ograniczała się do plików.

Włamywacz dodał także wpis do cron, który po częściowym usunięciu wirusa przywracał malware ponownie. Czyli pozornie czyścisz stronę, a infekcja powraca 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.

Dodatkowo osobnym sygnałem alarmowym może być mass mailing - sytuacja, w której z hostingu lub kont pocztowych powiązanych z domeną wychodzi spam, choć niczego nie wysyłałeś.

I jeszcze jedna ważna rzecz: nie zawsze dostaniesz od usługodawcy pełny obraz od razu. Najpierw możesz dostać powiadomienie o wirusie a dopiero później wyjdzie, że problem dotyczył także crona, poczty albo innych mechanizmów utrzymujących infekcję.

A to robi dużą różnicę przy czyszczeniu.

Policjant z kreskówki trzymający rękę, aby się zatrzymać, stojący obok czerwonego diamentowego znaku z napisem Malware, z dużym żółtym okręgiem w tle.

Co zrobić od razu po wykryciu wirusa/problemu

Jeśli podejrzewasz infekcję, nie działaj chaotycznie.

Największy błąd to to rozpoczęcie przypadkowego usuwania plików, aktualizacji albo przywracania backupu bez sprawdzenia, skąd problem się wziął.

Najpierw wykonaj podstawowe kroki zabezpieczające.

Przeskanuj własny komputer

Zacznij od urządzenia, z którego logujesz się do WordPressa, hostingu, FTP i poczty.
Jeśli źródłem problemu jest zainfekowany komputer Twój albo pracownika, kolejne działania mogą okazać się bezcelowe - bo przy odzyskiwaniu możesz ponownie wprowadzić zagrożenie.

Zmień wszystkie hasła -  nie tylko do WordPressa, ale także do 

  1. panelu hostingu,
  2. FTP / SFTP,
  3. bazy danych (jeśli to możliwe),
  4. kont pocztowych,
  5. wszystkich kont administracyjneych w WordPress.

Dodatkowo jeśli podejrzane konta istnieją - usuń je.

Warto też od razu dołożyć dodatkową warstwę ochrony logowania.

Sprawdź backupy (kopie zapasowe) przed przywróceniem

Jeśli masz kopie zapasowe, nie zakładaj automatycznie, że są czyste.

Sprawdź:

  • z kiedy pochodzą,
  • czy infekcja nie istniała już w backupie,
  • i czy przywrócenie nie usunie ważnych zmian, np. nowych wpisów, zamówień lub danych klientów.

Dopiero potem rozpocznij odzyskiwanie.

Sprawdź, czy wirus nie ma mechanizmu powrotu

To często pomijany krok.

Zanim uznasz problem za rozwiązany, sprawdź:

  • cron jobs,
  • nieznane pliki,
  • reguły .htaccess,
  • zadania wysyłające spam,
  • oraz mechanizmy, które mogą przywracać infekcję.

Inaczej możesz usunąć wirusa tylko na chwilę. Problem może być trudniejszy, bo backdoor nie zawsze działa od razu - może pozostawać uśpiony i aktywować się później.

Sprawdź ostatnio aktualizowane wtyczki

Nie zakładaj, że problem wynika wyłącznie z zaniedbania po Twojej stronie.

Zdarzają się także ataki typu supply chain, gdzie złośliwy kod trafia do legalnych aktualizacji wtyczek po zmianie właściciela projektu. Niedawny przypadek przejęcia kilkudziesięciu pluginów WordPress pokazał, że takie ryzyko nie jest teoretyczne. 

Nie każda zainfekowana wtyczka wygląda podejrzanie. Czasem wygląda dokładnie tak, jak zaufana aktualizacja.

Na żółtym tle w kształcie tarczy znajduje się rysunkowy kosz na śmieci z czerwonym telefonem o oczach w kształcie litery X w środku i czterema czarnymi workami na śmieci wokół niego. Obraz sugeruje wyrzucenie lub usunięcie telefonu.

Jak usunąć wirusa z WordPress krok po kroku.

Usunięcie wirusa rzadko kończy się na skasowaniu jednego pliku. To zwykle proces wieloetapowy. I warto działać ostrożnie, bo poza samą infekcją jest jeszcze drugie ryzyko - utrata danych.

Problem może nie dotyczyć wyłącznie plików WordPressa. Infekcja może obejmować także pliki motywu, wtyczki, katalog uploads, bazę danych, a czasem również mechanizmy przywracające malware, np. cron jobs.

Krok 1. Zacznij od podstawowych plików (core WordPress) 

Najprostszy punkt startowy to porównanie plików WordPressa z czystą wersją tej samej wersji systemu.

Jeśli pliki core zostały zmodyfikowane, można je zastąpić czystymi odpowiednikami.

Szczególnej ostrożności wymagają:

  • wp-content/uploads
  • własne modyfikacje
  • pliki konfiguracyjne, np. wp-config.php

To miejsca, gdzie infekcja może się ukrywać - ale też gdzie mogą znajdować się ważne dane.

Krok 2. Sprawdź i usuń podejrzane wtyczki

Jeśli podejrzenie dotyczy konkretnej wtyczki, usuń ją - szczególnie jeśli:

  • nie jest krytyczna dla działania strony,
  • nie jest już rozwijana,
  • została niedawno przejęta lub budzi wątpliwości,
  • albo mogła być źródłem ataku.

W niektórych przypadkach sama dezaktywacja nie wystarcza.

Wtyczkę trzeba usunąć i zastąpić bezpiecznym odpowiednikiem.

Krok 3. Sprawdź bazę danych

Infekcja może nie ograniczać się do plików złośliwy kod może znajdować się także w bazie danych, np. w treści wpisów, opcjach WordPressa, przekierowaniach, podejrzanych wpisach albo mechanizmach przywracających infekcję.

To szczególnie ważne, jeśli:

  • wirus wraca po czyszczeniu,
  • pojawia się spam SEO,
  • widzisz przekierowania mimo podmiany plików,
  • albo problem występuje nadal po przywróceniu backupu.

W takiej sytuacji samo czyszczenie plików może nie wystarczyć trzeba usunąć informacje z bazy przejrzeć treści stron i zobaczyć czy nie są one zmienione aby pobierać zagrożenie na nowo.

Krok 4. Sprawdź cron i reinfekcję

Sprawdź, czy nie ma podejrzanych wpisów w cron, czyli cyklicznych zadaniach wykonywanych automatycznie przez serwer lub WordPress.

To ważne, bo właśnie tam może ukrywać się mechanizm przywracający infekcję.

Taki wpis może:

  • odtwarzać usunięty malware,
  • uruchamiać spam SEO,
  • wysyłać mass mailing,
  • albo pobierać złośliwy kod ponownie.

I to jest moment, w którym wiele osób myśli, że wirus został usunięty… a on po prostu czeka na kolejny cykl wykonania. 

Krok 5. Zweryfikuj indeks Google po czyszczeniu

Usunięcie malware nie oznacza, że problem zniknął z wyszukiwarki.

Sprawdź w Google Search Console:

  • jak strona wygląda po zmianach,
  • czy zniknęły podejrzane podstrony,
  • czy nie ma komunikatów w Security Issues,
  • oraz czy indeks nie pokazuje nadal spamu.

Dodaj ważne adresy do ponownego zaindeksowania. Jeśli domena została oznaczona ostrzeżeniem lub blokadą, możesz także złożyć prośbę o ponowną weryfikację.

Dopiero wtedy można uznać proces za domknięty.

Strona działa?

To jeszcze nie znaczy, że problem zniknął.

Jednym z częstszych błędów po czyszczeniu jest założenie, że brak widocznych objawów oznacza koniec infekcji. 

Nie zawsze. Żeby zmniejszyć ryzyko nawrotu, warto wykonać kilka dodatkowych kroków.

Monitoruj zmiany na stronie i użytkownikach

Obserwuj:

  • nowe pliki,
  • zmiany w użytkownikach,
  • nowe wpisy lub podstrony,
  • nieautoryzowane działania w panelu.

Warto sprawdzić także, czy nie przeoczyłeś podejrzanego konta administracyjnego.

Czasem problem nie siedzi już w plikach, tylko w uprawnieniach.

Wykonaj dodatkowy skan malware

Po czyszczeniu dobrze zrobić dodatkową weryfikację skanerem malware, np. zewnętrznym narzędziem albo wtyczką bezpieczeństwa.

To nie daje gwarancji, ale może pomóc wychwycić rzeczy, które przeoczyłeś.

Tymczasowo włącz logowanie działań w panelu

Na kilka dni warto uruchomić rejestrowanie aktywności administratorów i użytkowników.

To bywa zasobożerne, więc nie musi działać stale.

Ale po incydencie może pomóc wykryć, czy ktoś nadal wykonuje podejrzane działania od środka. To bardzo praktyczny krok.

Sprawdź ponownie cron

Tak, jeszcze raz. Jeśli wcześniej był element reinfekcji, to właśnie tu warto potwierdzić, że nie zostały podejrzane wpisy, które mogą uruchomić problem ponownie.

Poproś hosting o dodatkowy skan

To często pomijany krok. A usługodawca może widzieć rzeczy, których Ty nie widzisz:

  • ruch wychodzący,
  • mass mailing,
  • procesy serwera,
  • wykryte sygnatury malware.

To może być bardzo dobra druga opinia po czyszczeniu.

Na koniec sprawdź Google, ale nie oczekuj efektu od razu

Jeśli miałeś do czynienia ze spam SEO, możesz ponownie wykonać site:twojadomena.pl i sprawdzić, jak wyglądają wyniki.

Dlatego zamiast opierać się wyłącznie na site:, warto dodatkowo:

  • sprawdzić mapę witryny i wysłać ją ponownie,
  • zweryfikować, czy nie ma w niej podejrzanych adresów,
  • przejrzeć tytuły i meta description innym narzędziem,
  • oraz sprawdzić, czy problem nie pojawia się ponownie z czasem.

To ostatnie jest ważne. Bo po incydencie liczy się nie tylko to, czy wirus zniknął dziś. Ale czy nie wróci jutro.

Usunięcie wirusa to dopiero połowa roboty. Jeśli chcesz ograniczyć ryzyko kolejnego włamania, zobacz mój poradnik o zabezpieczaniu WordPressa po incydencie.

FAQ

Czy da się samodzielnie usunąć wirusa z WordPress?

Tak, ale zależy od rodzaju infekcji. Prostsze przypadki można usunąć samodzielnie, bardziej zaawansowane — szczególnie z reinfekcją, spam SEO lub backdoorami — często wymagają głębszej analizy.

Dlaczego wirus wraca po usunięciu?

Częstą przyczyną jest pozostawiony backdoor, wpis w cron, zainfekowana baza danych albo nieusunięte źródło ataku.

Czy przywrócenie backupu usuwa wirusa?

Nie zawsze. Jeśli kopia zapasowa powstała już po infekcji, może zawierać ten sam problem.

Jak sprawdzić, czy Google nadal widzi spam?

Sprawdź Google Search Console, sitemapę oraz wyniki site:twojadomena.pl, pamiętając, że indeks nie aktualizuje się od razu.

Adam Anlauf
Adam Anlauf

CEO

O autorze.

Od lat związany z szeroko rozumianą informatyką. Pierwszą stronę stworzyłem w liceum, za co otrzymałem wyróżnienie.

Ciągle uczę się, aby dorównać tempu rozwoju nowoczesnych technologii łącząc je z wiedzą o psychologii aby zwiększać skuteczność stron i aplikacji internetowych.