← Wróć do centrum problemów
10.07.2026 Bezpieczeństwo 20 wyświetleń

Złośliwy kod w WordPress po włamaniu: jak go znaleźć, usunąć i nie dopuścić do ponownego ataku

Po włamaniu do WordPressa złośliwy kod potrafi ukrywać się w plikach motywu, wtyczek, bazie danych i cronach. Sprawdź, jak rozpoznać infekcję, bezpiecznie ją usunąć i odzyskać kontrolę nad stroną.

ProblemZłośliwy kod w WordPress po włamaniu: jak go znaleźć, usunąć i nie dopuścić do ponownego ataku
Trudnośćśredni
Czas naprawy2–8 godzin, a przy złożonej infekcji dłużej
Ryzykowysokie
Wymagany backuptak, ale najpierw zabezpiecz kopię do analizy; nie nadpisuj jej czyszczeniem
Dla kogowłaściciele stron WordPress, administratorzy, osoby po włamaniu i po podejrzanym przekierowaniu lub ostrzeżeniu Google
Szybka odpowiedź

Jeśli WordPress został zhakowany, najpierw odizoluj stronę, zmień hasła, zrób kopię stanu awaryjnego i przeskanuj pliki, bazę danych oraz zadania cron. Następnie usuń backdoory, podmień core WordPressa, motywy i wtyczki z czystych źródeł, sprawdź konta administratorów, a na końcu włącz monitoring i zabezpieczenia. Jeśli infekcja wraca, nie wiesz skąd pochodzi albo sklep/strona zbiera dane klientów, zgłoś się do specjalisty.

Złośliwy kod w WordPress po włamaniu: jak go znaleźć, usunąć i nie dopuścić do ponownego ataku
Checklista przed naprawą
  • Czy strona została odizolowana od ruchu zewnętrznego?
  • Czy zabezpieczyłeś kopię awaryjną plików i bazy danych?
  • Czy zmieniono wszystkie hasła dostępu i tokeny?
  • Czy sprawdzono nieautoryzowane konta administratorów?
  • Czy podmieniono core WordPressa z czystego źródła?
  • Czy przeanalizowano motyw, wtyczki, .htaccess i wp-config.php?
  • Czy sprawdzono uploads i inne katalogi pod kątem plików PHP?
  • Czy przeszukano bazę danych pod kątem złośliwych wstrzyknięć?
  • Czy sprawdzono cron jobs i zadania automatyczne?
  • Czy ustalono możliwy wektor wejścia i wdrożono zabezpieczenia po naprawie?
Scenariusze naprawy Najczęstsze układy problemu i bezpieczniejsza droga działania

Widoczny objaw

ŹlePrzekierowanie, spam SEO, alert przeglądarki

DobrzeBrak przekierowań, czysty kod źródłowy, brak ostrzeżeń

Stan plików

ŹleLosowe zmiany, ukryte backdoory, obce pliki

DobrzeCzysty core, zaufane motywy i wtyczki, brak podejrzanych plików

Konta dostępu

ŹleNieznane konta, stare hasła, brak MFA

DobrzeZweryfikowani użytkownicy, nowe hasła, MFA aktywne

Baza danych

ŹleWstrzyknięte skrypty i ukryte domeny

DobrzeOczyszczone wpisy, brak obfuskacji i obcych odwołań

Odporność na atak

ŹleInfekcja wraca po czyszczeniu

DobrzeZamknięty wektor wejścia, monitoring i ograniczone uprawnienia

Przed / po Co zmienia uporządkowana diagnoza zamiast chaotycznych prób naprawy

Liczba zainfekowanych lokalizacji

Przedwiele: pliki, baza, cron, konta
Po1 główne źródło + oczyszczone zależności

Ryzyko ponownego ataku

Przedbardzo wysokie
Poniskie po pełnym czyszczeniu i zabezpieczeniu

Czas przywrócenia zaufania

Przedniepewny, infekcja może wrócić
Postabilny po weryfikacji integralności i monitoringu

