Jak odwirusować stronę internetową WordPress?

Poziom zagrożenia stron internetowych jest dziś większy niż kiedykolwiek. Wynika to z szybko rozwijającej się technologii, a wraz z nią – złośliwego oprogramowania. W tym artykule przeprowadzę Cię przez pełny proces odwirusowania strony na WordPressie i pokażę, na co zwracać uwagę, żeby infekcja nie wróciła.
Czym jest wirus na stronie
Wirus to program lub skrypt, który potrafi replikować się w kodzie i manipulować przepływem informacji w obrębie serwisu. Bardzo możliwe, że szukając kiedyś produktu lub usługi, trafiłeś na stronę przekierowującą na obce portale albo wyświetlającą komunikat o wygranym telefonie. To właśnie serwis zainfekowany wirusem.
Prawdę mówiąc, to jedne z najłagodniejszych form infekcji. Najgroźniejsze wirusy nie ujawniają się wprost – manipulują danymi przetwarzanymi przez serwis, są źródłem wycieków danych osobowych i potrafią działać niezauważone przez miesiące. Zgodnie z RODO każdy właściciel serwisu odpowiada za zabezpieczenie danych swoich klientów, więc stawka jest wyższa niż samo działanie strony.
Rodzaje złośliwego oprogramowania na stronach WordPress
- Przekierowania – odwiedzający trafia na zewnętrzną stronę bez swojej wiedzy. Najczęstszy widoczny objaw infekcji.
- Spam SEO – ukryte odnośniki do stron z hazardem i farmaceutykami. Niszczą pozycję w wyszukiwarce i reputację domeny.
- Tylne furtki – ukryty punkt wejścia dla atakującego. Przetrwa niedbałe czyszczenie i pozwala wrócić w dowolnej chwili.
- Kopanie kryptowalut – obciąża komputery odwiedzających, przez co strona drastycznie spowalnia przeglądarkę.
- Przechwytywanie formularzy – kradnie hasła i dane kart płatniczych. Jeden z najpoważniejszych przypadków, bo wprost narusza RODO.
- Phishing – podszywanie się pod banki i sklepy w celu wyłudzenia danych logowania.
Skąd bierze się infekcja
- Przestarzałe wtyczki i motywy – zdecydowanie najczęstsza przyczyna. Stare wersje zawierają publicznie znane luki, aktywnie wykorzystywane przez boty skanujące internet.
- Słabe hasła i brak uwierzytelniania dwuskładnikowego – ataki na panel logowania są nieustanne. Hasło pokroju „admin123″ łamie się w kilka sekund.
- Pirackie wersje płatnych wtyczek – bardzo często zawierają celowo wstrzyknięty kod dający dostęp do serwera.
- Zainfekowany komputer – jeśli Twoja stacja robocza jest zawirusowana, złośliwe oprogramowanie może wykraść zapisane dane FTP i wgrać kod na serwer.
- Współdzielony hosting – jedna zainfekowana strona potrafi zarazić sąsiednie konta, jeśli dostawca nie izoluje ich od siebie.
Jak sprawdzić, czy serwis jest zainfekowany
Sposobów jest kilka – od błyskawicznych i darmowych po zaawansowane metody ręczne. Warto przejść je po kolei.
1. Skaner hostingowy
Wiele firm hostingowych oferuje darmowy skan plików w poszukiwaniu szkodliwego kodu. To najwygodniejszy pierwszy krok i najszybsza odpowiedź na pytanie, czy w ogóle mamy problem.
2. Komenda site: w Google
Jeżeli hosting nie oferuje skanu, zacznij od wpisania w wyszukiwarkę:
site:nazwadomeny.pl
Komenda pokaże wszystkie zaindeksowane podstrony. Jeśli zobaczysz tytuły po japońsku, chińsku albo oferty farmaceutyków, masz pewność, że serwis padł ofiarą spamu SEO.

