Bezpieczeństwo i naprawa

Usuwanie wirusa z WordPressa i Joomli.

Najważniejsza część tej pracy jest niewidoczna. Usunięcie wstrzykniętego spamu zajmuje chwilę i każdy skaner to zrobi. Trudne jest znalezienie backdoora ukrytego w pliku o nazwie udającej systemową i ustalenie, którędy atakujący wszedł, bo bez tego infekcja wraca w ciągu kilku dni.

Za tę samą cenę oferujemy alternatywę: migrację na MaiCMS, po której strona jest statycznym HTML i przestaje wymagać aktualizacji. Przy drugim albo trzecim włamaniu w ciągu roku rekomendujemy właśnie ją.

Czy wtyczka antywirusowa nie wystarczy?

Nie, i to nie kwestia jakości narzędzia. Skaner porównuje pliki z wzorcami znanych infekcji, więc nie widzi kodu napisanego na jedno konkretne włamanie. Nie zagląda też do bazy danych, gdzie siedzi znaczna część wstrzyknięć. A przede wszystkim nie zamyka luki wejściowej, więc po sprzątnięciu objawów infekcja wraca tą samą drogą.

Osobna sprawa: część narzędzi reklamowanych jako skanery to same trojany, a instalujesz je z panelu, do którego atakujący może już mieć dostęp.

Gdzie w WordPressie siedzi infekcja

Sześć miejsc, które przechodzimy przy każdej naprawie. Skanery wtyczkowe zaglądają zwykle tylko do pierwszego z nich.

01

Pliki motywu i rdzenia

Wstrzyknięty kod trafia najczęściej na koniec pliku funkcji motywu albo do plików nagłówka i stopki, czyli tam, gdzie wykonuje się przy każdym wejściu na stronę. Bywa dopisany po kilkuset pustych liniach, żeby nie było go widać przy pobieżnym przeglądaniu.

skutek Przekierowania, wstrzyknięte reklamy, obcy skrypt na każdej podstronie.
02

Baza danych

Spam w treści wpisów, dopisane opcje motywu, wstrzyknięty skrypt w polach konfiguracyjnych. Tego nie widzi żaden skaner plików, a wystarcza, żeby strona dalej serwowała obce treści po wyczyszczeniu katalogów.

skutek Infekcja wraca natychmiast po podmianie plików na czyste.
03

Backdoory i webshelle

Ukryty plik PHP, który pozwala atakującemu wracać niezależnie od zmienionych haseł. Leży zwykle tam, gdzie nie powinno być żadnego pliku wykonywalnego: w katalogu z wgranymi obrazkami albo w folderze pamięci podręcznej, pod nazwą udającą systemową.

skutek Bez usunięcia backdoora każde czyszczenie jest tymczasowe.
04

Ukryte konta administratora

Konto założone przez atakującego, często o nazwie przypominającej techniczną, z pełnymi uprawnieniami. Pozwala wrócić przez zwykłe logowanie, więc nie wymaga już żadnego exploita.

skutek Atakujący ma uprawnienia właściciela strony.
05

Plik konfiguracyjny serwera

Przerobiony plik .htaccess przekierowuje wybrany ruch: tylko z telefonów, tylko z wyników wyszukiwania albo tylko przy pierwszej wizycie. Dlatego właściciel często nie widzi problemu na własnym komputerze.

skutek Przekierowania, których nie da się odtworzyć na żądanie.
06

Zadania cykliczne i skrypty pocztowe

Zaplanowane zadanie, które co kilka godzin przywraca usunięty kod, albo skrypt rozsyłający spam z Twojego serwera. To ostatnie kończy się wpisaniem domeny na czarne listy poczty.

skutek Poczta z domeny przestaje dochodzić, infekcja odtwarza się sama.

Co robimy przy odwirusowaniu

Opisujemy zakres i kolejność, nie podajemy poleceń. Usunięcie infekcji jest naszą płatną usługą, a niepełna instrukcja w rękach osoby bez doświadczenia zwykle kasuje działającą część strony i zostawia backdoora.

Zakres prac za 850 zł

  1. Kopia stanu zastanego. Pełna kopia plików i bazy przed jakąkolwiek zmianą.
  2. Ustalenie drogi wejścia. Logi serwera, daty modyfikacji plików, wersje wtyczek i rdzenia, historia logowań do panelu.
  3. Czyszczenie plików. Usunięcie wstrzyknięć z motywu i rdzenia, przywrócenie oryginalnych plików systemowych.
  4. Czyszczenie bazy. Spam z treści, dopisane opcje, wstrzyknięte skrypty w polach konfiguracyjnych.
  5. Usunięcie trwałego dostępu. Backdoory, webshelle, ukryte konta administratora, podejrzane zadania cykliczne.
  6. Przywrócenie konfiguracji serwera. Plik .htaccess do stanu bez przekierowań i bez reguł dopisanych przez atakującego.
  7. Aktualizacje i wzmocnienie. Rdzeń, wtyczki, uprawnienia plików, nagłówki bezpieczeństwa, wymuszenie HTTPS.
  8. Wymiana haseł i kluczy. Po zamknięciu wejścia, nie przed, żeby nowe hasła nie zostały przechwycone.
  9. Zdjęcie ostrzeżenia. Wniosek o ponowne sprawdzenie w Google i pilnowanie, aż komunikat zniknie.
  10. Raport końcowy. Co znaleźliśmy, którędy wszedł atakujący, do jakich danych mógł mieć dostęp, co zmieniliśmy.