Liczba aktywnych nieautoryzowanych dostępów

Przedmoże być kilka
Po0 po zmianie haseł i usunięciu kont

Poziom kontroli nad stroną

Przedograniczony, niepewny stan serwisu
Popełna kontrola nad kodem, bazą i dostępami

Po włamaniu do WordPressa problemem rzadko jest tylko jeden zainfekowany plik. W praktyce złośliwy kod potrafi rozlać się na motyw, wtyczki, plik functions.php, wp-config.php, .htaccess, bazę danych, zadania cron, a nawet do nowych kont administratorów. Dlatego właściciel strony najczęściej widzi tylko objawy: przekierowania na obce domeny, wyskakujące reklamy, spam w Google Search Console, dziwne pliki w katalogach lub komunikaty o zablokowaniu witryny przez przeglądarkę. Najgorszy scenariusz to taki, w którym strona wygląda na naprawioną, ale w tle nadal działa backdoor i infekcja wraca po kilku godzinach albo dniach.

W tym artykule pokazuję, jak podejść do problemu profesjonalnie: jak rozpoznać złośliwy kod WordPress po włamaniu, gdzie go szukać, co usuwać w pierwszej kolejności, kiedy nie próbować naprawy samodzielnie i jak ograniczyć ryzyko ponownego ataku. To nie jest poradnik „kliknij i gotowe”, bo przy realnej infekcji liczy się kolejność działań, ostrożność i umiejętność odróżnienia objawu od przyczyny.

Szybka odpowiedź

Jeśli podejrzewasz złośliwy kod w WordPress po włamaniu, zrób od razu cztery rzeczy: odizoluj stronę od ruchu, zmień wszystkie hasła, wykonaj kopię bezpieczeństwa stanu awaryjnego i sprawdź najpierw core WordPressa, wtyczki, motyw oraz bazę danych. Usuwanie zaczynaj od backdoorów i nieautoryzowanych kont, potem podmień pliki systemowe z czystego źródła, a na końcu zabezpiecz logowanie, uprawnienia plików i monitoring. Jeśli infekcja dotyczy sklepu, formularzy, danych klientów albo wraca po czyszczeniu, skontaktuj się ze specjalistą od bezpieczeństwa WordPress.

Diagnoza problemu

Złośliwy kod po włamaniu do WordPressa nie zawsze objawia się wprost. Czasem strona działa pozornie normalnie, ale w kodzie źródłowym pojawiają się dodatkowe skrypty, reklamy, iframe’y, zewnętrzne przekierowania albo śmieciowe linki SEO. Innym razem administrator widzi błąd 5https://r99.pl/blog => https://r99.pl/blog/https://r99.pl/blog => https://r99.pl/blog/, nie może się zalogować lub odkrywa, że w panelu są nowe konta, których nie zakładał. Zdarza się też, że problem wychodzi dopiero po ostrzeżeniu od hostingu, antywirusa, przeglądarki lub Google o niebezpiecznej witrynie.

Najważniejsza zasada diagnostyczna brzmi: nie zakładaj, że problem jest tylko w jednym pliku. W WordPressie atakujący często zostawia kilka warstw infekcji. Jedna warstwa ma ukrywać kolejną, a część kodu ma się uruchamiać tylko w określonych warunkach, na przykład dla niezalogowanych użytkowników, na urządzeniach mobilnych albo dla ruchu z wyszukiwarki. Dlatego szybkie usunięcie widocznego fragmentu często nie wystarcza.

Typowe symptomy złośliwego kodu po włamaniu to:

  • przekierowania do obcych domen, zwykle tylko dla wybranych użytkowników;
  • samoczynne pojawianie się nowych plików PHP, JS lub podejrzanych obrazków z kodem;
  • zmiany w plikach .htaccess, wp-config.php, index.php, functions.php;
  • ukryty spam SEO w treści wpisów, opisach produktów lub meta tagach;
  • nowe konta administratorów lub podmienione dane istniejących użytkowników;
  • nietypowe zadania cron i zewnętrzne wywołania HTTP;
  • ostrzeżenia przeglądarki o malware, phishingu lub niebezpiecznych pobraniach;
  • obciążenie CPU, wzrost ruchu wychodzącego, podejrzane procesy na hostingu;
  • wyłączanie zabezpieczeń, blokowanie edycji, problemy z aktualizacją.

