Pytanie, jak usunąć wirusa z WordPressa, właściciel witryny zadaje sobie zwykle w najgorszym możliwym momencie: gdy przeglądarka wyświetla czerwony ekran ostrzegawczy, a ruch organiczny spada o 80% w ciągu doby. Odpowiedź na to, jak usunąć wirusa z WordPressa, nie sprowadza się do kliknięcia jednego przycisku w panelu administracyjnym, ponieważ infekcja niemal zawsze obejmuje kilka warstw jednocześnie: pliki motywu, katalog wp-content/uploads, tabelę wp_options w bazie danych oraz konta z uprawnieniami administratora. Złośliwy kod praktycznie zawsze zostawia furtkę w postaci backdoora ukrytego w pliku wyglądającym niewinnie — na przykład wp-config-sample.php albo pozornie pustej grafice .ico. Ten przewodnik prowadzi przez pełny proces: od diagnozy i izolacji, przez czyszczenie plików oraz bazy, aż po utwardzenie serwera, domeny i certyfikatów. Każdy etap opisano tak, aby dało się go wykonać samodzielnie, bez zlecania audytu za 1500–3000 zł zewnętrznej agencji.
Jak rozpoznać, że WordPress złapał infekcję
Pierwszym sygnałem jest zmiana zachowania strony bez Twojej ingerencji: przekierowania na domeny farmaceutyczne lub kasynowe, nowe pozycje w menu, dopisane linki w stopce albo pliki PHP z losowymi nazwami w katalogu wp-includes. Równolegle hosting raportuje skokowe zużycie CPU, bo zainfekowana witryna rozsyła spam i obciąża kolejkę pocztową serwera.
Drugi zestaw objawów widać w Google Search Console. Sekcja „Problemy dotyczące bezpieczeństwa” pokazuje komunikat o zhakowanej treści, a w indeksie pojawiają się adresy URL, których nigdy nie tworzyłeś — typowo /wp-content/uploads/repliki-zegarkow/ z tysiącami podstron o produktach z zupełnie innej branży niż Twoja. Liczba zaindeksowanych URL potrafi wzrosnąć z 200 do 40 000.
Trzeci trop stanowią logi serwera. W pliku access.log szukaj żądań POST kierowanych do plików, które nie powinny ich przyjmować, oraz wpisów z jednego adresu IP powtarzających się co kilka sekund. Porównaj też sumy kontrolne plików rdzenia — wtyczki Wordfence, Sucuri Security czy iThemes Security wykonują takie skanowanie w kilkanaście sekund.
Objawy, których nie widać w przeglądarce
Część infekcji ukrywa się przed zalogowanym administratorem i serwuje złośliwy kod wyłącznie robotom Google albo użytkownikom mobilnym. Otwórz witrynę w trybie incognito, następnie przez zewnętrzne proxy i narzędzie „Sprawdzenie adresu URL”. Jeśli renderowany kod różni się od tego, co widzisz po zalogowaniu, masz do czynienia z cloakingiem i infekcja jest aktywna.
Jak usunąć wirusa z WordPressa krok po kroku
Zacznij od pełnej kopii zapasowej — również zainfekowanej. Będzie potrzebna jako materiał dowodowy oraz źródło treści, gdyby czyszczenie poszło za daleko. Następnie włącz tryb konserwacji i zmień hasła: do panelu WordPress, do bazy danych, do FTP/SFTP oraz do panelu hostingowego. Bez tego kroku atakujący wraca w ciągu godziny.
Drugi etap to podmiana rdzenia. Pobierz czystą paczkę WordPressa i nadpisz katalogi wp-admin oraz wp-includes, zostawiając wyłącznie wp-content i wp-config.php. Wtyczki i motywy zainstaluj ponownie z oficjalnego repozytorium lub od autora — nigdy z kopii z serwera. Motywy i dodatki pobrane z pirackich „paczek GPL” to najczęstszy wektor zakażenia w polskich realiach.
Trzeci etap dotyczy bazy danych. Przeszukaj tabele pod kątem ciągów base64_decode, eval(, gzinflate oraz wpisów w wp_options o nazwach klasy „wp_cache_” z długim, zaszyfrowanym contentem. Skontroluj tabelę wp_users — każde konto administratora, którego nie rozpoznajesz, usuwaj natychmiast, a pozostałym wymuś reset hasła i włącz uwierzytelnianie dwuskładnikowe.
Ręczne czyszczenie plików i bazy danych
Gdy dostajesz się do serwera przez SSH, praca idzie znacznie szybciej niż przez menedżer plików. Poniższa lista obejmuje polecenia i kontrole, które w praktyce wyłapują większość backdoorów pozostawionych przez automatyczne botnety:
- Wyszukaj pliki zmodyfikowane w ciągu ostatnich siedmiu dni:
find . -type f -mtime -7 -name "*.php". - Sprawdź katalog uploads pod kątem plików wykonywalnych — grafiki nie powinny mieć rozszerzenia .php ani .phtml.
- Zweryfikuj plik .htaccess w katalogu głównym i w uploads; typowy wpis szkodliwy zawiera dyrektywę RewriteRule kierującą ruch z Google na obcy adres.
- Porównaj wp-config.php z wersją wzorcową — dopisane linie z auto_prepend_file to klasyczny mechanizm ładowania backdoora.
- Usuń nieużywane motywy i wtyczki; nieaktywny, nieaktualizowany dodatek nadal jest wykonywalny przez bezpośrednie odwołanie do jego pliku.
Rola hostingu w usuwaniu i zapobieganiu infekcjom
Środowisko serwerowe decyduje, czy wirus rozejdzie się na jedną stronę, czy na wszystkie konta w katalogu domowym. Odpowiadając na pytanie, jak wybrać hosting pod WordPress, kieruj się trzema parametrami: izolacją kont, wersją PHP i polityką kopii zapasowych. Dostawca, który trzyma backupy przez 30 dni i pozwala je przywrócić samodzielnie, oszczędza dziesiątki godzin pracy.
Kolejna praktyczna kwestia to czym różni się VPS od hostingu współdzielonego. W usłudze współdzielonej zasoby procesora i pamięci dzielisz z setkami klientów, a konfiguracja PHP jest sztywna. VPS daje własne zasoby, root, możliwość instalacji ModSecurity oraz skanera ClamAV, ale wymaga administracji lub wykupienia opieki technicznej za mniej więcej 150–400 zł miesięcznie.
| Kryterium | Hosting współdzielony | VPS |
|---|---|---|
| Koszt roczny | ok. 100–300 zł | ok. 500–1800 zł |
| Izolacja od sąsiadów | ograniczona | pełna |
| Własny firewall (WAF) | zwykle brak | tak |
| Wymagana wiedza techniczna | niska | średnia lub wysoka |
Jeżeli dostawca ignoruje zgłoszenia albo blokuje konto zamiast pomóc, pozostaje migracja. Pytanie, jak przenieść stronę na inny hosting, ma prostą odpowiedź: wyczyść witrynę lokalnie, przenieś tylko zweryfikowane pliki i bazę, przetestuj kopię na adresie tymczasowym, a dopiero potem przełącz ruch. Kolejność ma znaczenie — migracja zainfekowanych plików przenosi problem razem z treścią.

Domena, DNS i przekierowania po incydencie
Po wyczyszczeniu plików zajmij się warstwą adresową. Sprawdź, czy dane rejestracyjne nie zostały zmienione — ustalenie, jak sprawdzić, kto jest właścicielem domeny, sprowadza się do zapytania WHOIS lub RDAP w panelu rejestratora. Jeśli w rekordach widnieje obcy e-mail administracyjny, zgłoś przejęcie domeny rejestratorowi tego samego dnia.
Równie ważny jest termin ważności. Wiedza o tym, jak przedłużyć domenę po wygaśnięciu, ratuje projekty w okresie kwarantanny: większość rejestratorów utrzymuje adres przez 30 dni po terminie, a wykup w fazie redemption kosztuje zwykle 200–400 zł zamiast standardowych 60–120 zł rocznie. Włącz automatyczne odnawianie i alert kalendarzowy na 45 dni przed datą.
Trzeci obszar to strefa DNS. Ustalając, jak skonfigurować rekordy DNS domeny, zweryfikuj rekordy A, MX, TXT (SPF, DKIM, DMARC) oraz wszystkie subdomeny. Atakujący często dopisuje subdomenę typu shop.twojadomena.pl kierującą na obcy serwer. Osobne pytanie, co to jest rekord CNAME, ma tu praktyczne znaczenie: to alias wskazujący jedną nazwę na drugą, wykorzystywany przez CDN i narzędzia pocztowe — i chętnie nadużywany przez włamywaczy.
Na koniec uporządkuj adresy, które zaindeksował Google. Rozwiązanie kwestii, jak ustawić przekierowanie 301 w htaccess, polega na dodaniu reguły Redirect 301 /stary-adres/ https://twojadomena.pl/nowy-adres/ albo dyrektywy RewriteRule dla całych wzorców. Śmieciowe URL-e stworzone przez wirusa lepiej zwracać z kodem 410, bo przyspiesza to ich usunięcie z indeksu.
SSL, sieć lokalna i profilaktyka na przyszłość
Szyfrowanie transmisji chroni sesję administratora przed przechwyceniem. Pytanie, jak zainstalować certyfikat SSL na serwerze, w panelach typu cPanel czy DirectAdmin rozwiązuje przycisk uruchamiający AutoSSL — certyfikat wystawia się w kilka minut i odnawia automatycznie co 90 dni. Po instalacji wymuś HTTPS w konfiguracji serwera i ustaw nagłówek HSTS.
W większości projektów wystarczy darmowy certyfikat SSL Let’s Encrypt, który zapewnia dokładnie ten sam poziom szyfrowania co warianty płatne za 300–800 zł rocznie. Certyfikaty komercyjne z walidacją organizacji mają sens wyłącznie tam, gdzie liczy się gwarancja finansowa wystawcy — w sklepach obsługujących płatności o wysokich wartościach lub w usługach finansowych.
Bezpieczeństwo obejmuje też stanowisko pracy. Zanim uznasz, że witryna „muli”, ustal, jak sprawdzić prędkość internetu rzetelnie: test wykonuj kablem, przy wyłączonym VPN, na serwerze w Polsce i co najmniej trzykrotnie o różnych porach. Dopiero powtarzalny wynik pozwala oddzielić problem łącza od realnego obciążenia serwera przez złośliwe skrypty.
Jeśli pracujesz bezprzewodowo, sprawdź także, jak wzmocnić sygnał WiFi w domu — router ustawiony centralnie, pasmo 5 GHz, ręczny wybór kanału i system mesh za 400–900 zł eliminują zrywanie sesji w trakcie aktualizacji WordPressa. Przerwana aktualizacja rdzenia potrafi zostawić witrynę w stanie, który wygląda jak kolejna infekcja.
Jak długo trwa usunięcie wirusa z WordPressa?
Przy jednej stronie z kilkunastoma wtyczkami i dostępną kopią zapasową sprzed infekcji realny czas to 2–4 godziny: godzina na diagnozę i zabezpieczenie kopii, godzina na podmianę rdzenia oraz wtyczek, reszta na bazę danych i weryfikację. Sytuacja komplikuje się, gdy infekcja trwa od kilku tygodni, a backupy zostały już nadpisane zakażoną wersją — wtedy czyszczenie ręczne zajmuje jeden lub dwa dni robocze. Osobno licz czas reakcji Google: po zgłoszeniu prośby o ponowne sprawdzenie ostrzeżenie znika zwykle w ciągu 24–72 godzin, a pełny powrót pozycji organicznych trwa od dwóch do sześciu tygodni.
Czy darmowa wtyczka bezpieczeństwa wystarczy do ochrony strony?
Dla witryny wizytówkowej lub bloga darmowa wersja Wordfence albo Sucuri Security realnie podnosi poprzeczkę: skanuje pliki, blokuje ataki słownikowe i wysyła powiadomienia o zmianach w rdzeniu. Ograniczeniem jest opóźnienie w dostępie do reguł firewalla — w wariancie bezpłatnym sygnatury docierają zwykle miesiąc później niż do klientów płatnych, a właśnie ten miesiąc bywa krytyczny po ujawnieniu podatności w popularnej wtyczce. Sklep internetowy z realnym obrotem powinien łączyć trzy warstwy: wtyczkę, firewall po stronie serwera oraz niezależne kopie zapasowe trzymane poza hostingiem. Koszt takiego zestawu zaczyna się od około 400 zł rocznie i jest wielokrotnie niższy niż strata z tygodnia przestoju.
Co zrobić, gdy Google oznaczył stronę jako niebezpieczną?
Kolejność działań jest ściśle określona. Najpierw usuń przyczynę — dopóki złośliwy kod działa, ponowne zgłoszenie zakończy się odrzuceniem i kolejnym okresem oczekiwania. Następnie zaloguj się do Google Search Console, otwórz raport „Problemy dotyczące bezpieczeństwa”, rozwiń listę zainfekowanych adresów i sprawdź każdy z nich narzędziem do inspekcji URL, aby potwierdzić, że zwracają czystą treść. Dopiero wtedy kliknij prośbę o sprawdzenie i opisz konkretnie, co zostało naprawione: podmiana rdzenia, usunięcie backdoorów, reset haseł, wymiana kluczy w wp-config.php. Równolegle zgłoś domenę do usunięcia z bazy Google Safe Browsing oraz sprawdź jej status w narzędziach antywirusowych używanych przez przeglądarki i klientów pocztowych.

