Strona główna
Wordpress
Tutaj jesteś

Usuwanie malware WordPress – jak oczyścić stronę krok po kroku?

Usuwanie malware WordPress - jak oczyścić stronę krok po kroku?

Masz podejrzenie, że Twoja strona na WordPressie została zainfekowana i nie wiesz, od czego zacząć? W tym poradniku zobaczysz, jak krok po kroku wygląda usuwanie malware WordPress, od diagnozy aż po zgłoszenie strony do Google. Dzięki temu przeprowadzisz świadome czyszczenie, zamiast liczyć na przypadkowe wtyczki.

Jak rozpoznać infekcję malware na WordPressie?

Strona często długo działa zainfekowana, zanim właściciel zauważy cokolwiek podejrzanego. Atakujący ukrywają backdoory, wstrzykują skrypty w pliki PHP i bazę danych, modyfikują motywy oraz wtyczki. To sprawia, że same „magiczne skanery” online zwykle nie wystarczą, bo widzą tylko to, co jest dostępne z zewnątrz.

Na początek warto uważnie obserwować widoczne objawy. Dziwne przekierowania, wyskakujące reklamy, ostrzeżenia przeglądarki czy nagłe zniknięcie strony z Google to typowe sygnały, że na serwerze pojawiło się złośliwe oprogramowanie. Użytkownicy często jako pierwsi zgłaszają, że po wejściu na stronę widzą komunikat o zagrożeniu albo są przenoszeni na inne witryny.

Do wstępnej diagnozy używa się też narzędzi takich jak PHP Malware Scanner czy PHP-Antimalware-Scanner. Działają lokalnie na serwerze, więc mają dostęp do realnych plików, a nie tylko frontu strony. Wykrywają fragmenty z kodem typu eval, base64_decode, file_get_contents czy podejrzane ciągi wplątane w pliki motywów, wtyczek lub w katalog wp-content/uploads.

Jakie objawy powinny Cię zaniepokoić?

Nie zawsze od razu widać, że coś jest nie tak. Często dopiero suma kilku symptomów sugeruje infekcję. Im szybciej je wyłapiesz, tym mniejsze ryzyko, że Google oznaczy stronę jako niebezpieczną lub że dojdzie do wycieku danych.

Do najczęstszych sygnałów należą: wolne ładowanie strony, niechciane przekierowania, ostrzeżenia z Google Safe Browsing i nietypowe zmiany w plikach. Na serwerze mogą pojawić się nowe pliki PHP o losowych nazwach albo modyfikacje wp-config.php, functions.php czy plików w katalogu wp-includes.

Gdy zauważysz takie anomalie, sprawdź też logi serwera i uwagi użytkowników. Jeśli kilka osób zgłasza ten sam problem, na przykład przekierowanie na fałszywą stronę płatności, istnieje duże prawdopodobieństwo, że w kodzie działa aktywny backdoor lub phishing.

Jaką rolę odgrywają narzędzia skanujące?

Narzędzia online, jak Sucuri SiteCheck, potrafią wskazać część infekcji, ale nie widzą tego, co ukryte głęboko w strukturze serwera. Dlatego ważny jest skan bezpośrednio na hostingu. PHP Malware Scanner i PHP-Antimalware-Scanner analizują wszystkie pliki PHP, porównując je z bazą znanych wzorców malware i szukając fragmentów zakodowanych przy użyciu base64, gzuncompress, czy funkcji systemowych typu exec i system.

Po takim skanowaniu powstaje raport z listą plików podejrzanych. Nie każdy znaleziony element musi być infekcją, dlatego każdy wynik trzeba ręcznie przejrzeć. Wiele motywów i wtyczek używa nietypowych konstrukcji, które mogą wyglądać groźnie, ale są elementem normalnego działania. Ostateczną decyzję, co usunąć, podejmujesz dopiero po analizie kontekstu kodu.

Najgroźniejsze fragmenty malware bardzo często ukrywają się w zakodowanych ciągach z użyciem base64_decode, uruchamianych później przez eval lub assert.

Jak bezpiecznie odizolować i zbackupować zainfekowaną stronę?

