Usuwanie wirusów z WordPressa

Odwirusowanie zhakowanej strony. Google pokazuje przy Twojej stronie ostrzeżenie, strona przekierowuje odwiedzających w dziwne miejsca albo hosting właśnie zablokował konto. To nie jest awaria, którą da się przeczekać — z każdą godziną tracisz ruch, zaufanie i pozycje w wyszukiwarce. Czyszczę stronę ze złośliwego kodu, łatam dziurę, którą ktoś wszedł, i doprowadzam do zdjęcia ostrzeżenia w Google. Zielona Góra i cała Polska, zdalnie.

Po czym poznasz, że masz problem

Google ostrzega przed Twoją stroną

Zamiast strony odwiedzający widzi czerwony ekran „Ta witryna może wyrządzić szkody na Twoim komputerze”. To najkosztowniejszy objaw — ruch z wyszukiwarki spada praktycznie do zera w ciągu doby.

Strona przekierowuje gdzieś indziej

Wchodzisz na swój adres, a po chwili ląduje na kasynie albo obcojęzycznym sklepie. Czasem dzieje się to tylko na telefonie albo tylko przy wejściu z Google — i dlatego Ty tego nie widzisz, a klienci tak.

W Google są nie Twoje treści

Wpisujesz nazwę firmy, a w wynikach pokazują się tytuły po japońsku albo oferty leków. Ktoś dopisał do Twojej strony setki podstron i używa Twojej domeny do własnego pozycjonowania.

Hosting zablokował konto albo pisze o spamie

Z Twojego serwera wychodzą tysiące maili, o których nie masz pojęcia. Firma hostingowa najpierw ostrzega, potem wyłącza konto — i wtedy strona nie działa w ogóle.

W panelu jest administrator, którego nie dodawałeś

Albo nie możesz się już zalogować na własne konto. To oznacza, że ktoś ma dostęp do środka, a nie tylko podrzucił plik.

Strona nagle zwolniła albo sypie błędami

Złośliwy kod zwykle coś robi w tle — rozsyła spam, kopie kryptowaluty, przemiela bazę. Serwer, który wcześniej wyrabiał, przestaje nadążać.

Zanim cokolwiek zrobisz

Trzy rzeczy, które najczęściej pogarszają sytuację, zanim w ogóle zdążę zajrzeć.

Nie przywracaj starej kopii

Przywrócenie sprzed tygodnia zwykle cofa też dziurę, przez którą ktoś wszedł. Po kilku godzinach jesteś w tym samym miejscu, tylko bez świeższych treści i zamówień.

Nie kasuj plików na ślepo

Złośliwy kod bardzo często siedzi wewnątrz normalnych plików motywu albo w bazie danych. Kasowanie tego, co wygląda podejrzanie, kończy się zwykle białym ekranem i dodatkową robotą.

Zmień hasła, ale wszystkie

Panel WordPressa to za mało — liczy się też hosting, baza danych i FTP. Zmiana jednego z nich daje złudne poczucie, że sprawa załatwiona.

Co robię

1. Zabezpieczam stan na teraz

Zanim cokolwiek ruszę, robię kopię plików i bazy w obecnym stanie, razem z infekcją. To materiał dowodowy i punkt odwrotu, gdyby coś poszło nie tak.

2. Szukam, co i gdzie siedzi

Skanuję pliki i bazę, porównuję pliki WordPressa i wtyczek z oryginałami z repozytorium, przeglądam logi serwera. Zwykle to właśnie logi mówią, kiedy i którędy ktoś wszedł.

3. Usuwam złośliwy kod

Wstrzyknięcia w plikach, podrzucone pliki, wpisy w bazie, lewe konta administratorów, zadania uruchamiające się w tle. Strona zostaje ta sama — znika tylko to, czego tam być nie powinno.

4. Zatykam dziurę

Bez tego kroku za tydzień jesteśmy w punkcie wyjścia. Aktualizuję WordPressa, motyw i wtyczki, usuwam porzucone przez autorów, poprawiam uprawnienia plików i wymieniam klucze bezpieczeństwa, żeby wylogować wszystkich zalogowanych.

5. Zdejmuję ostrzeżenie w Google

Zgłaszam stronę do ponownego sprawdzenia w Search Console. Sama weryfikacja trwa od kilkunastu godzin do kilku dni — to już po stronie Google, ale pilnuję, żeby zgłoszenie było kompletne i nie wróciło odrzucone.

6. Zabezpieczam na przyszłość

