Przejdź do treści

Zhakowana strona WordPress: co zrobić w pierwszej godzinie (i potem)

Zhakowana strona WordPress? Jak rozpoznać włamanie, co zrobić w pierwszej godzinie, jak wyczyścić stronę, zgłosić ją do Google i nie zapomnieć o RODO.

Bartosz Ogrodowicz 8 min czytania

Podświetlona klawiatura laptopa w ciemności
› spis treści
  1. Objawy włamania na stronę
  2. Pierwsza godzina: nie panikuj i nie kasuj na ślepo
  3. Checklista na pierwszą godzinę
  4. Czyszczenie strony
  5. Znalezienie przyczyny
  6. Google Search Console: problemy z bezpieczeństwem
  7. RODO: czy trzeba zgłaszać włamanie do UODO
  8. Jak zapobiegać włamaniom
  9. Najczęstsze pytania
  10. Podsumowanie

Klient dzwoni, że strona przekierowuje na jakiś sklep z tabletkami. Albo Chrome pokazuje czerwony ekran z ostrzeżeniem. Pierwsza reakcja to zwykle panika i chęć, żeby „to natychmiast usunąć”. Rozumiem to, ale pochopne kasowanie plików często utrudnia znalezienie przyczyny - a bez niej włamanie wraca po kilku dniach.

Poniżej opisuję, jak rozpoznać, że zhakowana strona WordPress to faktycznie Twój problem, co zrobić w pierwszej godzinie i jak doprowadzić sprawę do końca.

Objawy włamania na stronę

Włamanie nie zawsze jest widoczne na pierwszy rzut oka. Często atakujący celowo ukrywa zmiany przed zalogowanym administratorem. Sygnały, które powinny Cię zaniepokoić:

  • strona przekierowuje na spam - zwykle tylko dla części odwiedzających, np. wchodzących z Google albo z telefonu, więc Ty możesz tego nie widzieć,
  • nieznani administratorzy w panelu WordPressa (Użytkownicy - Wszyscy użytkownicy, filtr „Administrator”),
  • strona oznaczona jako niebezpieczna - ostrzeżenie w przeglądarce, komunikat „Ta witryna mogła zostać zaatakowana” w wynikach Google albo powiadomienie z Search Console,
  • dziwne pliki na serwerze - o przypadkowych nazwach, ze świeżą datą modyfikacji, w miejscach, gdzie nie powinno ich być,
  • spam wysyłany z serwera - hosting blokuje wysyłkę poczty, klienci dostają od Was podejrzane maile, domena trafia na czarne listy,
  • nagły spadek ruchu z wyszukiwarki bez żadnych zmian po Twojej stronie,
  • japoński lub farmaceutyczny spam SEO - w Google pod Twoją domeną pojawiają się tysiące podstron z japońskimi znakami albo ofertami leków. Sprawdzisz to, wpisując w wyszukiwarkę site:twojadomena.pl.

Pierwsza godzina: nie panikuj i nie kasuj na ślepo

Celem pierwszej godziny nie jest wyczyszczenie strony, tylko zatrzymanie szkód i odcięcie atakującemu dostępu.

Zrób kopię obecnego stanu. Zanim cokolwiek zmienisz, zapisz pełną kopię plików i bazy danych - tak, zainfekowaną. To materiał dowodowy i źródło informacji: na jego podstawie da się ustalić, którędy weszło włamanie i co zostało zmienione. Opisz ją wyraźnie i nie przywracaj jej na serwer.

Włącz tryb serwisowy albo ogranicz dostęp. Jeśli strona przekierowuje odwiedzających na złośliwe witryny, lepiej czasowo ją wyłączyć niż narażać klientów. Hosting zwykle potrafi zablokować stronę na poziomie serwera.

Zmień wszystkie hasła - z czystego, zaufanego komputera:

  • panel hostingu,
  • konta FTP/SFTP,
  • baza danych (i odpowiednio plik wp-config.php),
  • wszystkie konta administratorów WordPressa,
  • skrzynki pocztowe w domenie, szczególnie te, na które przychodzą resety haseł.

Wyloguj wszystkie sesje. Sama zmiana hasła nie zawsze wyrzuca zalogowanego atakującego. W WordPressie przy profilu użytkownika jest opcja wylogowania ze wszystkich miejsc. Bardziej skuteczna jest wymiana kluczy bezpieczeństwa (tzw. salts) w wp-config.php - unieważnia to wszystkie sesje naraz.

Skontaktuj się z hostingiem. Hosting ma logi serwera i może sprawdzić, czy infekcja nie dotyczy innych stron na tym samym koncie.

