
Jak wyczyścić zainfekowanego WordPressa? Kompletny przewodnik usuwania malware (2026)
Spis treści
“Twoja strona zawiera oprogramowanie reklamowe lub złośliwe”.
To zdanie, wyświetlane na czerwonym ekranie przeglądarki (Google Safe Browsing) lub w mailu od hostingu, jest koszmarem każdego właściciela strony. Infekcja WordPressa to nie tylko kwestia wizerunkowa. To ryzyko kradzieży danych klientów, utrata pozycji w Google (tzw. “Japanese Keyword Hack” lub przekierowania na strony hazardowe) i potencjalne zablokowanie konta hostingowego.
W roku 2026 ataki na WordPressa są w większości zautomatyzowane. Boty nie atakują Ciebie osobiście – one skanują sieć w poszukiwaniu nieaktualnych wtyczek, słabych haseł czy luk w motywach.
W tym artykule pokażę Ci profesjonalny, techniczny proces czyszczenia zainfekowanego WordPressa. Zapomnij o “wtyczkach do usuwania wirusów”, które często maskują problem. Pokażę Ci, jak zrobić to ręcznie, skutecznie i na poziomie serwera, używając SSH i WP-CLI.
Krok 0: Nie panikuj i Zrób Kopię (Tak, zainfekowaną!)
Zanim dotkniesz czegokolwiek, zrób kopię zapasową stanu obecnego. Dlaczego? Ponieważ w trakcie czyszczenia możesz przez pomyłkę usunąć krytyczny plik (np. zmodyfikowany functions.php, który zawierał kluczową funkcjonalność, a nie tylko wirusa).
Jeśli masz dostęp do SSH:
# Spakuj wszystkie pliki
tar -czf backup-infected-files_$(date +%F).tar.gz .
# Zrób zrzut bazy danych
wp db export backup-infected-db_$(date +%F).sql --allow-root
Krok 1: Wstępna Diagnoza (Metoda “na Grepa”)
Zanim zaczniesz wycinać, musisz wiedzieć, z czym walczysz. Malware w WordPressie często ukrywa się pod postacią zaciemnionego kodu (obfuscated code) wykorzystującego funkcje takie jak eval, base64_decode, czy gzinflate.
Oto lista przydatnych komend grep, które pozwolą Ci przeskanować pliki w poszukiwaniu podejrzanych ciągów znaków. Uruchom je w katalogu głównym strony.
Najczęstsze sygnatury malware
-
Szukanie funkcji
eval(bardzo rzadko używana legalnie w nowoczesnym kodzie):grep -rnwl './' -e 'eval(' -
Szukanie ukrytych ramek i skryptów wstrzykniętych w pliki PHP:
grep -rnwl './' -e '<script' --include=*.php grep -rnwl './' -e '<iframe' --include=*.php -
Szukanie “backdoorów” (często używane nazwy zmiennych w malware):
grep -rnwl './' -e 'bgeteam' grep -rnwl './' -e '3o' grep -rnwl './' -e '57h' -
Szukanie zakodowanych ciągów (Base64 + Rot13):
grep -rnwl './' -e 'base64_decode' grep -rnwl './' -e 'str_rot13'
Analiza wyników
Nie każdy wynik to wirus!
- Wtyczki takie jak Elementor czy Visual Composer mogą mieć
base64_decodew swoim kodzie. - Zwracaj uwagę na pliki w dziwnych lokalizacjach, np.
wp-content/uploads/2024/03/avatar.php. W folderzeuploadsnie powinno być żadnych plików PHP.
Aby znaleźć wszystkie pliki PHP w folderze uploads:
find ./wp-content/uploads -name "*.php"
Jeśli coś znajdziesz – na 99% jest to malware (chyba że masz bardzo specyficzną wtyczkę).
Krok 2: Opcja Nuklearna (Nadpisanie plików Core)
Ręczne usuwanie wirusa z plików rdzenia WordPressa (wp-admin, wp-includes) to syzyfowa praca. Najszybszą i najpewniejszą metodą jest zastąpienie wszystkich plików systemowych czystymi oryginałami.
To bezpieczny proces, jeśli nie modyfikowałeś ręcznie plików rdzenia (czego i tak nie powinieneś robić!).
Używając WP-CLI:
# Pobierz świeżą wersję WordPressa (zastępując pliki)
wp core download --force --skip-content --allow-root
Flaga --skip-content jest kluczowa – sprawia, że WP-CLI nie nadpisze Twojego folderu wp-content, w którym są Twoje zdjęcia, motywy i wtyczki.
Jeśli nie masz WP-CLI:
- Pobierz paczkę WordPress z wordpress.org.
- Rozpakuj ją lokalnie.
- Usuń z niej folder
wp-contentoraz plikwp-config-sample.php. - Wgraj resztę plików przez FTP, nadpisując wszystko na serwerze.
Krok 3: Czyszczenie wp-content
To tutaj zazwyczaj leży problem.
Wtyczki i Motywy
Jeśli to możliwe, usuń i zainstaluj ponownie wszystkie darmowe wtyczki. Wirusy często doklejają się do każdego pliku .js lub .php na serwerze.
# Reinstalacja wtyczki z repozytorium (np. contact-form-7)
wp plugin install contact-form-7 --force --allow-root
Dla płatnych wtyczek musisz pobrać czyste paczki od producenta i podmienić pliki przez FTP.
Sprawdź swój motyw. Jeśli używasz motywu potomnego (Child Theme), przejrzyj ręcznie functions.php i header.php. To ulubione miejsca dla złośliwego kodu.
Folder Uploads
Jak wspomniano wcześniej, folder mediów (wp-content/uploads) powinien zawierać tylko obrazy, PDF-y i dokumenty.
Radykalne czyszczenie (usuwa wszystkie skrypty PHP z uploads):
find ./wp-content/uploads -name "*.php" -delete
Uwaga: Sprawdź wcześniej listę (bez -delete), aby upewnić się, że nie usuwasz czegoś legalnego.
Krok 4: Baza Danych (Japanese Keyword Hack i Spam)
Infekcje często nie kończą się na plikach. Wirusy wstrzykują spamerskie linki do treści postów lub tworzą fałszywych administratorów.
Zaloguj się do bazy danych (phpMyAdmin lub wp db cli) i sprawdź:
-
Fałszywi administratorzy:
SELECT * FROM wp_users;Szukaj użytkowników, których nie rozpoznajesz, często z domenami
.ru,.cnlub losowymi ciągami znaków. Usuń ich natychmiast. -
SPAM w treści: Wirusy typu “Japanese Keyword Hack” wstrzykują tysiące stron z chińskimi/japońskimi znakami reklamującymi podróbki. Sprawdź tabelę
wp_posts:SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%'; SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%eval(%';
Jeśli Twoja strona nagle ma 50 000 nowych podstron w indeksie Google, musisz wyczyścić te wpisy z bazy, a następnie zgłosić mapę witryny do Google Search Console, aby przyspieszyć usunięcie śmieci z indeksu.
Krok 5: Pliki konfiguracyjne (wp-config.php i .htaccess)
Malware często modyfikuje te dwa kluczowe pliki.
-
wp-config.php: Otwórz go i sprawdź, czy nie ma tam dziwnych linii. Często dodawane są odwołania do plików tymczasowych:
include '\tmp\sess_dsf43...'; // PODEJRZANE!Porównaj swój plik z
wp-config-sample.php. Powinien zawierać tylko dane do bazy i definicje stałych. -
.htaccess: Wirusy często dodają tu reguły, które przekierowują ruch z wyszukiwarek (np. jeśli User-Agent to Googlebot) na strony ze złośliwym oprogramowaniem, podczas gdy Ty (wchodząc bezpośrednio) widzisz normalną stronę. Jeśli nie masz pewności, wygeneruj domyślny plik .htaccess WordPressa:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Krok 6: Po sprzątaniu - Zabezpieczenie (Hardening)
Wyczyściłeś stronę? Świetnie. Teraz zamknij drzwi, żeby włamywacz nie wrócił.
-
Zmień hasła:
- Do wszystkich kont Administratorów.
- Do bazy danych.
- Do FTP/SFTP.
-
Zmień klucze szyfrujące (Salts): To wyloguje wszystkich użytkowników. W edycji
wp-config.phppodmień sekcję kluczy na nowe, wygenerowane tutaj: https://api.wordpress.org/secret-key/1.1/salt/ Lub użyj WP-CLI:wp config shuffle-salts -
Zablokuj edycję plików z poziomu kokpitu: Dodaj do
wp-config.php:define( 'DISALLOW_FILE_EDIT', true );To zapobiega sytuacji, w której haker, który zdobędzie hasło administratora, może edytować pliki motywu/wtyczek bezpośrednio z panelu.
-
Wyłącz XML-RPC: Jeśli nie używasz aplikacji mobilnej WordPress lub Jetpacka, XML-RPC to tylko dziura w bezpieczeństwie (używana do ataków DDoS i Brute Force). Dodaj do
.htaccess:<Files xmlrpc.php> order deny,allow deny from all </Files>
Podsumowanie
Walka z malware to wyścig zbrojeń. Najlepszą ochroną nie jest jednak “magiczna wtyczka security”, ale higiena cyfrowa:
- Błyskawiczne aktualizacje WordPressa i wtyczek.
- Nieinstalowanie “nulled” (pirackich) wtyczek i motywów (to główne źródło infekcji).
- Posiadanie kopii zapasowej poza serwerem (np. w chmurze).
Jeśli czujesz, że techniczny aspekt Cię przerasta, lepiej zleć to specjalistom. Źle przeprowadzone czyszczenie może zostawić furtkę (backdoor), przez którą haker wróci po kilku dniach, a Ty stracisz kolejne pieniądze i zaufanie w oczach Google.