Czego nie robimy

  • Nie podajemy kodu naprawy ani poleceń konsolowych. Opisujemy, co i dlaczego, ale wykonanie zostaje po naszej stronie.
  • Nie obiecujemy, że WordPress będzie bezpieczny na stałe. Ryzyko wraca z każdą nową luką we wtyczce. To cecha ekosystemu, nie skutek naszej pracy.
  • Nie instalujemy wtyczek bezpieczeństwa jako rozwiązania problemu. Kolejny dodatek to kolejna powierzchnia ataku, a nie zabezpieczenie.
  • Nie kończymy na przywróceniu kopii zapasowej. Backup cofa stronę do stanu przed infekcją, ale luka wraca razem z nim.

Żeby nie wróciło

  • Zamknięcie drogi wejścia jest w cenie każdej naprawy. To jedyny krok, który realnie odcina powrót tą samą ścieżką.
  • Mniej wtyczek. Każdy dodatek to osobny kod, którego nie kontrolujesz. Przy naprawie mówimy, co da się usunąć bez straty funkcji.
  • Stała opieka, 170 zł/mies. Aktualizacje, monitoring, kopie i reakcja na incydent. Dla strony zostającej na WordPressie to najtańsze realne zabezpieczenie.
  • Albo wyjście z modelu. Migracja na MaiCMS lub odbudowa za 1700 zł: opublikowana strona jest statycznym HTML, bez panelu logowania i bez wtyczek do złamania.

Skąd atakujący wchodzą najczęściej

Kolejność odpowiada temu, co znajdujemy w praktyce. Pierwsza pozycja to zdecydowana większość przypadków.

Drogi wejścia i sposób zamknięcia
Droga wejścia Jak to wygląda Czym zamykamy
Luka w wtyczce albo motywie Podatność jest publicznie udokumentowana, a automatyczne skanery szukają stron, które jej nie załatały. Od publikacji do pierwszej próby ataku mijają godziny. Aktualizacja albo usunięcie dodatku, przegląd pozostałych wtyczek pod kątem znanych podatności
Przejęty panel administracyjny Słabe albo powtórzone hasło, brak drugiego składnika uwierzytelnienia, wyłudzenie danych przez fałszywą stronę logowania. Atakujący ma wtedy uprawnienia właściciela. Usunięcie obcych kont, wymiana haseł i kluczy sesji po zamknięciu wejścia, wzmocnienie logowania
Wtyczka do wgrywania plików Historycznie najczęstsze źródło zdalnego wykonania kodu. Pozwala wgrać plik PHP tam, gdzie powinny trafiać tylko obrazki. Usunięcie dodatku, zablokowanie wykonywania kodu w katalogach z wgranymi plikami
Stara wersja rdzenia System nieaktualizowany od miesięcy, z czerwonym powiadomieniem w panelu, którego nikt nie klikał. Aktualizacja rdzenia i sprawdzenie zgodności motywu oraz wtyczek
Sąsiednia strona na tym samym koncie Na jednym hostingu stoi kilka stron. Infekcja jednej rozchodzi się na pozostałe przez wspólne uprawnienia plików. Sprawdzenie całego konta, nie tylko jednej strony, i rozdzielenie uprawnień
Dodatek przejęty po sprzedaży Wtyczka działała latami, zmienił się właściciel, a w aktualizacji pojawił się obcy kod. Aktualizacja sama wnosi wtedy infekcję. Usunięcie dodatku i zastąpienie go rozwiązaniem, które nie wymaga zewnętrznego kodu

Jeśli na stronie były przetwarzane dane osobowe, w raporcie opisujemy, do jakich danych atakujący mógł mieć dostęp. Zgłoszenie naruszenia do Prezesa UODO w ciągu 72 godzin jest obowiązkiem administratora danych, czyli Twoim, ale powinno opierać się na faktach z raportu, a nie na domysłach. Nie jesteśmy kancelarią i nie zastępujemy porady prawnej.

Najczęstsze pytania

Czy wtyczka antywirusowa wystarczy do usunięcia wirusa z WordPressa?

Nie, z trzech powodów. Pierwszy: skaner porównuje pliki z wzorcami znanych infekcji, więc nie widzi kodu napisanego na jedno konkretne włamanie ani backdoora ukrytego w pliku o nazwie wyglądającej jak systemowa. Drugi: skaner działa na plikach, a znaczna część wstrzyknięć siedzi w bazie danych, w treści wpisów i w opcjach motywu. Trzeci i najważniejszy: nawet gdy skaner usunie widoczną infekcję, nie zamyka luki, którą atakujący wszedł, więc infekcja wraca zwykle w ciągu kilku dni.