Checklista na pierwszą godzinę

  1. Potwierdź objawy (sprawdź stronę z innego urządzenia i w trybie incognito, wpisz site:twojadomena.pl w Google).
  2. Zapisz, co i kiedy zauważyłeś - zrzuty ekranu, godziny, treść ostrzeżeń.
  3. Zrób pełną kopię plików i bazy w obecnym stanie i odłóż ją na bok.
  4. Włącz tryb serwisowy albo poproś hosting o czasowe zablokowanie strony.
  5. Zmień hasło do panelu hostingu i włącz w nim weryfikację dwuetapową.
  6. Zmień hasła FTP/SFTP i do bazy danych.
  7. Zmień hasła wszystkich administratorów WordPressa, usuń nieznane konta.
  8. Wymień klucze bezpieczeństwa w wp-config.php, żeby unieważnić sesje.
  9. Zmień hasła do skrzynek pocztowych w domenie.
  10. Zgłoś problem hostingowi i poproś o logi z ostatnich dni.
  11. Oceń, czy na stronie były dane osobowe (formularze, konta klientów, zamówienia) - od tego zależą obowiązki z RODO.
  12. Zdecyduj, kto przeprowadzi czyszczenie: Ty, dotychczasowy wykonawca czy ktoś z zewnątrz.

Czyszczenie strony

Są dwie drogi i wybór zależy głównie od tego, czy masz czystą kopię zapasową.

Przywrócenie z czystej kopii

To najszybsza opcja, ale tylko wtedy, gdy wiadomo, kiedy nastąpiło włamanie, i masz kopię sprzed tego momentu. Problem w tym, że infekcja często siedzi na stronie tygodniami, zanim ktoś ją zauważy. Przywrócenie kopii z zeszłego tygodnia może przywrócić też złośliwy kod. Po przywróceniu trzeba od razu zaktualizować wszystko i zamknąć lukę, którą atakujący wszedł - inaczej wejdzie ponownie tą samą drogą.

Ręczne czyszczenie

Gdy czystej kopii nie ma albo nie wiadomo, od kiedy strona jest zainfekowana, trzeba ją wyczyścić ręcznie. W praktyce wygląda to tak:

  • pliki rdzenia WordPressa porównuje się z oryginałem z wordpress.org w tej samej wersji - wszystko, co się różni albo nie powinno istnieć, jest podejrzane. Najprościej podmienić rdzeń w całości na świeżą kopię,
  • wtyczki i motywy instaluje się na nowo z oficjalnego źródła (repozytorium WordPressa albo strona producenta), zamiast próbować czyścić istniejące pliki,
  • konta użytkowników - przegląd wszystkich kont, nie tylko administratorów, oraz usunięcie tych, których nikt nie rozpoznaje,
  • zadania cron - zarówno w WordPressie, jak i w panelu hostingu; złośliwe zadania potrafią odtwarzać usunięte pliki,
  • katalog uploads - powinny tam być obrazy i dokumenty, nie pliki PHP. Plik .php w wp-content/uploads to niemal zawsze sygnał infekcji,
  • baza danych - podejrzane wpisy w treściach, opcjach i widżetach (wstrzyknięte skrypty, ukryte linki).

Łatwo tu pominąć jedno „tylne wejście”, przez które atakujący wraca po tygodniu.

Znalezienie przyczyny

Bez ustalenia, którędy weszło włamanie, czyszczenie jest tylko gaszeniem pożaru. Najczęstsze przyczyny, które widzę w stronach firmowych:

  • nieaktualna wtyczka ze znaną luką bezpieczeństwa - to zdecydowanie najczęstszy scenariusz,
  • słabe albo powtórzone hasło do panelu, FTP lub hostingu,
  • porzucony motyw lub wtyczka - nieużywane, ale wciąż zainstalowane i od lat nieaktualizowane,
  • nulled plugins - „darmowe” wersje płatnych wtyczek z nieoficjalnych źródeł, które często mają wbudowany złośliwy kod od samego początku.

Tu przydają się logi serwera i kopia zainfekowanej strony, o której pisałem wyżej. Jeśli stronę przejmujesz od kogoś innego, warto przejść przez to systematycznie - opisuję to w artykule o przejęciu strony od poprzedniego wykonawcy.

Google Search Console: problemy z bezpieczeństwem

Jeśli Google oznaczył stronę jako niebezpieczną, samo wyczyszczenie jej nie usunie ostrzeżenia od razu. W Google Search Console znajdziesz raport „Problemy dotyczące bezpieczeństwa”. Pokazuje on, jaki rodzaj problemu wykryto (np. zhakowana witryna z wstrzykniętymi treściami albo złośliwe oprogramowanie) i przykładowe adresy, których dotyczy.

Po wyczyszczeniu strony i zamknięciu luki w tym samym raporcie składasz prośbę o weryfikację, opisując, co zostało zrobione. Kilka uwag:

  • zgłaszaj dopiero wtedy, gdy masz pewność, że strona jest czysta - odrzucona prośba wydłuża cały proces,
  • sprawdź listę użytkowników i właścicieli w Search Console - atakujący czasem dodaje tam własne konto,
  • usuń z indeksu podstrony ze spamem (powinny zwracać błąd 404 lub 410),
  • weryfikacja trwa zwykle od kilku dni do kilku tygodni, w zależności od rodzaju problemu.