Wtyczka zabezpieczająca z sensowną konfiguracją, ograniczenie prób logowania, blokada wykonywania kodu tam, gdzie wgrywane są pliki. Dostajesz krótkie podsumowanie: co znalazłem, którędy weszli i co dalej.

Jak to wygląda w praktyce? Opisałem krok po kroku jeden taki przypadek: strona, która ładowała się normalnie, a w środku miała ślady dwóch włamań, malware podszywający się pod aktualizator i siedem tysięcy obcych plików. Zobacz całą analizę.

Ile to kosztuje

Strona firmowa lub blog — 1 000 zł

Pełne czyszczenie, zatkanie dziury, zgłoszenie do Google i zabezpieczenie na przyszłość. Cena jest stała i nie rośnie w trakcie.

Sklep internetowy — 1 750 zł

Drożej, bo w sklepie trzeba dodatkowo sprawdzić, czy nikt nie podmienił formularza płatności, przejrzeć zamówienia z okresu infekcji i upewnić się, że dane klientów nie wyciekają dalej.

Opieka taniej o połowę

Jeśli po czyszczeniu zdecydujesz się na opiekę, pierwszy rok jest 50% taniej. Nie po to, żeby coś dosprzedać — strona, która raz padła, zwykle pada drugi raz, jeśli nikt jej nie aktualizuje.

Jeśli po oględzinach okaże się, że infekcja jest głębsza, niż wyglądało — dowiesz się o tym przed rozpoczęciem pracy, a nie na fakturze.

Dlaczego nie 499 zł

Takie oferty w sieci są i wyglądają kusząco, tylko że słowo „od” robi tam całą robotę. Realny rachunek za wyczyszczenie zhakowanej strony kończy się zwykle między 1 500 a 2 500 zł, bo dopiero po wejściu widać, ile tego jest. Wolę podać cenę, przy której zostaję, niż zacząć od 499 zł i dopisywać w trakcie.

Jak zaczynamy

1. Piszesz i podajesz adres

Wystarczy adres strony i dwa zdania o tym, co się dzieje. Jeśli masz maila z hostingu albo zrzut ekranu z ostrzeżeniem — dołącz, to skraca oględziny.

2. Oglądam

Wstępne rozpoznanie robię z zewnątrz, bez dostępów. Odpisuję, co widzę, ile to potrwa i czy mieścimy się w cenie podstawowej.

3. Czyszczę

Potrzebuję dostępu do panelu WordPressa i do hostingu. Zwykle zamykam się w jednym dniu roboczym, przy głębszych infekcjach w dwóch.

4. Zgłaszam i przekazuję

Dostajesz działającą stronę, zgłoszenie do ponownego sprawdzenia w Google i podsumowanie: co było, skąd się wzięło i co dalej.

Zaczynamy?

Im dłużej strona jest zainfekowana, tym trudniej odbudować pozycje w Google — i tym większa szansa, że hosting wyłączy konto.

Najczęściej zadawane pytania (FAQ)

Zwykle jeden dzień roboczy, przy głębszych infekcjach dwa. Osobną sprawą jest zdjęcie ostrzeżenia w Google — weryfikacja po ich stronie trwa od kilkunastu godzin do kilku dni i nie mam na to wpływu.

Nie. Zanim cokolwiek ruszę, robię kopię plików i bazy w stanie bieżącym. Usuwam wyłącznie złośliwy kod, a nie Twoje treści — strona po czyszczeniu wygląda tak samo jak przed infekcją.

Do samego czyszczenia tak — spora część złośliwego kodu siedzi w plikach i bazie, do których z poziomu panelu WordPressa się nie dostanę. Wstępne oględziny robię z zewnątrz, bez żadnych dostępów.

Czyszczenie zawsze kończę zatkaniem dziury, którą ktoś wszedł, więc ten sam scenariusz się nie powtarza. Strona zainfekowana ponownie w ciągu 30 dni tą samą drogą — poprawiam bez dodatkowej opłaty. Nowa infekcja po nieaktualizowanej przez pół roku wtyczce to już inna sprawa i dlatego proponuję opiekę.

Najczęściej z logów serwera i z dat modyfikacji plików. W większości przypadków to nieaktualizowana wtyczka albo motyw z nielegalnego źródła, rzadziej słabe hasło do panelu lub FTP. Dostajesz tę informację w podsumowaniu.

Nie, zgłoszenie do ponownego sprawdzenia składam ja, przez Search Console. Potrzebuję tylko, żebyś dodał mnie jako użytkownika albo przekazał dostęp — jeśli nie masz jeszcze Search Console, zakładam ją przy okazji.