Dodatkowo część narzędzi reklamowanych jako skanery to same trojany, a instalujesz je z panelu, do którego atakujący może już mieć dostęp.

Dlaczego infekcja wraca po wyczyszczeniu strony?

Bo w serwisie został backdoor: ukryty plik PHP, który pozwala atakującemu wrócić niezależnie od zmienionych haseł. Typowo leży w katalogu, w którym nie powinno być żadnego pliku wykonywalnego, na przykład w folderze z wgranymi obrazkami albo w katalogu pamięci podręcznej, i nosi nazwę udającą plik systemowy.

Drugą przyczyną jest niezałatana luka: dopóki podatna wtyczka albo stara wersja rdzenia zostaje na miejscu, skanery atakujących znajdą stronę ponownie w ciągu kilku dni. Dlatego usuwanie infekcji bez zamknięcia drogi wejścia jest tylko odroczeniem problemu.

Skąd atakujący najczęściej wchodzi do WordPressa?

Najczęściej przez lukę w dodatku zewnętrznym: wtyczce, motywie albo bibliotece. Luki te są publicznie udokumentowane, a automatyczne skanery nieustannie szukają stron, które ich nie załatały, więc od publikacji podatności do pierwszej próby ataku mijają godziny.

Historycznie najczęstszym źródłem były wtyczki do wgrywania plików, formularze bez aktualizacji, wtyczki galerii oraz dodatki przejęte przez nowych właścicieli po sprzedaży. Druga droga to przejęcie panelu administracyjnego: słabe albo powtórzone hasło, brak drugiego składnika uwierzytelnienia, wyłudzenie danych przez fałszywą stronę logowania.

Ile kosztuje odwirusowanie strony WordPress?

850 zł netto plus 23% VAT za typową stronę firmową: wizytówkę albo stronę usługową bez sklepu i bez rozbudowanych integracji. W tej kwocie jest czyszczenie plików i bazy, usunięcie backdoorów, aktualizacje, wzmocnienie zabezpieczeń, wniosek o zdjęcie ostrzeżenia Google i raport.

Alternatywą za tę samą cenę jest migracja na MaiCMS, po której strona przestaje wymagać aktualizacji. Serwisy ze sklepem, panelem klienta albo autorskimi integracjami wyceniamy od 1700 zł, bo wymagają przejścia kodu aplikacji, a nie tylko plików szablonu.

Czy po odwirusowaniu WordPress będzie bezpieczny na stałe?

Nie ma takiej gwarancji i nikt uczciwie jej nie da. Po naprawie strona jest czysta, a droga wejścia zamknięta, ale ryzyko wraca z każdą nową luką ujawnioną w którejkolwiek z zainstalowanych wtyczek. To cecha całego ekosystemu, nie skutek naszej pracy.

Są dwa sposoby, żeby to ryzyko realnie obniżyć: stała opieka za 170 zł miesięcznie, w której pilnujemy aktualizacji i reagujemy na incydent, albo wyjście z tego modelu przez migrację na MaiCMS lub odbudowę, po których opublikowana strona jest statycznym HTML bez panelu logowania i bez wtyczek.

Strona rozsyłała spam. Czy muszę zgłosić to do UODO?

Sam spam wychodzący z serwera nie jest jeszcze naruszeniem ochrony danych osobowych. Obowiązek zgłoszenia do Prezesa UODO powstaje wtedy, gdy incydent dotyczył danych osobowych, na przykład gdy atakujący miał dostęp do bazy z kontami klientów, zamówieniami albo zgłoszeniami z formularzy. Termin to 72 godziny od stwierdzenia naruszenia.

Nie jesteśmy kancelarią i nie zastępujemy porady prawnej, ale w raporcie z naprawy opisujemy, do jakich danych atakujący mógł mieć dostęp, żeby dało się tę ocenę przeprowadzić na faktach, a nie na domysłach.

Naprawiacie też Joomlę i inne systemy?

Tak. Joomla jest objęta tą samą ceną i tym samym zakresem co WordPress, bo mechanika włamania jest zbliżona: luka w rozszerzeniu albo przejęty panel, potem backdoor i wstrzyknięcie.

Przy innych systemach zaczynamy od bezpłatnego audytu i wtedy mówimy, czy zakres mieści się w cenie typowej naprawy, czy jest to praca dla ścieżki dla serwisów rozbudowanych.

Powiązane strony

– zacznij od audytu

Sprawdzimy, co siedzi w Twojej stronie.

Podaj adres. Audyt zewnętrzny wykrywa ukryte elementy, wstrzyknięty spam, cloaking i podejrzane przekierowania bez żadnych dostępów. Potem dostajesz zakres i cenę, zanim cokolwiek zaczniemy.

  • Audyt bez dostępów
  • Cena 850 zł netto
  • 1 do 3 dni roboczych
  • Raport z naprawy