Objawy infekcji, jak rozpoznać, że WordPress ma malware
Zanim zaczniesz usuwać malware z WordPress, upewnij się, że masz do czynienia z infekcją, a nie błędem konfiguracji. Typowe sygnały alarmowe:
- Google Search Console zgłasza „Harmful content" lub strona jest oznaczona „This site may be hacked" w wynikach wyszukiwania.
- Hosting zawiesił konto z powodu rozsyłania spamu lub przekroczeń limitów CPU.
- Odwiedzający są przekierowywani na inne domeny (często przy wejściu z telefonu lub wyszukiwarki, nie bezpośrednio).
- W kodzie strony pojawiają się linki do obcych witryn, ukryte formularze lub nieznane skrypty.
- W panelu admin widać nowych, nieznanych użytkowników z rolą administratora.
- Plik
wp-config.phplub pliki motywu mają datę modyfikacji z dzisiejszego lub ostatniego tygodnia, bez Twojej wiedzy.
Krok 1, Zrób backup przed czymkolwiek innym
Nawet zainfekowany backup jest bezcenny. Zanim dotkniesz czegokolwiek, pobierz pełną kopię plików przez FTP (FileZilla, Cyberduck) i zrzut bazy danych przez phpMyAdmin (Eksportuj → Format SQL). Hosting często dostarcza własne snapshoty, sprawdź, czy masz aktualny. Bez backupu ryzykujesz utratę treści, jeśli czyszczenie pójdzie nie tak.
Krok 2, Jak usunąć malware z WordPress wtyczką skanującą
Najprostszy punkt startowy to zainstalowanie Wordfence Security lub MalCare i uruchomienie pełnego skanu. Wordfence porównuje Twoje pliki core z oficjalnym repozytorium WordPress i oznacza wszystkie modyfikacje. Kliknij Malware Scan → Start New Scan, a następnie przejrzyj listę podejrzanych plików.
Ważne ograniczenie: automatyczne skanery znają jedynie znane sygnatury. Niestandardowy backdoor wstrzyknięty przez atakującego może nie zostać wykryty, dlatego ten krok to punkt startowy, nie gwarancja czystości.
Krok 3, Ręczne porównanie z czystym core WordPress
Pobierz świeżą kopię WordPressa ze strony wordpress.org/download i porównaj zawartość folderów /wp-admin/ oraz /wp-includes/ ze swoją instalacją. Pliki w tych katalogach nie powinny być modyfikowane, każda zmiana to red flag. Możesz to sprawdzić poleceniem przez SSH:
diff -rq ~/wordpress-clean/wp-includes ~/public_html/wp-includes
Folder /wp-content/ jest wyjątkiem, tam mieszkają motywy i wtyczki, więc różnice są normalne. Skup się na /wp-admin/ i /wp-includes/.
Krok 4, Polowanie na podejrzane wzorce: eval, base64, obfuscation
Złośliwy kod najczęściej ukrywa się za funkcjami zaciemniającymi. Szukaj wzorców takich jak:
eval(base64_decode(...)), klasyczny sposób ukrywania kodu.eval(str_rot13(...)), rotacja znaków zamiast Base64.preg_replace('/.*?/e', ...), wykonywanie kodu przez wyrażenia regularne (PHP < 7).$GLOBALS[chr(...)][...], zmienne budowane dynamicznie ze znaków.- Długie, jednoliniowe ciągi losowych znaków w plikach
.phpmotywu lub wtyczek.
Przez SSH możesz przeszukać cały serwer jedną komendą:
grep -rl "eval(base64_decode" ~/public_html/ --include="*.php"
Każdy znaleziony plik przejrzyj ręcznie przed usunięciem, czasem legalne wtyczki używają base64 do enkodowania danych, nie do ukrywania kodu.
Krok 5, Czyszczenie bazy danych WordPress
Malware często siedzi w bazie, nie tylko w plikach. Sprawdź w phpMyAdmin tabele wp_options (pole option_value w wierszach siteurl, home, ale też widget_ i active_plugins) oraz wp_posts (szukaj wstrzykniętych linków lub skryptów w treści).
Szybkie zapytanie SQL do przeszukania całej tabeli wp_posts:
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%<script%'
OR post_content LIKE '%eval(%'
OR post_content LIKE '%base64_%';
Każdy wynik przejrzyj ręcznie, usuń tylko złośliwy fragment, nie cały wpis.
Krok 6, Zmiana haseł i soli WordPress
Po wyczyszczeniu plików i bazy koniecznie zmień wszystkie dane dostępowe:
- Hasła wszystkich użytkowników WordPress (szczególnie administratorów).
- Hasło do bazy danych w
wp-config.php, i to samo hasło w panelu hostingu. - Hasło do FTP/SFTP oraz do panelu hostingu.
- Klucze soli w
wp-config.php, wygeneruj nowe naapi.wordpress.org/secret-key/1.1/salt/i wklej w miejsce starych. Wszystkich aktywnych użytkowników wymusi to ponowne logowanie.
Krok 7, Aktualizacje i hardening
Skoro już masz czystą instalację, nie pozwól, by historia się powtórzyła. Przeczytaj szczegółowy poradnik: Jak zabezpieczyć WordPress w 2025 roku. Najważniejsze działania teraz:
- Zaktualizuj WordPress core, wszystkie wtyczki i motyw do najnowszych wersji.
- Usuń wszystkie nieaktywne motywy i wtyczki, nawet nieaktywne pliki mogą zawierać podatności.
- Ustaw uprawnienia plików: katalogi
755, pliki644, plikwp-config.php,600. - Zablokuj edycję plików z panelu WP: dodaj do
wp-config.phpliniędefine('DISALLOW_FILE_EDIT', true); - Włącz uwierzytelnianie dwuskładnikowe (2FA) dla kont administratorów.
- Ogranicz dostęp do
wp-adminpo IP lub przez reguły w.htaccess.
Dlaczego backdoor wraca, ograniczenia automatycznych narzędzi
Wielu właścicieli stron wykonuje pełen skan Wordfence, kasuje oznaczone pliki i odetchnie z ulgą, tylko po to, żeby tydzień później dostać kolejne ostrzeżenie od hostingu. Powód jest prosty: automatyczne skanery usuwają objawy, nie przyczynę.
Doświadczony atakujący umieszcza kilka backdoorów w różnych miejscach: w porzuconej wtyczce, w motywie dziecięcym, w tabeli wp_options jako zaszyfrowany serialized PHP, a czasem w pliku .htaccess jako reguła przekierowująca tylko ruch z botów Google. Skaner nie zna niestandardowych wzorców, więc zostawia przynajmniej jedno wejście otwarte. Przez to backdoor „wraca", a właściwie nigdy nie znikał.
Profesjonalne usuwanie malware z WordPress polega na ręcznej analizie każdego podejrzanego fragmentu kodu oraz na przeprowadzeniu audytu bezpieczeństwa WordPress, który mapuje wszystkie możliwe wektory ataku, zanim do nich dojdzie.
Kiedy lepiej zadzwonić do specjalisty
Samodzielne czyszczenie ma sens przy prostych infekcjach na dobrze znanych Ci instalacjach. Oddaj sprawę w ręce specjalisty, jeśli:
- Malware wraca po kilku dniach mimo czyszczenia, backdoor nadal istnieje.
- Strona rozsyła spam lub jest używana do ataków na innych, hosting może ją zablokować w każdej chwili.
- Google oznaczył witrynę jako niebezpieczną i musisz złożyć wniosek o przegląd.
- Nie masz dostępu do SSH, a infekcja jest głęboka, bez wiersza poleceń znajdziesz tylko ułamek złośliwego kodu.
- Strona zarabia i każda godzina przestoju to realna strata.
Zadzwoń do mnie, przeprowadzę bezpłatną diagnozę, powiem Ci uczciwie, co i jak długo zajmie, i zacznę działać w ciągu godziny. Numer: 577 020 415. Rozliczam co 15 minut, bez ukrytych opłat.