RODO: czy trzeba zgłaszać włamanie do UODO

To punkt, o którym właściciele firm często zapominają. Jeśli na stronie były dane osobowe - formularze kontaktowe zapisywane w bazie, konta klientów, zamówienia w sklepie, lista mailingowa - włamanie może oznaczać naruszenie ochrony danych osobowych.

W takiej sytuacji jako administrator danych musisz ocenić ryzyko dla osób, których dane dotyczą. Jeśli naruszenie może skutkować ryzykiem naruszenia ich praw lub wolności, zgłaszasz je do Prezesa UODO bez zbędnej zwłoki, w miarę możliwości w ciągu 72 godzin od jego stwierdzenia. Zgłoszenie po tym terminie jest możliwe, ale trzeba wyjaśnić przyczyny opóźnienia. Przy wysokim ryzyku może być też konieczne zawiadomienie samych osób, których dane dotyczą.

Niezależnie od decyzji o zgłoszeniu, incydent warto opisać w wewnętrznym rejestrze naruszeń. Nie jestem prawnikiem, więc tę część zawsze zalecam skonsultować z inspektorem ochrony danych albo prawnikiem - najlepiej od razu, bo 72 godziny mijają szybko.

Jak zapobiegać włamaniom

Większość włamań na strony firmowe da się uniknąć dość prostymi środkami, stosowanymi regularnie:

  • aktualizacje WordPressa, wtyczek, motywów i PHP - robione na bieżąco, z kopią przed aktualizacją i sprawdzeniem strony po,
  • weryfikacja dwuetapowa (2FA) dla administratorów WordPressa i w panelu hostingu,
  • kopie zapasowe poza serwerem, z historią z kilku tygodni i - co najważniejsze - z testem odtworzenia. Kopia, której nikt nigdy nie przywrócił, to tylko nadzieja,
  • ograniczenie kont - tylko tyle administratorów, ile trzeba; reszta z niższymi uprawnieniami. Usuwanie kont byłych pracowników i wykonawców,
  • usunięcie nieużywanych wtyczek i motywów,
  • WAF (firewall aplikacyjny) - na poziomie hostingu, usługi zewnętrznej albo wtyczki,
  • monitoring dostępności strony, zmian w plikach i statusu w Google, żeby dowiedzieć się o problemie przed klientami.

Szerzej o tym, co powinna obejmować regularna opieka, piszę w artykule Opieka nad stroną internetową - co powinna obejmować.

Najczęstsze pytania

Czy wystarczy zainstalować wtyczkę bezpieczeństwa, żeby usunąć wirusa?

Wtyczka może pomóc wykryć część zmian, ale nie zastąpi czyszczenia. Działa wewnątrz zainfekowanej instalacji, nie widzi wszystkiego, co jest na serwerze, i nie zamknie luki, którą wszedł atakujący. Traktuj ją jako jedno z narzędzi, nie rozwiązanie.

Czy mogę po prostu postawić stronę od nowa?

Czasem to najrozsądniejsza opcja, szczególnie przy starej, zaniedbanej stronie. Trzeba jednak przenieść treści i bazę z ostrożnością, bo złośliwy kod potrafi siedzieć także w bazie danych. I nadal warto ustalić przyczynę, żeby nie powtórzyć błędu.

Jak długo Google będzie pokazywał ostrzeżenie?

Po wyczyszczeniu strony i złożeniu prośby o weryfikację w Search Console - zwykle od kilku dni do kilku tygodni. Bez prośby ostrzeżenie może utrzymywać się dłużej.

Hosting zablokował mi stronę. Co dalej?

Poproś o szczegóły (co wykryto, które pliki, logi) i ustal warunki odblokowania. Najczęściej trzeba wyczyścić stronę i potwierdzić to hostingowi.

Podsumowanie

Zhakowana strona WordPress to sytuacja stresująca, ale do opanowania. W pierwszej godzinie zabezpiecz dowody, odetnij dostęp i zmień hasła. Potem spokojnie wyczyść stronę, znajdź przyczynę, zgłoś stronę do weryfikacji w Google i oceń obowiązki z RODO.

W ramach opieki nad stroną (250 zł brutto miesięcznie) zajmuję się aktualizacjami, kopiami zapasowymi poza serwerem, monitoringiem i reakcją na awarie - także usuwaniem skutków włamań. Jeśli Twoja strona została zaatakowana albo chcesz uniknąć tego scenariusza, napisz do mnie.

› kontakt

Zaczynamy od rozmowy

15 minut, bez zobowiązań. Powiesz, co chcesz zrobić - powiem, czy to dla mnie i ile mniej-więcej kosztuje.

albo napisz: bartosz@it-art.pl