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.
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-adminsą 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.
site:twojadomena.pl i sprawdź, czy w wynikach nie ma obcojęzycznych podstron.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ę:
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 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:
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.
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.
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.
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:
Plik version.php zawiera aktualną wersję WordPressa — pobierz dokładnie tę samą z repozytorium
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(gzinflate(base64_decode(...)))
$_POST['cmd']
system($_GET['cmd'])
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:
<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.
post_content pod kątem wstrzykniętych skryptów i zakodowanego kodu.siteurl, home, active_plugins i widgety.meta_value.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 '%base64_decode(%';
SELECT * FROM wp_options WHERE option_value LIKE '%<script%';
SELECT ID, user_login, user_email FROM wp_users;
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.
Hasło do panelu WordPress
Zmień hasła wszystkich kont administracyjnych. Minimum 16 znaków: wielkie i małe litery, cyfry, znaki specjalne.
Hasło do bazy danych MySQL
Zmień w phpMyAdmin i zaktualizuj plik wp-config.php na serwerze.
Hasło do FTP / SFTP
Wygeneruj nowe dane dostępowe przez panel DirectAdmin / cPanel.
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.
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.
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.php600 - 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
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ę →


