WordPress

WordPress przekierowuje na obce strony

Odwiedzający trafiają na cudze witryny, a w wynikach Google zamiast oferty pojawia się spam. To włamanie, a nie usterka - i samo czyszczenie plików nie wystarczy.

3 min czytania

Objaw jest charakterystyczny: wpisujesz adres swojej strony, a przeglądarka ląduje gdzie indziej. Czasem dzieje się to tylko przy wejściu z Google, czasem tylko na telefonie, a z Twojego komputera wszystko wygląda normalnie — bo złośliwy kod rozpoznaje administratora i jego oszczędza.

To nie jest usterka. Przekierowania na obce adresy oznaczają, że ktoś ma dostęp do Twojej strony. Celem jest zwykle ruch i pozycje, które wypracowałeś — dlatego atakujący dba, żeby infekcja została niezauważona jak najdłużej.

Zanim zaczniesz: odetnij i zabezpiecz

  1. Zrób pełną kopię plików i bazy danych. Nawet zainfekowaną — będzie potrzebna do analizy i jako punkt odwrotu.
  2. Zmień hasła: do panelu WordPressa, FTP/SSH, bazy danych i panelu hostingu. Jeśli tego nie zrobisz, posprzątasz, a kod wróci tą samą drogą.
  3. Sprawdź listę użytkowników w panelu. Konta administratorów, których nie zakładałeś, usuń.

Gdzie siedzi złośliwy kod

W praktyce prawie zawsze w kilku z tych miejsc:

  • Pliki motywu, najczęściej header.php, footer.php i functions.php — doklejony blok JavaScriptu albo długi ciąg zakodowany w base64.
  • Tabela wp_options, w polach siteurl i home. Jeśli widnieje tam obcy adres, to pierwsze miejsce do poprawienia.
  • Tabela wp_posts — wstrzyknięte skrypty w treści wpisów.
  • Plik .htaccess — reguły przekierowujące ruch przychodzący z wyszukiwarek.
  • Podrzucone pliki o niewinnych nazwach w wp-content/uploads. Katalog na zdjęcia nie powinien zawierać ani jednego pliku .php.

Mając dostęp SSH, dobrze zacząć od wyszukania typowych wzorców:

grep -rn "base64_decode\|eval(" wp-content/ --include="*.php" | head -50
find wp-content/uploads -name "*.php"

Czyszczenie

Najpewniejsza metoda to wymiana wszystkiego, co da się wymienić, zamiast wycinania fragmentów:

  1. Pobierz czystą paczkę WordPressa i nadpisz wp-admin oraz wp-includes w całości.
  2. Wtyczki i motyw zainstaluj od nowa z oficjalnych źródeł. Nie leczy się zainfekowanej wtyczki — wymienia się ją.
  3. W bazie popraw siteurl i home, a potem przejrzyj treści pod kątem wstrzykniętych skryptów.
  4. Wygeneruj na nowo .htaccess przez zapisanie bezpośrednich odnośników.
  5. Usuń wszystkie pliki PHP z katalogu uploads.

Najważniejszy krok: zamknij drogę wejścia

To etap, który najczęściej się pomija — i dlatego infekcja wraca po kilku dniach. Atakujący wszedł którąś z tych dróg:

  • nieaktualna wtyczka lub motyw ze znaną podatnością (najczęstszy przypadek),
  • słabe hasło administratora lub FTP,
  • inna, zaniedbana strona na tym samym koncie hostingowym,
  • porzucona wtyczka, która nie dostaje już poprawek.

Zajrzyj do logów dostępu z okresu, w którym pojawiły się przekierowania. Szukaj żądań POST do nietypowych adresów i wejść na pliki, których nie powinno być. To zwykle wskazuje drogę.

Po sprzątaniu

Zgłoś stronę do ponownego sprawdzenia w Google Search Console, w sekcji Bezpieczeństwo. Bez tego ostrzeżenie w wynikach wyszukiwania potrafi wisieć tygodniami, nawet gdy strona jest już czysta. Przez kolejne dni obserwuj, czy coś nie wraca.

Włącz automatyczne aktualizacje przynajmniej dla poprawek bezpieczeństwa i usuń wtyczki, z których nie korzystasz. Wyłączona wtyczka nadal leży na serwerze i nadal może być furtką.

Nie udaje się?

Jeśli problem zostaje albo wolisz nie eksperymentować na działającej stronie, napisz do nas - sprawdzimy to za Ciebie. Diagnoza nic nie kosztuje.

Pomoc przy WordPressie