3. Test przekierowania
Wejdź na stronę i obserwuj przez kilkanaście sekund, najlepiej na telefonie i z wyników wyszukiwania. Część infekcji uruchamia się tylko w takich warunkach, żeby właściciel niczego nie zauważył.
4. Wtyczka Wordfence Security
Zainstaluj Wordfence Security i uruchom pełne skanowanie. Wtyczka porównuje pliki z oryginałami z repozytorium i wskazuje dokładnie, co zostało zmienione.
5. Ręczna kontrola dat modyfikacji
Połącz się z serwerem przez FTP i posortuj pliki po dacie modyfikacji. Pliki zmienione bez Twojej wiedzy są podejrzane. Przez SSH sprawdzisz to jednym poleceniem:
find /public_html -name "*.php" -mtime -30 -type f
Uwaga na ukryte infekcje. Groźniejsze są te, których właściciel nie dostrzega przez miesiące: nagły spadek pozycji w Google, domena na czarnych listach pocztowych, ruch w logach serwera w środku nocy albo ostrzeżenia antywirusów u klientów.
Jak odwirusować stronę
Zanim zaczniesz: udokumentuj stan strony, pobierz logi serwera i tymczasowo zmień hasła FTP oraz bazy danych. Sam proces przebiega w sześciu etapach – diagnoza, sprawdzenie kopii, podmiana rdzenia, czyszczenie plików, oczyszczenie bazy i zabezpieczenie.
Krok 1. Przywrócenie z kopii zapasowej
Najszybszym sposobem jest przywrócenie strony z kopii. Bardzo często firma hostingowa przechowuje kopie sprzed miesiąca lub dwóch – warto się do niej zgłosić po pliki i bazę danych.
Sprawdź, czy kopia jest czysta. Upewnij się, że pochodzi sprzed daty infekcji. Jeśli wirus działał od miesięcy, starsze kopie też mogą być zainfekowane. Daty modyfikacji podejrzanych plików pomogą oszacować, kiedy zaczął się atak.
Po przywróceniu kopii koniecznie zmień hasła do panelu WordPress, bazy danych i FTP oraz wygeneruj nowe klucze bezpieczeństwa.
Krok 2. Ręczna podmiana rdzenia WordPress
Gdy kopie hostingu również są zawirusowane, połącz się z serwerem przez FTP – na przykład programem FileZilla. Dane dostępowe wygenerujesz w panelu hostingowym.

Pobierz czystą wersję WordPressa z repozytorium, dokładnie tę samą, która działa na Twoim serwerze. Numer wersji sprawdzisz w katalogu wp-includes, w pliku version.php.

Czego nie podmieniać. Wymień wszystkie pliki i katalogi rdzenia z wyjątkiem trzech:
wp-config.phpzawiera dane dostępowe do bazy, katalogwp-contentmieści Twój motyw, wtyczki i media, a w.htaccessmogą siedzieć Twoje własne reguły.
Krok 3. Czyszczenie katalogu wp-content
Przy stronach WordPress najskuteczniej skupić się właśnie na tym katalogu. Dobrą praktyką jest podmiana całego folderu plugins, bo większość wtyczek pobierzesz z repozytorium w czystej postaci.
Główny wysiłek kieruj na katalog themes, gdzie leży motyw. Szukaj charakterystycznych wzorców:
eval(base64_decode(...))
eval(gzinflate(base64_decode(...)))
$_POST['cmd']
system($_GET['cmd'])

