Jak odwirusować stronę internetową wordPress?

Wirus Wordpress

W dzisiejszych czasach poziom zagrożenia stron internetowych jest większy niż kiedykolwiek wcześniej. Wszystko wynika z szybko rozwijającej się technologii, a wraz z nią — niebezpiecznego oprogramowania. W tym artykule przedstawiamy kompleksowy przewodnik po odwirusowaniu strony opartej na WordPress oraz dzielimy się wiedzą, na co zwracać uwagę, aby uniknąć ponownych infekcji. Zaczynajmy!

Czym jest wirus na stronie? Anatomia zagrożenia

Wirus to program lub skrypt, który ma zdolność replikowania się w kodzie oraz manipulowania przepływem informacji w obrębie serwisu. Bardzo możliwe, że podczas poszukiwania produktów lub usług trafiłeś na stronę, która przekierowywała na chińskie portale albo wyświetlała komunikat o wygranym telefonie — to nic innego jak serwis zainfekowany przez wirusa.

Prawdę mówiąc, to jedne z najlżejszych form infekcji. Najgroźniejsze wirusy nie ujawniają się wprost — manipulują danymi pozyskanymi przez serwis, są źródłem wycieków danych osobowych i mogą działać niezauważone przez miesiące. Zgodnie z RODO, każdy właściciel serwisu internetowego jest zobligowany do zabezpieczenia danych osobowych swoich klientów.

RODZAJE ZŁOŚLIWEGO OPROGRAMOWANIA NA STRONACH WORDPRESS
↪️
Redirect malware
Przekierowania na zewnętrzne strony bez wiedzy użytkownika — najczęstszy widoczny objaw infekcji.
🔗
SEO Spam Injection
Ukryte linki do stron z hazardem i lekami niszczą pozycję SEO i reputację domeny.
🚪
Backdoor
Ukryty punkt wejścia dla hakera — przetrwa niedbałe czyszczenie i pozwala na powrót.
⛏️
Cryptojacking
Kopanie kryptowalut na komputerach odwiedzających — strona drastycznie spowalnia przeglądarkę.
⌨️
Formjacker / Keylogger
Kradnie dane z formularzy: hasła, karty płatnicze. Jeden z najpoważniejszych — łamie RODO.
🎣
Phishing
Podszywanie się pod banki i sklepy w celu kradzieży haseł i danych płatniczych.

Skąd pochodzi infekcja? Najczęstsze wektory ataku

  • Przestarzałe wtyczki i motywy — to zdecydowanie najczęstszy powód. Stare wersje zawierają znane luki (CVE), aktywnie wykorzystywane przez boty skanujące internet.
  • Słabe hasła i brak 2FA — ataki brute-force na /wp-admin są niezwykle powszechne. Hasła takie jak „admin123" są łamane w ciągu sekund.
  • Nulled themes i nulled plugins — pirackie wersje płatnych wtyczek bardzo często zawierają celowo wstrzyknięte backdoory.
  • Zainfekowane środowisko lokalne — jeśli Twój komputer jest zawirusowany, malware może wykraść dane FTP i przesłać złośliwy kod na serwer.
  • Współdzielony hosting — jedna zainfekowana strona może zarazić sąsiednie konta (cross-site contamination).

Jak sprawdzić czy serwis jest zainfekowany?

Istnieje wiele sposobów na analizę swojego serwisu w poszukiwaniu wirusa — od błyskawicznych i darmowych, po zaawansowane metody manualne.

5 METOD WYKRYWANIA INFEKCJI
1
🏠
Skaner hostingowy
Darmowy skan malware w panelu hostingu — najprostszy pierwszy krok.
2
🔍
Komenda site: w Google
Wpisz site:twojadomena.pl i sprawdź, czy w wynikach nie ma obcojęzycznych podstron.
3
🌐
Sucuri SiteCheck
Zewnętrzny skaner online — analiza bez dostępu do FTP, wystarczy URL.
4
🔌
Wtyczka Wordfence
Wtyczka WordPress z wbudowanym skanerem — porównuje pliki z oryginałem z repozytorium.
5
📁
Ręczna kontrola przez FTP / SSH
Sortuj pliki po dacie modyfikacji — pliki zmienione bez Twojej wiedzy są podejrzane.

