Jak usunąć wirusa ze strony WordPress — krok po kroku
Skąd wiesz, że Twoja strona WordPress jest zainfekowana?
Zainfekowana strona WordPress często nie daje oczywistych sygnałów na pierwszy rzut oka — szczególnie gdy atak jest dobrze zakamuflowany. Jednak istnieje kilka charakterystycznych objawów, które powinny Cię zaniepokoić:
- Strona przekierowuje użytkowników na podejrzane witryny z reklamami lub phishingiem
- W wynikach Google pojawiają się dziwne podstrony — po japońsku, po rosyjsku lub z treściami dla dorosłych
- Google Search Console wyświetla ostrzeżenie o „złośliwym oprogramowaniu" lub „wyłudzaniu informacji"
- Hosting zawiesił konto z powodu rozsyłania spamu lub nadmiernego zużycia CPU
- W panelu WordPress pojawiają się nieznane konta administratora
- Pliki na serwerze zmieniły daty modyfikacji bez Twojej wiedzy
Nawet jedno z powyższych to sygnał alarmowy. Im szybciej zareagujesz, tym mniejsze straty — zarówno wizerunkowe, jak i w rankingu Google.
Krok 1 — Zrób kopię zapasową ZANIM cokolwiek usuniesz
Brzmi paradoksalnie, ale przed rozpoczęciem czyszczenia wykonaj pełną kopię zapasową serwera: wszystkich plików oraz bazy danych. Po pierwsze — dlatego, że po usunięciu pliku nie będziesz w stanie go przeanalizować. Po drugie — hosting może zablokować konto w każdej chwili, a wtedy dostęp do danych znika.
Skorzystaj z phpMyAdmin do eksportu bazy danych (format SQL), a z FTP/SFTP lub File Manager w panelu hostingu do pobrania plików. Jeśli masz dostęp do SSH, najszybszą metodą jest polecenie:
tar -czf backup_$(date +%F).tar.gz public_html/
Krok 2 — Sprawdź daty modyfikacji plików
Złośliwy kod trafia do pliku fizycznie na serwerze. Najszybszym sposobem na zlokalizowanie zainfekowanych plików jest sprawdzenie, które z nich były ostatnio modyfikowane — bez Twojej wiedzy.
W panelu SSH wydaj polecenie:
find public_html -name "*.php" -newer public_html/wp-config.php -ls
Otrzymasz listę wszystkich plików PHP zmodyfikowanych po dacie instalacji WordPressa. Każdy podejrzany plik wymaga ręcznego przejrzenia.
Krok 3 — Przeskanuj pliki pod kątem znanych sygnatur malware
Złośliwy kod PHP ma charakterystyczne wzorce. Szukaj wystąpień następujących funkcji i wzorców:
eval(base64_decode(...)) — zaciemniony, wykonywalny kod
system(), exec(), passthru() — wykonywanie poleceń systemowych
preg_replace('/./e', ...) — rzadko używana, często złośliwa
$_POST['cmd'], $_GET['x'] — web shelle przyjmujące polecenia przez URL
- Długie ciągi zakodowane w base64 (wyglądają jak losowe znaki A-Za-z0-9+/=)
W SSH szukasz tak:
grep -r "eval(base64_decode" public_html/ --include="*.php" -l
Krok 4 — Usuń złośliwy kod lub zainfekowane pliki
Mając listę zainfekowanych plików, masz dwie opcje:
- Podmień plikami z oryginalnej instalacji — jeśli zainfekowany jest np.
wp-login.php, pobierz czystą wersję z wordpress.org i zastąp plik.
- Wytnij złośliwy fragment — jeśli infekcja dotyczy Twojego motywu lub wtyczki, usuń tylko wstrzyknięty blok kodu. Uwaga: po usunięciu upewnij się, że plik nadal jest poprawny składniowo.
Nigdy nie usuwaj pliku wp-config.php — zawiera dane dostępowe do bazy danych.
Krok 5 — Sprawdź bazę danych
Malware coraz częściej wstrzykuje złośliwy kod do bazy danych — szczególnie do tabeli wp_options (opcja active_plugins, siteurl, home) oraz do treści wpisów w wp_posts.
W phpMyAdmin uruchom zapytania:
SELECT * FROM wp_options WHERE option_value LIKE '%eval(%';
SELECT * FROM wp_posts WHERE post_content LIKE '%<script%' AND post_status = 'publish';
Każdy wynik wymaga analizy — nie każdy <script> jest złośliwy, ale każdy powinien być znany i zamierzony.
Krok 6 — Zmień WSZYSTKIE hasła i klucze
Po oczyszczeniu strony bezwzględnie zmień:
- Hasło administratora WordPress (i wszystkich użytkowników z rolą Admin/Editor)
- Hasło do bazy danych w
wp-config.php i w panelu hostingu
- Hasło FTP/SFTP
- Klucze uwierzytelniające w
wp-config.php (sekcja AUTH_KEY, SECURE_AUTH_KEY itd.) — wygeneruj nowe na api.wordpress.org/secret-key
- Hasło do panelu hostingu / cPanel / Plesk
Krok 7 — Zaktualizuj WordPress, motywy i wtyczki
Zdecydowana większość włamań do WordPressa wynika z niezaktualizowanych wtyczek lub motywów. Po oczyszczeniu niezwłocznie zaktualizuj wszystko do najnowszych wersji. Jeśli jakaś wtyczka nie była aktualizowana od ponad roku — rozważ jej zamianę na aktywnie utrzymany odpowiednik.
Kiedy samodzielne czyszczenie nie wystarczy?
Opisana metoda sprawdza się przy prostych infekcjach. Jednak wiele zaawansowanych ataków zostawia wielowarstwowe backdoory — nawet po oczyszczeniu strony głównej wirus wraca, bo przeoczono ukryty skrypt w katalogu cache, w folderze motywu potomnego lub w bazie danych.
Jeśli po oczyszczeniu infekcja wraca po kilku dniach, to sygnał, że atak jest głębszy niż widać na powierzchni. W takiej sytuacji potrzebujesz profesjonalnej analizy logów serwera, audytu wszystkich plików oraz przeglądu konfiguracji serwera.
Właśnie to robimy w WebRatunek — usuwanie wirusów z WordPress. Dostarczamy pełny raport z opisem tego, co znaleźliśmy, co usunęliśmy i jak zabezpieczyliśmy stronę przed kolejnym atakiem. Z 30-dniową gwarancją.