Gdy diagnoza wskazuje na infekcję, kolejnym krokiem jest odseparowanie strony od użytkowników i zabezpieczenie obecnego stanu. Zanim usuniesz choćby jeden plik, potrzebujesz pełnej kopii zapasowej plików i bazy danych. Inaczej przy drobnym błędzie możesz stracić ważne treści bez możliwości przywrócenia.

Najprościej jest przełączyć stronę w tryb konserwacyjny. Można to zrobić dedykowaną wtyczką lub przez .htaccess, kierując ruch na prostą stronę maintenance.html. Administrator zachowuje wtedy dostęp z wybranego adresu IP, ale zwykli użytkownicy widzą komunikat o pracach technicznych, a nie działające malware.

Równolegle warto ograniczyć dostęp do panelu wp-admin, zwłaszcza jeśli podejrzewasz, że któryś z kont administratora został przejęty. Krótkotrwałe odcięcie części funkcji zmniejsza ryzyko, że atakujący będzie w tym czasie wprowadzał nowe modyfikacje w bazie danych lub plikach.

Jak wykonać pełny backup krok po kroku?

Backup robisz zawsze w dwóch płaszczyznach: pliki i baza danych. Obie części są tak samo istotne. W plikach znajduje się WordPress, motywy, wtyczki oraz uploady. W bazie danych – posty, strony, komentarze, ustawienia, użytkownicy.

Najbezpieczniej jest: pobrać wszystkie pliki po SFTP/FTP na lokalny komputer oraz wyeksportować bazę przez phpMyAdmin w formacie SQL. Dodatkowo możesz skorzystać z wtyczek typu UpdraftPlus czy Duplicator, ale warto, aby główna kopia była wykonana ręcznie, niezależnie od tych narzędzi.

Jeśli chcesz porównać podstawowe sposoby backupu, przydatne będzie proste zestawienie:

Metoda Zakres Kiedy używać
Ręczny FTP + phpMyAdmin Pełne pliki + pełna baza Awaria, infekcja, migracja na inny serwer
Wtyczka backupu Pliki i/lub baza wg ustawień Regularne, cykliczne kopie w tle
Backup hostingu Całe konto (kilka dni wstecz) Gdy własne kopie są niekompletne lub uszkodzone

Po wykonaniu kopii przechowuj ją w co najmniej dwóch lokalizacjach. Jedna powinna być poza serwerem produkcyjnym (np. dysk zewnętrzny lub chmura), żeby ewentualne kolejne ataki, awaria hostingu lub zaszyfrowanie danych nie pozbawiły Cię wszystkich backupów jednocześnie.

Jak krok po kroku usunąć malware z plików WordPressa?

Najpewniejszą metodą oczyszczenia rdzenia WordPressa jest usunięcie wszystkich jego plików i wgranie świeżej kopii z oficjalnej paczki. Zachowujesz jedynie katalog wp-content i plik wp-config.php, bo zawierają Twoje dane i konfigurację. Reszta może zostać bezpiecznie zastąpiona nową, czystą wersją.

Po połączeniu z serwerem przez FTP usuwasz katalogi wp-admin, wp-includes oraz wszystkie pliki PHP w katalogu głównym, oprócz wp-config.php. Następnie wypakowujesz pobraną paczkę WordPressa, wgrywasz na serwer foldery wp-admin i wp-includes oraz wszystkie pliki rdzeniowe. W ten sposób eliminujesz większość wstrzykniętych modyfikacji w silniku WordPress.

Kolejny etap to dokładna analiza katalogu wp-content. To tu najczęściej kryją się backdoory i zakodowane fragmenty malware. Motywy i wtyczki są łatwym celem, bo zawierają dużo niestandardowego kodu, który trudniej przejrzeć pobieżnie.

Jak oczyścić katalog wp-content?

W folderze themes zostaw tylko motyw, którego używasz. Resztę usuń i wgraj na nowo z oficjalnego repozytorium lub od zaufanego dostawcy. Pliki takie jak functions.php, header.php czy footer.php przejrzyj linijka po linijce. Szukaj zakodowanych fragmentów, użycia eval, base64_decode, podejrzanych skryptów JavaScript lub iframe prowadzących do obcych domen.