W praktyce warto spojrzeć na stronę jak na system powiązanych elementów. Zainfekowany może być nie tylko plik strony, ale też baza danych, harmonogram zadań, logi, a nawet konto FTP lub panel hostingu, przez które atakujący wraca po każdym czyszczeniu. Jeżeli masz wrażenie, że „usuwałem już ten kod kilka razy, a on wraca”, to prawie zawsze oznacza, że backdoor nadal istnieje gdzieś głębiej.

Możliwe przyczyny

Żeby skutecznie usunąć złośliwy kod WordPress po włamaniu, trzeba ustalić wektor wejścia. Bez tego naprawiasz tylko skutek. Najczęstsze przyczyny są bardzo powtarzalne.

1. Przestarzały core WordPressa, wtyczki lub motyw
Najbardziej oczywista, ale wciąż bardzo częsta przyczyna. Jedna nieaktualna wtyczka wystarczy, żeby atakujący wykonał zdalny upload pliku, wstrzyknął kod lub przejął sesję administratora. Dotyczy to szczególnie popularnych rozszerzeń formularzy, page builderów, galerii, backupów, sliderów i integracji e-commerce.

2. Słabe hasła i brak dodatkowego uwierzytelniania
Jeśli panel admina, FTP, SSH, baza danych albo konto hostingu miały proste hasło, atak mógł nie wymagać nawet exploita. Po zwykłym przejęciu loginu napastnik dodaje nowego użytkownika, instaluje wtyczkę, wrzuca plik lub podmienia kod w motywie.

3. Zainfekowane wtyczki lub motywy z niepewnego źródła
„Darmowy premium” i paczki pobrane spoza oficjalnych źródeł to klasyczny problem. Taki pakiet bardzo często zawiera ukryte backdoory, webshell albo moduł aktywowany po kontakcie z zewnętrznym serwerem.

4. Luki w formularzach uploadu i bibliotekach mediów
Jeżeli strona pozwala użytkownikom wysyłać pliki, a filtr MIME i uprawnienia są źle skonfigurowane, atakujący może wgrać PHP lub plik wieloformatowy, który po stronie serwera staje się bramą wejścia.

5. Kompromitacja hostingu lub panelu administracyjnego
Czasem WordPress jest tylko ofiarą wtórną. Jeśli ktoś przejął konto hostingowe, dostęp FTP lub panel klienta, to może zainfekować dowolny plik i odtworzyć infekcję po każdym czyszczeniu witryny.

6. Złośliwe modyfikacje w bazie danych
Wiele osób skupia się na plikach, a infekcja siedzi w treści wpisów, widgetach, opcjach motywu, tabelach z ustawieniami albo w rekordach z kodem JS. Baza danych bywa też miejscem ukrycia listy przekierowań lub kodu aktywującego się po spełnieniu warunków.

7. Nieautoryzowane cron jobs i zaplanowane akcje
Atakujący często dodaje zadanie, które co kilka minut przywraca złośliwy plik, pobiera świeży payload albo wysyła dane na zewnętrzny serwer. To jeden z powodów, dla których czyszczenie bez sprawdzenia harmonogramu kończy się nawrotem infekcji.

8. Brak twardych ograniczeń na uprawnienia plików
Jeśli katalogi mają zbyt szerokie prawa zapisu, łatwiej o nadpisanie plików lub upload nowych. Z kolei źle ustawione właścicielstwo może ułatwić ukrywanie zmian, które wyglądają jak „normalne” aktualizacje.

Rozwiązanie krok po kroku

