Zhakowana strona WordPress: co zrobić w pierwszej godzinie
Dzwoni telefon albo przychodzi mail z hostingu: strona rozsyła spam. Albo wchodzisz na własną witrynę z telefonu i zamiast niej widzisz obcą reklamę. Pierwsza godzina po takim odkryciu decyduje o tym, czy naprawa zajmie pół dnia, czy tydzień — i czy w ogóle da się ustalić, którędy ktoś wszedł.
Ten tekst jest o tej pierwszej godzinie. Nie o czyszczeniu — o tym, żeby sobie nie zaszkodzić, zanim ktokolwiek zacznie czyścić.
Najpierw: czego nie robić
Odruch jest zawsze ten sam — usunąć to, co wygląda podejrzanie, i mieć spokój. To właśnie ten odruch najczęściej przedłuża sprawę o kilka dni.
Nie kasuj plików na oślep
Skasowany plik to skasowany dowód. Dopóki nie wiadomo, którędy ktoś wszedł, każdy podejrzany plik jest informacją: kiedy powstał, z jakimi uprawnieniami, obok czego leży. Po usunięciu zostaje tylko pewność, że „coś tam było”.
Gorsze jest to, że usunięcie pliku rzadko kończy infekcję. Przy jednej ze stron, które czyściłem, złośliwy kod siedział w bazie danych i w zadaniu cyklicznym — pliki wracały same, godzinę po każdym usunięciu. Opisałem to w case study o ukrytej wtyczce.
Nie instaluj WordPressa od nowa na tym samym koncie
Czysta instalacja na zainfekowanym koncie hostingowym to czysta instalacja obok infekcji, nie zamiast niej. Jeśli atakujący zostawił furtkę poza katalogiem WordPressa — a zostawia ją prawie zawsze — wróci do nowej strony tą samą drogą.
Nie zmieniaj haseł jako pierwszej czynności
To brzmi wbrew intuicji, ale kolejność ma znaczenie. Zmiana hasła przy aktywnej infekcji informuje atakującego, że został zauważony — a przy dostępie do plików i tak zmieni je z powrotem. Hasła zmienia się po zabezpieczeniu kopii i po zamknięciu drogi wejścia, nie przed.
Nie zgłaszaj strony do ponownego sprawdzenia w Google
Dopóki strona nie jest naprawdę czysta. Nieudane zgłoszenie wydłuża kolejkę przy kolejnym — a kolejne zawsze będzie, jeśli pierwsze poszło za wcześnie.
Co zrobić w tej pierwszej godzinie
1. Zrób pełną kopię — razem z infekcją
Pliki i baza danych, w stanie, w jakim są. To brzmi dziwnie: po co kopiować zarażoną stronę? Bo to jedyny materiał, z którego da się potem ustalić, co się stało. Kopia robiona po czyszczeniu jest bezużyteczna.
Jeśli hosting robi kopie automatycznie, sprawdź, ile wstecz sięgają i zabezpiecz tę sprzed infekcji, zanim zostanie nadpisana. Przy tygodniowej rotacji masz na to kilka dni, nie kilka tygodni.
2. Pobierz logi serwera
To najczęściej pomijany krok i jednocześnie ten, który najwięcej daje. W logach dostępu widać, który adres i o której godzinie wywołał plik, którego nie powinno być. Bez nich droga wejścia zwykle zostaje hipotezą; z nimi da się ją zwykle wskazać palcem.
Problem w tym, że logi na współdzielonym hostingu żyją krótko — czasem trzy dni. Dlatego pobiera się je w pierwszej godzinie, a nie w weekend, kiedy będzie czas.
3. Sprawdź konta administratorów
W panelu WordPressa, w liście użytkowników. Szukasz kont, których nie zakładałeś — często z nazwą przypominającą systemową i adresem e-mail w obcej domenie. Zrób zrzut ekranu zamiast od razu kasować: to dowód i wskazówka, kiedy infekcja się zaczęła.
Przy jednej ze stron obce konto administratora działało od tygodni, a właściciel zorientował się dopiero, gdy wyłączyły się aktualizacje. Opisałem tamtą sprawę w case study o luce w rdzeniu WordPressa.
4. Sprawdź, czy strona nie jest podpięta do obcego konta w narzędziach Google
Search Console, zakładka z użytkownikami i właścicielami. Dodanie się tam to typowy ślad po włamaniu — i ten, o którym mało kto pamięta. Dzięki temu atakujący widzi, jak jego spam radzi sobie w wynikach wyszukiwania, i dostaje powiadomienia szybciej niż Ty.
5. Zdecyduj, czy strona ma zostać włączona
Jeśli infekcja szkodzi odwiedzającym — przekierowania, podstawione płatności, ostrzeżenie w przeglądarce — rozważ wyłączenie strony na kilka godzin. Jeśli „tylko” podsuwa spam robotom Google, zwykle lepiej zostawić ją włączoną i czyścić na kopii, bo zniknięcie z wyników kosztuje więcej niż kilka dni ze spamem w indeksie.
To jest decyzja biznesowa, nie techniczna. Nikt nie powinien podejmować jej za Ciebie — ale powinien powiedzieć, co z niej wynika.
Kiedy oddać to komuś
Jeżeli po pierwszej godzinie potrafisz odpowiedzieć na pytanie „którędy weszli”, poradzisz sobie dalej sam. Jeżeli nie potrafisz, każda kolejna godzina samodzielnego czyszczenia zwykle zwiększa koszt — bo znikają ślady, a infekcja wraca.
Trzy sytuacje, w których nie warto próbować dalej samemu:
- infekcja wraca po usunięciu — to znaczy, że mechanizm odtwarzania siedzi w bazie, w zadaniu cyklicznym albo w drugim koncie,
- w grę wchodzi sklep i dane klientów — tu dochodzą obowiązki, których nie da się nadrobić później,
- strona zarabia i każda godzina przerwy kosztuje więcej niż naprawa.
Czego nie da się obiecać
Że to się nie powtórzy. Można zamknąć drogę, którą ktoś wszedł — i to jest sedno porządnej naprawy. Ale nikt nie zagwarantuje, że za pół roku nie pojawi się nowa luka w którejś z wtyczek. Ryzyko powrotu zależy głównie od tego, czy strona jest aktualizowana. To jedyny powód, dla którego po czyszczeniu proponuję opiekę — nie dlatego, że tak wypada.
Jeśli potrzebujesz pomocy teraz
Zajmuję się naprawą stron WordPress i usuwaniem infekcji. Diagnoza jest bezpłatna, odpowiadam tego samego dnia, a wycenę podaję po obejrzeniu strony — nie z cennika na oko. Analizę i czyszczenie robię na kopii, poza działającym serwerem, więc Twoja strona nie musi być w tym czasie wyłączona.
Jeśli sprawa jest pilna, najszybciej będzie zadzwonić: +48 505 99 67 34.