Sprawdź też plik .htaccess – wirusy często dopisują tam reguły przekierowań. Czysty plik WordPressa 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 oczyszczeniu plików czas na bazę. Dostęp uzyskasz przez phpMyAdmin w panelu hostingowym, a dane logowania znajdziesz w pliku wp-config.php.
Które tabele sprawdzić
- wp_options – najczęściej atakowana. Sprawdź rekordy
siteurl,home,active_pluginsoraz widżety. - wp_posts – pole
post_contentpod kątem wstrzykniętych skryptów i zakodowanej zawartości. - wp_users – nieznane konta administratora z losowymi loginami i podejrzanymi adresami e-mail.
- wp_usermeta – uprawnienia użytkowników. Wirus potrafi nadać rolę administratora ukrytemu kontu.
- wp_comments – odnośniki i skrypty ukryte w treści komentarzy oraz w polach autora.
- wp_postmeta – metadane wpisów mogą zawierać zakodowany kod w polach
meta_value.
Początkującym polecam przejrzenie rekordów ręcznie. Bardziej zaawansowani skorzystają z zapytań 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 całej bazy potrafi zająć godziny. Przy tysiącach rekordów rozważ narzędzie do masowego wyszukiwania i podmiany – oszczędzisz sporo czasu.
Zmiana danych dostępowych
Usunięcie szkodliwego kodu to nie wszystko. Raz złamane hasła mogły trafić w ręce atakującego, więc bez ich wymiany infekcja wróci tymi samymi drzwiami.
- Panel WordPress – zmień hasła wszystkich kont administracyjnych. Minimum szesnaście znaków, z wielkimi i małymi literami, cyframi oraz znakami specjalnymi.
- Baza danych – zmień hasło w panelu hostingu i zaktualizuj plik
wp-config.phpna serwerze. - FTP – wygeneruj nowe dane dostępowe w panelu hostingowym.
- Klucze bezpieczeństwa – wygeneruj nowe na api.wordpress.org i wklej do
wp-config.php. Wyloguje to wszystkie zalogowane sesje, także atakującego. - Panel hostingowy i poczta – zmień również te hasła, zwłaszcza jeśli używałeś tego samego w kilku miejscach.
Jak zapobiegać infekcjom
Podstawą są regularne aktualizacje motywu i wtyczek. Warto też wyposażyć serwis we wtyczkę monitorującą ruch i zmiany oraz chroniącą panel administracyjny – na przykład Shield Security.
Cztery warstwy ochrony
- Aktualizacje – regularnie aktualizuj WordPress, wtyczki i motyw, usuwaj nieużywane komponenty i omijaj pirackie wersje płatnych rozszerzeń.
- Hasła i logowanie – hasła powyżej szesnastu znaków, uwierzytelnianie dwuskładnikowe, rezygnacja z loginu „admin” i menedżer haseł zamiast kartki na biurku.
- Zapora i monitoring – zapora aplikacyjna, kontrola integralności plików, powiadomienia e-mail i zmieniony adres strony logowania.
- Kopie zapasowe – automatyczne, przechowywane poza serwerem, z okresowym testem przywracania. Kopia, której nigdy nie odtworzyłeś, jest tylko obietnicą.
Rekomendowane wtyczki
- Wordfence Security – zapora, skaner złośliwego kodu i ochrona przed atakami na logowanie. Darmowa wersja wystarcza większości stron.
- Shield Security – rozbudowana zapora z mniejszym obciążeniem serwera, kontrola integralności plików i zmiana adresu logowania.
- UpdraftPlus – kopie zapasowe z wysyłką na Dysk Google, Dropbox lub Amazon S3.
- WPS Hide Login – przenosi panel logowania pod własny adres, znacząco ograniczając liczbę prób włamania.
Utwardzenie konfiguracji
- Wyłącz edycję plików z panelu, dodając do
wp-config.phpwpisdefine('DISALLOW_FILE_EDIT', true); - Zablokuj wykonywanie kodu PHP w katalogu
uploads - Wyłącz XML-RPC, jeśli z niego nie korzystasz – to popularny cel ataków
- Ustaw poprawne uprawnienia: pliki 644, katalogi 755, a
wp-config.php600 - Wymuś połączenie szyfrowane na całej stronie
Lista kontrolna po odwirusowaniu
- Rdzeń WordPress podmieniony na czyste pliki
- Motyw wyczyszczony albo podmieniony
- Wtyczki pobrane na nowo z repozytorium
- Plik
.htaccesssprawdzony i oczyszczony - Baza danych przeskanowana zapytaniami SQL
- Usunięte nieznane konta administratorów
- Zmienione wszystkie hasła: panel, baza, FTP, hosting
- Wygenerowane nowe klucze bezpieczeństwa
- Końcowe skanowanie zewnętrznym narzędziem
- Złożony wniosek o ponowną weryfikację w Search Console
- Zainstalowana wtyczka bezpieczeństwa i skonfigurowane kopie zapasowe
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. Dokumentuj każdy krok odwirusowania: datę wykrycia, zakres infekcji i podjęte działania.
Potrzebujesz pomocy przy odwirusowaniu strony?
Powyższy przewodnik pozwala przejść przez proces samodzielnie, ale przy poważniejszych infekcjach – zwłaszcza takich z ostrzeżeniem Google albo zablokowanym kontem hostingowym – liczy się czas. Usuwam złośliwy kod z plików i bazy, zamykam lukę, przez którą się dostał, i doprowadzam do zdjęcia ostrzeżenia w wyszukiwarce. Zwykle w ciągu jednego dnia roboczego.
Nie chcesz robić tego samodzielnie?
Zajmę się tym za Ciebie. Napisz krótko, co się dzieje - odpowiem tego samego dnia roboczego.