1. Skaner hostingowy — bardzo często firmy hostingowe oferują darmowy skan plików w poszukiwaniu szkodliwego kodu. Jest to niezwykle wygodne i szybko daje odpowiedź, czy wszystko jest w porządku.

2. Komenda site: w Google — jeżeli firma hostingowa nie oferuje darmowego skanu, warto zacząć weryfikację od wpisania w wyszukiwarkę:

site:nazwadomeny
np. site:allegro.pl

Taka komenda pokaże wszystkie zaindeksowane podstrony. Jeśli zauważysz tytuły w języku chińskim, japońskim lub strony o farmaceutykach — masz pewność, że serwis padł ofiarą SEO spam injection:

Przykład zainfekowanej strony internetowej — wyniki Google z obcymi tytułami

Przykład wyników Google pokazujących zainfekowaną stronę z wstrzykniętymi obcymi podstronami

3. Test przekierowania — wejdź na stronę i obserwuj przez 10 sekund. Jeśli zostaniesz przekierowany na zewnętrzny serwis, Twój kod jest zainfekowany.

4. Wtyczka Wordfence Security — zainstaluj wtyczkę Wordfence Security i uruchom pełne skanowanie. Wtyczka wskazuje dokładnie, co zostało zmienione.

5. Ręczna kontrola dat modyfikacji — połącz się z serwerem przez FileZilla i posortuj pliki po dacie modyfikacji. Przez SSH możesz użyć polecenia:

find /public_html -name "*.php" -mtime -30 -type f
⚠️
Uwaga na ukryte infekcje
Groźniejsze są infekcje, których właściciel strony nie dostrzeże przez miesiące: nagły spadek pozycji w Google, domena na blacklistach pocztowych, logi serwera z ruchem w środku nocy, antywirusy klientów ostrzegające przy wejściu na stronę.

Jak odwirusować stronę internetową?

Istnieje kilka podejść do odwirusowania serwisu. Zanim zaczniesz: udokumentuj stan strony, pobierz logi serwera i zmień tymczasowo hasła FTP i bazy danych.

PROCES ODWIRUSOWANIA — MAPA DZIAŁANIA
1
Diagnoza
2
Backup check
3
Podmiana rdzenia
4
Czyszczenie plików
5
Oczyszczenie bazy
6
Zabezpieczenie

Krok 1: Przywrócenie z backupu — najszybsza metoda

Najszybszym sposobem na odwirusowanie jest przywrócenie strony z backupu — bardzo często firma hostingowa posiada kopie serwisu sprzed 1–2 miesięcy. Warto się do nich zgłosić w celu pozyskania plików strony oraz bazy danych.

⚠️
Sprawdź czystość backupu!
Upewnij się, że kopia pochodzi sprzed daty infekcji. Jeśli wirus działał od miesięcy, starsze backupy mogą być zainfekowane. Sprawdź daty modyfikacji podejrzanych plików, żeby oszacować czas początku ataku.

Po przywróceniu backupu koniecznie zmień hasła do panelu WordPress, bazy danych, FTP oraz wygeneruj nowe klucze bezpieczeństwa WordPress.

Krok 2: Ręczna podmiana rdzenia WordPress

W przypadku gdy kopie hostingu także są zawirusowane, należy połączyć się z serwerem FTP, np. poprzez program FileZilla. Dostęp do serwera FTP można wygenerować przez panel DirectAdmin na koncie hostingowym.

Daty modyfikacji plików przez FTP — podejrzane pliki

Po połączeniu z FTP sprawdź daty modyfikacji plików — wskazują, które z nich padły ofiarą infekcji

Pobierz czystą wersję WordPress ze strony pl.wordpress.org/download/releases/, odpowiadającą wersji na Twoim serwerze. Aktualną wersję sprawdzisz w katalogu wp-includes, w pliku version.php:

Weryfikacja wersji WordPress w pliku version.php

Plik version.php zawiera aktualną wersję WordPressa — pobierz dokładnie tę samą z repozytorium

💡
Co podmienić, a czego nie
Podmień wszystkie pliki i foldery rdzenia z wyjątkiem: wp-config.php (zawiera dane dostępowe do bazy), katalogu wp-content/ (Twoje motywy, wtyczki i media) oraz ewentualnych własnych reguł w .htaccess.

Krok 3: Czyszczenie katalogu wp-content

W przypadku stron WordPress najskuteczniej jest skupić się na katalogu wp-content. Dobrą praktyką jest podmiana całego katalogu plugins — większość wtyczek jest dostępna w repozytorium WordPress.

Główne działania kieruj na katalog themes, gdzie znajduje się motyw strony. Szukaj charakterystycznych wzorców złośliwego kodu:

eval(base64_decode(...))
eval(gzinflate(base64_decode(...)))
$_POST['cmd']
system($_GET['cmd'])
Przykładowy kod wirusa wstrzyknięty do pliku WordPress

Przykład złośliwego kodu wstrzykniętego do pliku motywu — charakterystyczne eval() z base64

Sprawdź też plik .htaccess — wirusy często dodają tam reguły przekierowań. Podstawowy, czysty plik .htaccess WordPress wygląda tak:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Odwirusowanie bazy danych

Po usunięciu szkodliwego kodu z plików czas przystąpić do odwirusowania bazy danych. Dostęp uzyskasz przez phpMyAdmin w panelu hostingowym — dane logowania znajdziesz w pliku wp-config.php.