Poniższy proces jest bezpieczniejszy niż chaotyczne kasowanie plików. Ma sens zarówno przy prostym włamaniu, jak i przy bardziej złożonej infekcji. W każdym kroku zakładam, że zależy Ci na odzyskaniu strony bez pogłębiania szkód.

  1. Odizoluj stronę od ruchu
    Jeśli możesz, ustaw tryb konserwacji, ogranicz dostęp przez panel hostingu, reguły firewall lub prostą blokadę po stronie serwera. Chodzi o to, by minimalizować szkody dla użytkowników i nie dawać atakującemu świeżych wejść w czasie czyszczenia.
  2. Zrób kopię stanu awaryjnego
    To nie jest kopia „do przywracania”, tylko kopia dowodowa: pliki i baza w obecnym stanie, najlepiej bez nadpisywania. Może się przydać do analizy, porównania i wykrycia punktu wejścia. Nie czyść jej, nie formatuj, nie nadpisuj.
  3. Zmień wszystkie hasła
    W kolejności: hosting, FTP/SFTP, SSH, panel WordPress, baza danych, poczta powiązana z administracją, konta integracji i API. Jeśli korzystasz z wspólnych haseł, traktuj wszystkie jako spalone.
  4. Sprawdź konta użytkowników WordPress
    Usuń nieznane konta administratorów, zweryfikuj role istniejących użytkowników, sprawdź daty utworzenia i ostatnie logowania. Jeśli ktoś zmienił e-mail administratora, popraw to natychmiast.
  5. Przejrzyj core WordPressa
    Najprościej i najbezpieczniej jest podmienić pliki systemowe WordPressa z czystej, oficjalnej paczki. Nie wykonuj ręcznych poprawek w losowych plikach core, jeśli możesz go odtworzyć w całości. Zostaw tylko wp-config.php oraz katalog wp-content do osobnej analizy.
  6. Sprawdź motyw i wtyczki
    Porównaj pliki z oficjalną wersją, jeśli to możliwe. Szukaj obfuskacji, dziwnych ciągów base64, eval, gzinflate, str_rot13, ukrytych include, odwołań do zewnętrznych domen i nienaturalnie długich, losowych nazw funkcji. Wtyczki i motywy pobieraj ponownie z zaufanego źródła, a nie „naprawiaj” infekcji w środku podejrzanej paczki.
  7. Sprawdź plik wp-config.php i .htaccess
    To dwa bardzo ważne miejsca dla ukrywania przekierowań, dodatkowych include i reguł wywołujących payload. Uważnie zweryfikuj, czy nie ma tam obcych fragmentów, nietypowych komentarzy, zakodowanych linii lub nadmiarowych reguł rewrite.
  8. Przeszukaj wp-content, uploads i katalogi tymczasowe
    Zwróć uwagę na pliki PHP w uploadach, pliki z nietypowymi rozszerzeniami, bardzo świeże pliki, puste pliki z dziwną datą modyfikacji i grafiki, które są w rzeczywistości skryptami. Jeżeli katalog uploads zawiera PHP, to jest to czerwone światło.
  9. Przeszukaj bazę danych
    Szukaj fraz typu iframe, script, base64, eval, window.location, document.cookie, obfuskowanych ciągów i nieznanych domen. Sprawdź wpisy, strony, widgety, opcje motywu, nagłówki, stopki i dane wtyczek SEO, formularzy oraz sklepów. Nie usuwaj masowo wszystkiego, co wygląda podejrzanie, bez kopii i porównania.
  10. Sprawdź zadania cron i automatyzacje
    Usuń nieznane harmonogramy oraz skrypty, które pobierają pliki z internetu, uruchamiają PHP cyklicznie albo nadpisują pliki WordPressa. To jeden z najczęstszych powodów nawrotu infekcji.
  11. Zweryfikuj logi i wektory wejścia
    Przejrzyj logi serwera, logowania, błędów, uploadów i komunikacji wychodzącej. Szukaj pierwszego momentu, gdy pojawiło się nietypowe żądanie, nowy plik albo logowanie z obcego adresu. To pomaga odnaleźć pierwotną lukę.
  12. Podmień zainfekowane komponenty na czyste wersje
    Jeśli nie masz pewności, usuń całą wtyczkę lub motyw i wgraj świeżą kopię z wiarygodnego źródła. Przy podejrzeniu kompromitacji kilku plików często szybciej i bezpieczniej jest odtworzyć komponent od nowa niż ręcznie szukać każdego fragmentu.
  13. Sprawdź integralność po czyszczeniu
    Uruchom ponowne skanowanie plików i porównanie sum kontrolnych, jeśli masz taką możliwość. Odśwież stronę w trybie incognito, sprawdź kod źródłowy, przetestuj formularze, logowanie, koszyk, panel administracyjny i wysyłkę maili.
  14. Zabezpiecz środowisko po naprawie
    Włącz MFA tam, gdzie to możliwe, ogranicz możliwość edycji plików z panelu, ustaw poprawne uprawnienia katalogów, usuń nieużywane wtyczki, aktualizuj wszystko do stabilnych wersji i dodaj monitoring zmian w plikach. Bez tego strona pozostaje podatna na kolejny atak.

