Strona ciągle jest hakowana: jak znaleźć backdoora
Jeśli już czyściłeś stronę, a dzień lub tydzień później znów jest zainfekowana, przyczyna jest niemal zawsze ta sama: usunąłeś objaw, ale nie zamknąłeś wejścia. Został backdoor, ukryty skrypt, przez który infekcja wraca automatycznie. Dopóki żyje, czyszczenie nie ma sensu: kod jest wgrywany ponownie tą samą drogą. Poniżej: czym jest backdoor, gdzie się ukrywa, jak go znaleźć i jak zamknąć wejście, aby strona przestała być hakowana.
Dlaczego strona jest hakowana wciąż od nowa
Ponowne włamanie to nie pech, lecz prawidłowość. Przyczyna zawsze jest taka, że poprzednie czyszczenie było niepełne:
- Usunięto widoczną infekcję (przekierowanie, strony spamowe), ale nie tknięto mechanizmu, który ją tworzy.
- Został backdoor: plik lub fragment kodu dający atakującemu dostęp z pominięciem hasła.
- Nie zamknięto podatności, przez którą weszli za pierwszym razem, więc mogą wejść ponownie.
Usunąć infekcję i zamknąć wejście to dwie różne prace. Bez tej drugiej strona jest hakowana ponownie tą samą drogą, często tego samego dnia.
Sprawdź stronę teraz
Narzędzie otworzy Twoją stronę z zewnątrz tak, jak widzi ją wyszukiwarka i odwiedzający z telefonu. Aktywną infekcję, przekierowanie i cloaking będzie widać od razu, a także przestarzałą wersję CMS, która zwykle jest wejściem. Dostęp do strony nie jest potrzebny.
Czym jest backdoor i gdzie się ukrywa
Backdoor to ukryte wejście pozostawione po włamaniu. Trudno je znaleźć, bo się maskuje. Typowe miejsca:
- Web shell: osobny plik .php o losowej nazwie w folderze uploads, media lub w cache.
- Wstawka w legalnym pliku: jeden wiersz w
index.php,functions.phplub pliku szablonu, często przezeval(base64_decode(...)). - Plik podszywający się pod obraz: .php zamaskowany jako obrazek lub ikona.
- W bazie danych: kod w parametrach szablonu lub we wpisach, wykonywany przy ładowaniu strony.
- Zadanie cron: odtwarza usunięte pliki według harmonogramu.
- Obcy administrator w CMS lub nowy właściciel w Search Console.
Jak znaleźć backdoora
Kolejność, która naprawdę znajduje ukryte wejście:
- Porównaj pliki z pewną czystą kopią CMS: wszystko zbędne jest podejrzane.
- Posortuj pliki według daty modyfikacji: zainfekowane zwykle zmieniano w tym samym czasie.
- Poszukaj w kodzie podejrzanych funkcji:
eval,base64_decode,gzinflate,assert,preg_replacez modyfikatorem e. - Sprawdź foldery, w których nie powinno być .php: uploads, images, media.
- Sprawdź zadania cron i listę administratorów CMS.
- W bazie sprawdź parametry szablonu i wpisy służbowe pod kątem obcego kodu.
Dlaczego antywirus hostingu go nie znajduje
Bardzo częsta pułapka: hosting pisze „wszystko czyste", a strona wciąż jest hakowana. Powody są dwa. Pierwszy: antywirus szuka plików według znanych sygnatur, a backdoor jest albo zaciemniony (zaszyfrowany), albo wygląda jak legalny kod. Drugi: część mechanizmu siedzi w bazie danych lub w zadaniu cron, a nie w plikach. Pliki są przy tym naprawdę czyste i skaner uczciwie to pokazuje.
Dlatego „hosting powiedział, że wszystko gra" nie oznacza, że backdoor został usunięty. Sprawdzać trzeba też zaciemniony kod, bazę i cron, a nie tylko sygnatury w plikach.
Jak zamknąć wejście na dobre
Aby strona przestała być hakowana, samo usunięcie backdoora nie wystarczy. Trzeba zamknąć same drzwi:
- Znajdź punkt wejścia w logach serwera: przez które rozszerzenie lub podatność weszli.
- Zaktualizuj CMS i wszystkie rozszerzenia do wspieranych wersji, usuń nieużywane.
- Zmień wszystkie hasła i klucze: panel administracyjny, FTP i SSH, baza, panel hostingu, tajne klucze CMS.
- Upewnij się, że nie zostały inne backdoory ani zadania cron.
- Ogranicz dostęp do panelu administracyjnego, włącz podstawową ochronę i skonfiguruj czyste kopie zapasowe.
Jeśli strona jest na Joomli lub WordPressie
Joomla. Szczególnie narażona jest Joomla 3: bez aktualizacji zabezpieczeń od 17 sierpnia 2023. Wchodzą przez rozszerzenia (JCE, SP Page Builder) lub framework Helix3, a backdoora ukrywają w folderze media lub w parametrach szablonu w bazie. Bez przejścia na wersję 5 lub 6 strona jest infekowana ponownie.
WordPress. Sprawdź folder wp-content (katalog mu-plugins, folder uploads pod kątem .php), plik wp-config.php, functions.php aktywnego motywu i tabelę wp_options. Wejściem zwykle pozostaje zaniedbana lub podatna wtyczka.
Kiedy wezwać specjalistę
Warto nie tracić czasu, jeśli:
- już czyściłeś stronę dwa lub więcej razy, a infekcja wraca;
- backdoor się nie znajduje, a strona wciąż jest hakowana;
- kod jest zaciemniony lub siedzi w bazie, a antywirus hostingu milczy;
- hosting zablokował konto za złośliwe oprogramowanie;
- nie ma działającej czystej kopii zapasowej.
Znajduję i usuwam backdoory na dowolnym CMS oraz zamykam punkt wejścia, aby strona przestała być hakowana, zamiast tylko czyścić objaw. Diagnostyka jest bezpłatna. Pracuję z właścicielami stron z Ukrainy, z Polski i z rosyjskojęzycznymi w UE. Z osobami prawnymi zarejestrowanymi w Rosji nie współpracuję: to ograniczenie sankcji UE.
Szczegóły i zgłoszenieCzęste pytania
Usunąłem wirusa ze strony, a dzień później wrócił. Dlaczego?
Bo został backdoor lub zadanie cron, które wgrywają kod ponownie, i nie zamknięto podatności, przez którą weszli. Usunięcie infekcji i zamknięcie wejścia to różne prace. Bez tej drugiej strona jest infekowana ponownie tą samą drogą.
Czym jest backdoor w prostych słowach?
To ukryte drzwi pozostawione po włamaniu. Przez nie atakujący wchodzi z pominięciem hasła i ponownie infekuje stronę. Backdoor maskuje się jako zwykły plik lub ukrywa w bazie, dlatego trudno go znaleźć ręcznie.
Antywirus hostingu nic nie znajduje. Czyli backdoora nie ma?
Nie. Antywirus szuka według sygnatur, a backdoor zwykle jest zaciemniony lub wygląda jak legalny kod, a część mechanizmu może być w bazie danych lub w cron. Cisza skanera nie dowodzi, że strona jest czysta.
Czy mogę po prostu przywrócić kopię zapasową?
Tylko jeśli kopia jest na pewno czysta i znasz datę infekcji. Często backdoor wgrano na tygodnie przed zauważeniem włamania, więc kopia już go zawiera. A przywrócenie nie zamyka podatności, więc strona zostaje ponownie zainfekowana.
Jak ustalić, przez co weszli na stronę?
Z logów serwera: pokazują, jakie żądanie i jaki plik poprzedziły pojawienie się infekcji. Zwykle to podatne rozszerzenie lub przestarzały CMS. Bez zamknięcia tego punktu wejścia strona będzie hakowana dalej.