We wtyczkach usuń wszystko, czego nie rozpoznajesz lub co od dawna nie było aktualizowane. Potem pobierz ich aktualne wersje z oficjalnych źródeł i zainstaluj od zera. W plikach pluginów także szukaj funkcji często wykorzystywanych przez atakujących, takich jak exec, system, file_get_contents z zewnętrznymi adresami URL czy nietypowych plików w podkatalogach.

Szczególnie dokładnie przejrzyj katalog wp-content/uploads. Powinny tam być wyłącznie pliki graficzne, dokumenty i inne media. Pojawienie się tam plików PHP albo plików o losowych nazwach sugeruje, że ktoś przesłał i uruchomił złośliwy skrypt, często podszyty pod obrazek.

  • Przejrzenie całego wp-content/themes pod kątem obcego kodu,
  • Usunięcie i ponowne wgranie znanych motywów z zaufanego źródła,
  • Kontrola wp-content/plugins i odinstalowanie podejrzanych wtyczek,
  • Sprawdzenie wp-content/uploads i skasowanie plików PHP lub plików o dziwnych nazwach.

Ta lista ułatwia zapanowanie nad chaosem, gdy katalog wp-content jest rozbudowany i zawiera wiele motywów oraz pluginów. Każdy z tych kroków ogranicza potencjalne miejsca, w których może kryć się backdoor.

Jak oczyścić i naprawić bazę danych WordPress?

Wiele infekcji dotyczy nie tylko plików, ale też bazy danych. Złośliwe skrypty są wstrzykiwane do pól z treścią, komentarzy, a nawet do tabel z ustawieniami. W efekcie malware może być wykonywane z poziomu wpisu, widgetu, czy opcji ładowanych w panelu administracyjnym.

Do analizy bazy najczęściej wykorzystuje się phpMyAdmin. Najwięcej uwagi wymaga tabela wp_posts (post_content, post_excerpt, post_title), wp_comments oraz wp_options. To właśnie tam pojawiają się fragmenty typu <script>, <iframe>, zakodowane ciągi base64 albo linki do nieznanych domen.

Jeśli znajdziesz w treści wstrzyknięty kod, możesz go usunąć ręcznie lub – przy powtarzających się wzorcach – skorzystać z zapytań SQL z funkcją REPLACE. Przykładowo dla stałego iframe można zamienić cały fragment na pusty ciąg, czyszcząc jednocześnie wiele rekordów.

Jakie kroki wykonać w bazie danych?

Najpierw przejrzyj losowo kilka rekordów w tabelach, które zawierają treści. Potem skorzystaj z wyszukiwania w phpMyAdmin, wpisując fragmenty takie jak „<script”, „<iframe”, „base64_”. Gdy znajdziesz zainfekowane rekordy, zdecyduj, czy wystarczy usunięcie fragmentu, czy cały rekord (np. spamerski komentarz) powinien zniknąć.

Po zakończeniu czyszczenia warto użyć funkcji „Napraw tabelę” i „Optymalizuj tabelę”. Dzięki temu usuniesz skutki ewentualnych błędów, a baza będzie działała szybciej. Inne narzędzia skanujące, takie jak PHP-Antimalware-Scanner, mogą pomóc znaleźć nietypowe dane także w mniej oczywistych tabelach.

Regularne monitorowanie zawartości bazy, szczególnie po większych aktualizacjach lub zmianach konfiguracji, zmniejsza ryzyko, że złośliwe skrypty znów pozostaną niezauważone przez dłuższy czas.

W wielu atakach malware „przykleja się” do treści w bazie – usuń go tam, inaczej wróci nawet po podmianie wszystkich plików.

Jak zabezpieczyć WordPress po czyszczeniu malware?

Po usunięciu infekcji Twoja strona wreszcie działa poprawnie. Teraz trzeba sprawić, żeby atak nie wrócił w tej samej lub podobnej formie. Najważniejsze działania to aktualizacje, zmiana haseł, twardsza konfiguracja plików i ograniczenie informacji o serwisie.

Najpierw zaktualizuj rdzeń WordPressa, wtyczki i motywy. Stare wersje zawierają znane luki, które są publicznie opisane w bazach podatności. Atakujący skanują internet w poszukiwaniu konkretnych numerów wersji, dlatego brak aktualizacji to dla nich gotowe zaproszenie.