Warto wiedzieć: jeśli nie masz pewności, czy dany plik jest zainfekowany, nie kieruj się wyłącznie datą modyfikacji. Część malware podszywa się pod pliki systemowe lub ma datę taką jak reszta katalogu. Lepiej analizować zawartość, zależności i źródło pochodzenia.

Najczęstsze błędy

  • kasowanie losowych plików bez znalezienia źródła infekcji;
  • nadpisywanie całej strony bez wcześniejszego zbackupowania stanu awaryjnego;
  • czyszczenie tylko widocznego malware, bez sprawdzenia backdoorów;
  • pomijanie bazy danych i cronów;
  • ufanie, że „już działa, więc jest czysto”;
  • instalowanie kolejnych wtyczek zabezpieczających zamiast usunąć przyczynę;
  • przywracanie starego backupu, który był już zainfekowany;
  • ignorowanie nieautoryzowanych kont i zmian uprawnień;
  • pozostawienie domyślnych haseł lub współdzielonych danych dostępu;
  • brak weryfikacji hostingu, poczty i panelu administracyjnego poza WordPressem.

Bardzo częsty błąd to też samodzielne „naprawianie” kodu w pliku, którego źródła nie znamy. Jeżeli nie wiesz, czy fragment jest legitny, a usuńesz go w złym miejscu, możesz wyłączyć ważną funkcję lub stracić dane. Przy infekcji liczy się metodyka, nie pośpiech.

Kiedy nie robić tego samodzielnie

Samodzielne czyszczenie ma sens tylko wtedy, gdy infekcja jest ograniczona, znasz środowisko i masz kopie bezpieczeństwa oraz czas na dokładną analizę. Nie rób tego samodzielnie, jeśli:

  • strona obsługuje płatności, dane klientów lub dane medyczne;
  • masz podejrzenie wycieku danych logowania lub danych osobowych;
  • infekcja wraca po każdym czyszczeniu;
  • nie masz dostępu do logów, SSH lub narzędzi analitycznych;
  • w grę wchodzi kilka serwisów na tym samym hostingu;
  • na stronie pojawia się phishing, spam lub przekierowania dla wyszukiwarki;
  • nie rozróżniasz plików core od plików motywu i wtyczek;
  • hosting blokuje pliki lub procesy i potrzebna jest głębsza analiza serwera.

Jeżeli po włamaniu strona została oznaczona jako niebezpieczna przez Google lub przeglądarki, a do tego sprzedajesz online, ryzyko jest podwójne: techniczne i biznesowe. W takiej sytuacji liczy się nie tylko usunięcie kodu, ale też ograniczenie szkód w reputacji i ciągłości sprzedaży.

Kiedy zgłosić się do specjalisty