KLUCZOWE TABELE DO SPRAWDZENIA W BAZIE DANYCH
wp_posts
Sprawdź pole post_content pod kątem wstrzykniętych skryptów i zakodowanego kodu.
eval( / base64_decode(
wp_options ⚠
Najczęściej atakowana!
Sprawdź rekordy: siteurl, home, active_plugins i widgety.
wp_users
Szukaj nieznanych kont administratora z podejrzanymi emailami i losowymi loginami.
wp_comments
Złośliwe linki i skrypty ukryte w treści komentarzy oraz polach autora.
wp_postmeta
Metadane wpisów mogą zawierać zaszyfrowany kod w polach meta_value.
wp_usermeta
Sprawdź uprawnienia użytkowników — wirus może dodawać role admina ukrytym kontom.

Dla początkujących preferowaną metodą jest przejrzenie każdego rekordu bazy danych w poszukiwaniu podejrzanych skryptów. Bardziej zaawansowani użyją poleceń SQL:

SELECT * FROM wp_posts WHERE post_content LIKE '%eval(%';
SELECT * FROM wp_posts WHERE post_content LIKE '%base64_decode(%';
SELECT * FROM wp_options WHERE option_value LIKE '%<script%';
SELECT ID, user_login, user_email FROM wp_users;
⏱️
Uzbrój się w cierpliwość
Przegląd wszystkich rekordów bazy danych potrafi być bardzo czasochłonny. Na dużych bazach (tysiące rekordów) rozważ użycie wtyczki WP-DBManager lub zewnętrznych skryptów czyszczących — zaoszczędzisz godziny pracy.

Zmiana danych dostępowych

Usunięcie szkodliwych skryptów to nie wszystko. Raz złamane hasła mogły zostać zapisane przez atakującego — bez ich zmiany infekcja może powrócić przez te same drzwi.

1

Hasło do panelu WordPress

Zmień hasła wszystkich kont administracyjnych. Minimum 16 znaków: wielkie i małe litery, cyfry, znaki specjalne.

2

Hasło do bazy danych MySQL

Zmień w phpMyAdmin i zaktualizuj plik wp-config.php na serwerze.

3

Hasło do FTP / SFTP

Wygeneruj nowe dane dostępowe przez panel DirectAdmin / cPanel.

4

Klucze bezpieczeństwa WordPress (Secret Keys)

Wygeneruj nowe klucze na api.wordpress.org/secret-key/1.1/salt/ i wklej do wp-config.php. Wyloguje to wszystkich zalogowanych użytkowników.

5

Hasło do panelu hostingowego i poczty

Zmień też hasło do konta hostingowego i adresu email przypisanego do domeny.

Jak przeciwdziałać infekcjom kodu?

Podstawową obroną przed wirusami są regularne aktualizacje motywu oraz wtyczek. Dodatkowo warto wyposażyć serwis w plugin dbający o monitoring ruchu, zmiany na stronie oraz chroniący panel administracyjny — np. Shield Security.

WARSTWY OCHRONY STRONY WORDPRESS
🔄 WARSTWA 1
Regularne aktualizacje
Aktualizuj WordPress, wtyczki i motyw Usuń nieużywane wtyczki Unikaj nulled plugins
🔐 WARSTWA 2
Silne hasła i 2FA
Hasła 16+ znaków Uwierzytelnianie dwuskładnikowe Zmień login "admin" Menedżer haseł
🛡️ WARSTWA 3
Firewall i monitoring
WAF (Wordfence / Shield / Cloudflare) Monitoring integralności plików Alerty email Zmień URL logowania
💾 WARSTWA 4
Backup i odtwarzanie
Automatyczne backupy (UpdraftPlus) Zasada 3-2-1 Testuj przywracanie Backup przed każdą aktualizacją

Rekomendowane wtyczki bezpieczeństwa

  • Wordfence Security — firewall, skaner malware, ochrona brute-force, monitoring w czasie rzeczywistym. Darmowa wersja wystarczy dla większości stron. → Repozytorium
  • Shield Security — kompleksowy WAF z mniejszym wpływem na wydajność serwera, monitoring integralności plików, zmiana URL logowania. → Repozytorium
  • UpdraftPlus — najlepsza wtyczka do backupów z obsługą Google Drive, Dropbox i Amazon S3.
  • WPS Hide Login — przenosi panel logowania pod własny URL, redukując ataki brute-force.

Utwardzanie konfiguracji WordPress (Hardening)

  • Wyłącz edycję plików z panelu — dodaj do wp-config.php: define('DISALLOW_FILE_EDIT', true);
  • Wyłącz wykonywanie PHP w katalogu uploads/
  • Wyłącz XML-RPC, jeśli go nie używasz — popularny cel ataków DDoS
  • Ustaw prawidłowe uprawnienia plików: pliki 644, katalogi 755, wp-config.php 600
  • Użyj certyfikatu SSL i wymuszaj HTTPS na całej stronie

Checklista po odwirusowaniu

  • Podmieniony rdzeń WordPress czystymi plikami
  • Wyczyszczony lub podmieniony motyw (katalog themes/)
  • Wszystkie wtyczki podmienione z repozytorium
  • Plik .htaccess sprawdzony i oczyszczony
  • Baza danych przeskanowana zapytaniami SQL
  • Usunięte nieznane konta administratorów
  • Zmienione wszystkie hasła (WP, baza, FTP, hosting)
  • Wygenerowane nowe Secret Keys w wp-config.php
  • Końcowe skanowanie Sucuri SiteCheck i Wordfence
  • Złożona prośba o weryfikację w Google Search Console
  • Zainstalowana wtyczka bezpieczeństwa i skonfigurowany backup
🔒
Pamiętaj o RODO
Jeśli Twoja strona zbiera dane osobowe i doszło do ich wycieku, masz obowiązek zgłosić naruszenie do UODO w ciągu 72 godzin od wykrycia (art. 33 RODO). Dokumentuj każdy krok odwirusowania — data wykrycia, zakres infekcji, podjęte działania.

Potrzebujesz pomocy przy odwirusowaniu strony?

Jako agencja oferujemy profesjonalne usługi odwirusowania, audytu bezpieczeństwa i administracji stron WordPress. Działamy szybko — zwykle w ciągu 24 godzin.

Sprawdź naszą ofertę →
Ikona kontakt Ikona kontakt Element dekoracyjny strony Element dekoracyjny strony

Współpraca

Porozmawiajmy już dziś!

Kontakt