Konieczne jest też sprawdzenie, na jakiej wersji PHP działa serwer. Starsze wydania są narażone na błędy bezpieczeństwa i nie są już wspierane. W panelu hostingu ustaw przynajmniej PHP 8.x, o ile wszystkie używane motywy i wtyczki są z nim zgodne.

Jak wzmocnić konfigurację i dostęp?

Plik wp-config.php powinien mieć mocno ograniczone uprawnienia, na przykład 600. To tam znajdują się dane do bazy, prefiks tabel i ustawienia WordPressa. Możesz też przenieść część konfiguracji do osobnego pliku, a w wp-config.php zostawić tylko require_once z nową ścieżką, co utrudnia analizę konfiguracji napastnikom.

Dobrym krokiem jest wyłączenie edytora plików w panelu WordPress przez dodanie do wp-config.php wpisu DISALLOW_FILE_EDIT. Wtedy nawet jeśli ktoś przejmie konto administratora, nie zmieni plików motywu z poziomu przeglądarki. W .htaccess warto z kolei zablokować dostęp do plików wp-config, .htaccess, readme.html i części katalogów, które nie powinny być wyświetlane z zewnątrz.

Kolejny element to ukrycie wersji WordPressa i parametrów ?ver w linkach do skryptów i stylów. Fragmenty te łatwo usunąć, dopisując odpowiednie funkcje w pliku functions.php. Dzięki temu trudniej dobrać konkretne exploity pod znaną wersję systemu czy wtyczek.

  • Ustaw uprawnienia katalogów na 755, a plików na 644,
  • Zabezpiecz wp-content i uploads dodatkowymi regułami .htaccess,
  • Wyłącz XML-RPC, jeśli go nie używasz, filtrem xmlrpc_enabled,
  • Zablokuj automatyczne aktualizacje i wprowadzaj je świadomie, po testach.

Tak skonfigurowane środowisko jest mniej podatne na zmasowane próby ataków i skanowania. Atakujący napotykają więcej warstw zabezpieczeń, co zniechęca do dalszego szukania luk akurat w Twojej instalacji.

Jak zadbać o loginy, hasła i role użytkowników?

Po każdym incydencie bezpieczeństwa wszystkie hasła powinny zostać uznane za potencjalnie przechwycone. Dotyczy to nie tylko administratora WordPress, ale też kont FTP/SFTP, panelu hostingu i bazy danych. Każde z nich wymaga nowego, unikalnego hasła składającego się z dużych i małych liter, cyfr oraz znaków specjalnych.

W panelu Użytkownicy zmień hasła wszystkim osobom mającym dostęp do wp-admin. Dla bezpieczeństwa można też wymusić, by przy kolejnym logowaniu każdy użytkownik samodzielnie ustawił nowe hasło. Przydatne jest włączenie uwierzytelniania dwuskładnikowego 2FA, które znacząco utrudnia przejęcie kont nawet w razie wycieku samego hasła.

Rolę odgrywa też porządek w uprawnieniach. Użytkownicy, którzy nie muszą mieć dostępu do zaplecza, powinni być z niego wyłączeni. Zbyt wiele kont z rolą Administrator lub Redaktor to większa powierzchnia ataku i większe ryzyko, że któryś login zostanie wykorzystany.

Jak zweryfikować stronę i zgłosić ją do Google po infekcji?

Po zakończeniu czyszczenia i wdrożeniu zabezpieczeń trzeba upewnić się, że nie pozostały żadne aktywne elementy malware. Stronę warto ponownie przeskanować lokalnymi narzędziami, przejrzeć logi serwera i sprawdzić wynik w Google Safe Browsing. Czysty raport oznacza, że możesz przejść do kontaktu z Google.

Jeśli wcześniej w wynikach wyszukiwania pojawiały się ostrzeżenia o złośliwym oprogramowaniu, potrzebne będzie zgłoszenie w Google Search Console. Najpierw weryfikujesz własność strony, a później przechodzisz do sekcji „Bezpieczeństwo i ręczne działania”. Tam możesz złożyć prośbę o ponowną ocenę, opisując, jakie kroki zostały wykonane: usunięcie zainfekowanych plików, oczyszczenie bazy, aktualizacja WordPressa, zmiana haseł i wdrożenie dodatkowych zabezpieczeń.