Do specjalisty warto zgłosić się od razu, gdy infekcja jest rozległa, powtarzalna lub dotyka kluczowych funkcji serwisu. Szczególnie wtedy, gdy:

  • backdoor został ukryty w kilku miejscach naraz;
  • nie masz pewności, jak daleko sięga kompromitacja;
  • złośliwy kod modyfikuje dane klientów lub zamówienia;
  • masz wrażenie, że ktoś nadal ma dostęp do panelu lub FTP;
  • strona jest ważna biznesowo i przestój kosztuje realne pieniądze;
  • pojawiają się objawy kompromitacji bazy danych, poczty lub hostingu;
  • nie udaje się ustalić źródła włamania mimo podstawowej analizy.

Specjalista zwykle zaczyna nie od usuwania wszystkiego „na oko”, tylko od identyfikacji łańcucha ataku: skąd wszedł napastnik, co zmienił, jak utrzymuje dostęp i gdzie ukrył mechanizm powrotu. Dzięki temu szansa na trwałe oczyszczenie jest dużo większa niż przy szybkim ręcznym kasowaniu plików.

Podsumowanie i CTA do kontaktu

Złośliwy kod WordPress po włamaniu to problem, którego nie da się rozwiązać jednym skanem ani pojedynczym usunięciem podejrzanego fragmentu. Trzeba podejść do niego warstwowo: odizolować stronę, zabezpieczyć dane, znaleźć punkt wejścia, sprawdzić pliki, bazę, cron i konta użytkowników, a potem odbudować zaufanie do środowiska. Najważniejsze jest to, żeby nie zamieniać awarii w większą awarię przez nerwowe kasowanie plików bez planu.

Jeśli Twoja strona została zainfekowana, wraca po czyszczeniu albo obsługuje ważne dane, nie ryzykuj dalszych szkód. Skontaktuj się ze specjalistą od WordPress i bezpieczeństwa, żeby przeprowadzić analizę, usunięcie infekcji i zabezpieczenie witryny przed kolejnym atakiem.

FAQ

Najczęstsze pytania

Krótkie odpowiedzi na pytania, które najczęściej pojawiają się przed naprawą strony, kontaktem z supportem albo zleceniem wdrożenia.

Czy złośliwy kod w WordPress zawsze widać w plikach strony?

Nie. Często siedzi też w bazie danych, cronach, plikach motywu, wtyczkach, a nawet w nowych kontach administratorów. Bywa ukryty i uruchamia się tylko w określonych warunkach.

Czy wystarczy usunąć podejrzany plik PHP, żeby naprawić stronę?

Zwykle nie. Jeśli istnieje backdoor lub zmodyfikowana baza danych, infekcja wróci. Trzeba znaleźć mechanizm utrzymania dostępu i źródło włamania.

Czy mogę przywrócić stary backup i uznać problem za rozwiązany?

Tylko jeśli masz pewność, że backup pochodzi sprzed infekcji. W przeciwnym razie możesz przywrócić malware razem ze stroną.

Jak rozpoznać, że strona nadal jest zainfekowana po czyszczeniu?

Sygnały ostrzegawcze to ponowne przekierowania, nowe pliki, nieznane konta, alerty Google, dziwne wpisy w bazie danych i powracające zmiany w tych samych miejscach.

Czy wtyczka zabezpieczająca wystarczy do ochrony WordPressa?

Nie. Może pomóc, ale nie zastąpi aktualizacji, bezpiecznych haseł, ograniczenia uprawnień, monitoringu i kontroli źródła komponentów.

Usługi r99.pl Jeśli wolisz zlecić to specjaliście, zobacz usługi powiązane z tym problemem
Powiązane poradniki Zobacz też inne artykuły z r99.pl, które pomagają w podobnych awariach i decyzjach technicznych

Dalszy krok

Nie udało Ci się rozwiązać problemu samodzielnie?

Przeprowadzę diagnostykę, naprawię stronę, przyspieszę WordPress albo uporządkuję techniczne SEO i widoczność.