Jak usunąć wirusa z WordPressa? Kompletny poradnik techniczny
Usunięcie wirusa z WordPressa nie powinno polegać wyłącznie na uruchomieniu skanera i skasowaniu wykrytych plików. Skuteczne czyszczenie wymaga sprawdzenia plików systemowych, wtyczek, motywu, bazy danych, kont użytkowników, konfiguracji hostingu oraz innych stron działających na tym samym koncie.
Poniższa instrukcja jest przeznaczona dla osób posiadających doświadczenie w administracji WordPressem, bazą danych i serwerem. Błędne usunięcie pliku lub rekordu może spowodować utratę danych albo całkowite zatrzymanie strony.
Zanim rozpoczniesz
Przygotuj dostęp do panelu hostingowego, dostęp SFTP lub SSH, dostęp do bazy danych, kopię plików i bazy, możliwość sprawdzenia logów serwera, czysty komputer do zmiany haseł oraz listę ostatnich aktualizacji i zmian na stronie. Nie wykonuj czyszczenia bez kopii aktualnego stanu, nawet jeżeli strona jest zainfekowana.
Krok 1 — Ogranicz działanie strony
Jeżeli strona przekierowuje użytkowników, wyświetla złośliwe treści albo wyłudza dane, tymczasowo ogranicz jej dostępność. Możesz ustawić stronę techniczną, ograniczyć dostęp do wybranych adresów IP lub poprosić hosting o tymczasową izolację konta.
Zwykła wtyczka maintenance mode może nie zatrzymać złośliwego kodu wykonywanego poza WordPressem.
Krok 2 — Wykonaj pełną kopię
Zabezpiecz wszystkie pliki WordPressa, pełną bazę danych, pliki .htaccess, plik wp-config.php, konfigurację PHP, zadania cron, logi serwera, listę aktywnych wtyczek oraz listę użytkowników. Kopię przechowuj poza publicznym katalogiem strony.
Krok 3 — Zmień wszystkie dane dostępowe
Z bezpiecznego urządzenia zmień hasła do panelu hostingowego, SFTP i FTP, SSH, panelu WordPressa, bazy danych, skrzynek e-mail, rejestratora domeny oraz usług kopii zapasowej.
Po zmianie hasła bazy danych pamiętaj o aktualizacji danych w wp-config.php. Wymień również klucze bezpieczeństwa WordPressa, aby unieważnić istniejące sesje użytkowników.
Krok 4 — Sprawdź konta użytkowników
W panelu WordPressa oraz bezpośrednio w bazie danych sprawdź administratorów, adresy e-mail, daty utworzenia kont, przypisane role, konta o nietypowych nazwach oraz użytkowników niewidocznych w standardowym panelu.
Usuń konta, których pochodzenia nie można potwierdzić. Zmień hasła legalnych administratorów. Sprawdź także, czy wtyczka lub złośliwy kod nie tworzy użytkownika ponownie.
Krok 5 — Wymień pliki systemowe WordPressa
Pobierz czystą kopię WordPressa z oficjalnego źródła i zastąp katalogi wp-admin i wp-includes. W katalogu głównym zastąp standardowe pliki WordPressa, zachowując ostrożność w przypadku wp-config.php, .htaccess i plików weryfikacyjnych.
Nie nadpisuj automatycznie katalogu wp-content, ponieważ znajdują się w nim treści strony, motywy, wtyczki i pliki użytkowników.
Krok 6 — Przeinstaluj wtyczki
Najbezpieczniej jest usunąć pliki wtyczki i wgrać jej czystą wersję z oficjalnego lub potwierdzonego źródła. Sprawdź czy wszystkie wtyczki są potrzebne, czy nadal są rozwijane, czy pochodzą z legalnego źródła i czy mają znane problemy z bezpieczeństwem.
Usuń nieaktywne i nieużywane rozszerzenia. Szczególnie ryzykowne są tak zwane wtyczki i motywy nulled — pobrane z nieoficjalnych źródeł.
Krok 7 — Sprawdź aktywny motyw
Porównaj pliki motywu z czystą wersją producenta. Sprawdź szczególnie: functions.php, header.php, footer.php, pliki odpowiedzialne za przekierowania, dodatkowe pliki PHP, pliki JavaScript oraz katalogi z przypadkowymi nazwami.
W przypadku motywu potomnego sprawdź zarówno motyw główny, jak i child theme.
Krok 8 — Skontroluj katalog uploads
W katalogu wp-content/uploads sprawdź, czy nie znajdują się pliki PHP, pliki wykonywalne, ukryte katalogi, dodatkowe pliki .htaccess, pliki o losowych nazwach lub skrypty podszywające się pod obrazy.
Nie kasuj wszystkich plików PHP automatycznie. Niektóre legalne rozszerzenia mogą je tworzyć, choć wymaga to dokładnej weryfikacji.
Krok 9 — Sprawdź wp-config.php
Przejrzyj cały plik wp-config.php i szukaj kodu umieszczonego przed znacznikiem PHP, kodu dodanego na końcu pliku, funkcji dekodujących, odwołań do zewnętrznych domen, dodatkowych plików ładowanych poleceniem include lub require oraz nieznanych zmiennych i stałych.
Krok 10 — Sprawdź pliki .htaccess i konfigurację PHP
Infekcja może wykorzystywać przekierowania, reguły uruchamiające pliki PHP, automatyczne dołączanie złośliwego pliku lub zmianę obsługi rozszerzeń. Sprawdź .htaccess, .user.ini, php.ini oraz dodatkowe pliki .htaccess w podkatalogach.
Nie każda niestandardowa reguła jest złośliwa — może pochodzić z wtyczki cache, zabezpieczeń lub konfiguracji hostingu.
Krok 11 — Sprawdź mu-plugins i drop-ins
Często pomijane miejsca to katalog wp-content/mu-plugins oraz drop-iny takie jak object-cache.php, advanced-cache.php, db.php i sunrise.php. Pliki te mogą być ładowane automatycznie, nawet jeśli nie są widoczne na standardowej liście wtyczek.
Krok 12 — Sprawdź bazę danych
Wyszukaj podejrzane treści w tabeli opcji, treści wpisów i stron, widżetach, ustawieniach motywu, danych użytkowników, zadaniach cyklicznych oraz konfiguracji aktywnych wtyczek.
Zwróć uwagę na obce skrypty JavaScript, iframe, zakodowane ciągi, odwołania do nieznanych domen oraz spamerskie treści SEO. Nie wykonuj masowych operacji znajdź i zamień bez kopii bazy.
Krok 13 — Sprawdź zadania cron
WordPress i hosting mogą uruchamiać zadania automatyczne. Sprawdź WordPress Cron, zadania cron w panelu hostingowym, skrypty uruchamiane cyklicznie oraz zadania odtwarzające usunięte pliki.
Jeżeli malware pojawia się ponownie po kilku minutach lub godzinach, przyczyną może być aktywne zadanie cykliczne.
Krok 14 — Sprawdź inne strony na hostingu
Na tym samym koncie mogą znajdować się inne strony WordPress, instalacje Joomla, stare wersje strony, kopie testowe, nieużywane subdomeny lub katalogi archiwalne. Każda z nich może być źródłem ponownej infekcji — nie wystarczy oczyścić jednej domeny.
Krok 15 — Uruchom skaner bezpieczeństwa
Skaner może pomóc wykryć zmodyfikowane pliki systemowe, znane sygnatury malware, podejrzane adresy URL oraz niebezpieczne rozszerzenia. Nie traktuj wyniku skanera jako ostatecznego potwierdzenia — złośliwy kod może znajdować się w bazie, zadaniach cron lub konfiguracji serwera.
Krok 16 — Zaktualizuj i zabezpiecz stronę
Po oczyszczeniu: zaktualizuj WordPressa, wtyczki i motyw, usuń nieużywane elementy, włącz uwierzytelnianie dwuskładnikowe, ogranicz liczbę administratorów, zastosuj bezpieczne uprawnienia plików, skonfiguruj regularne kopie zapasowe i uruchom monitoring zmian plików.
Krok 17 — Przetestuj stronę
Sprawdź logowanie, formularze, wysyłkę wiadomości, działanie sklepu, płatności, panel administratora, wygląd na telefonie, błędy serwera, przekierowania oraz nowe pliki powstające po uruchomieniu strony. Monitoruj logi i daty modyfikacji plików przez kolejne dni.
Krok 18 — Poproś Google o ponowne sprawdzenie
Jeżeli strona była oznaczona jako niebezpieczna, sprawdź raport bezpieczeństwa, potwierdź usunięcie wszystkich wskazanych problemów, opisz wykonane działania i wyślij prośbę o ponowną weryfikację w Google Search Console. Nie wysyłaj zgłoszenia przed zakończeniem czyszczenia.
Dlaczego wirus może wrócić?
Najczęstsze przyczyny reinfekcji to pozostawiony backdoor, nieoczyszczona baza danych, zainfekowana druga strona na hostingu, przejęte konto FTP, podatna wtyczka, zadanie cron, nieznany administrator lub automatyczne przywracanie starej kopii. Powrót malware oznacza zwykle, że nie został usunięty cały mechanizm infekcji.
Kiedy nie czyścić strony samodzielnie?
Zleć profesjonalną pomoc, jeżeli strona jest sklepem internetowym, przechowuje dane klientów, hosting zablokował całe konto, infekcja powraca, nie masz pewnej kopii, nie rozpoznajesz większości plików, strona ma niestandardowy kod lub na hostingu znajduje się wiele instalacji.