Po kilku dniach Google informuje o wyniku weryfikacji. Jeśli wszystko jest w porządku, ostrzeżenia znikają, a strona stopniowo odzyskuje pozycje i zaufanie użytkowników. To dobry moment, by wprowadzić stałe monitorowanie – zarówno przez Search Console, jak i przez logi serwera oraz cykliczne skanowanie plików i bazy.

Świadome, krok po kroku przeprowadzone usuwanie malware z WordPressa pozwala nie tylko oczyścić obecną infekcję, ale też wyraźnie utrudnia kolejne ataki. Dzięki temu Twoja witryna dłużej pozostaje stabilna, a Ty masz realną kontrolę nad tym, co dzieje się na serwerze.

FAQ – najczęściej zadawane pytania

Jakie są typowe objawy infekcji malware na stronie WordPress?

Typowe sygnały infekcji malware to dziwne przekierowania, wyskakujące reklamy, ostrzeżenia przeglądarki, nagłe zniknięcie strony z Google, wolne ładowanie strony oraz nietypowe zmiany w plikach na serwerze, takie jak nowe pliki PHP o losowych nazwach lub modyfikacje wp-config.php.

Co należy zrobić przed rozpoczęciem usuwania malware z WordPressa?

Przed usunięciem choćby jednego pliku, należy odseparować stronę od użytkowników, przełączając ją w tryb konserwacyjny i zabezpieczyć obecny stan, tworząc pełną kopię zapasową plików i bazy danych. Administrator zachowuje wtedy dostęp z wybranego adresu IP, ale zwykli użytkownicy widzą komunikat o pracach technicznych.

Jak najpewniej oczyścić rdzeń WordPressa z malware?

Najpewniejszą metodą oczyszczenia rdzenia WordPressa jest usunięcie wszystkich jego plików (oprócz katalogu wp-content i pliku wp-config.php) i wgranie świeżej kopii z oficjalnej paczki. Następnie wypakowuje się pobraną paczkę WordPressa, wgrywa na serwer foldery wp-admin i wp-includes oraz wszystkie pliki rdzeniowe.

Jakie tabele w bazie danych WordPress są najbardziej narażone na infekcję malware i jak je oczyścić?

Najwięcej uwagi wymaga tabela wp_posts (post_content, post_excerpt, post_title), wp_comments oraz wp_options. Złośliwe skrypty można usunąć ręcznie lub, przy powtarzających się wzorcach, skorzystać z zapytań SQL z funkcją REPLACE w phpMyAdmin, zamieniając zainfekowany fragment na pusty ciąg.

Jakie są kluczowe działania zabezpieczające po usunięciu malware z WordPressa?

Po usunięciu infekcji kluczowe działania to aktualizacja rdzenia WordPressa, wtyczek i motywów, zmiana wszystkich haseł (administratora, FTP/SFTP, panelu hostingu i bazy danych), ustawienie nowszej wersji PHP (przynajmniej 8.x), wzmocnienie konfiguracji plików (np. uprawnienia 600 dla wp-config.php) oraz wyłączenie edytora plików w panelu WordPress.

Co należy zrobić, aby Google usunęło ostrzeżenia o malware po wyczyszczeniu strony?

Po zakończeniu czyszczenia i wdrożeniu zabezpieczeń należy ponownie przeskanować stronę lokalnymi narzędziami i sprawdzić wynik w Google Safe Browsing. Następnie w Google Search Console, w sekcji „Bezpieczeństwo i ręczne działania”, należy złożyć prośbę o ponowną ocenę, opisując wykonane kroki.

Redakcja webtuts.pl

Adrian Gorzałek – inżynier informatyki stosowanej z blisko 20-letnim doświadczeniem w branży IT. Specjalizuję się w optymalizacji wydajności serwerów, architekturze stron opartych na systemie WordPress oraz wdrażaniu nowoczesnych technologii webowych. W swojej pracy kładę nacisk na bezpieczeństwo sieciowe, szybkość przesyłu danych i stabilność infrastruktury hostingowej.

Może Cię również zainteresować

Potrzebujesz więcej informacji?