Jak sprawdzić, czy moja strona WordPress jest zhakowana? 7 prostych testów

Większość włamań na strony firmowe nie wygląda jak w filmach. Nikt nie podmienia strony głównej na czaszkę. Przeciwnie: włamywacz robi wszystko, żebyś niczego nie zauważył — bo zainfekowana strona zarabia dla niego tylko dopóty, dopóki działa. Spam pokazuje Google, a nie Tobie. Przekierowanie uruchamia tylko dla osób wchodzących z telefonu przez wynik wyszukiwania. Obce konto administratora nazywa się tak, jak Twoja wtyczka. Dlatego „wchodzę na stronę i wszystko wygląda dobrze” nie jest testem. Poniżej siedem testów, które są — i które zrobisz sam, bez programisty, w kwadrans.

Test 1. Zapytaj Google, co widzi pod Twoją domeną

Wpisz w Google: site:twojadomena.pl (bez „www”, bez „https”). Zobaczysz listę wszystkich podstron, które Google ma w indeksie pod Twoją domeną. Przejrzyj ją, zwłaszcza dalsze strony wyników. Szukasz:

  • adresów, których nie znasz — losowe katalogi i numery w stylu /ltjmnjp/341.html,
  • tytułów po japońsku, chińsku, rosyjsku albo z nazwami leków, markowych butów, kasyn, pożyczek,
  • liczby wyników dużo większej niż liczba Twoich podstron (strona firmowa ma ich kilkanaście, nie kilka tysięcy).

Jeśli coś takiego widzisz, masz najprawdopodobniej do czynienia z atakiem opisanym w tekście Japońskie znaki w wynikach Google pod moją stroną. Wariant tego testu: wpisz site:twojadomena.pl viagra albo site:twojadomena.pl casino. Czysta strona zwraca zero wyników.

Test 2. Zobacz stronę oczami Google, nie swoimi

Złośliwy kod bardzo często pokazuje inną treść robotowi Google niż człowiekowi — to tzw. cloaking, który wyjaśniamy w osobnym tekście: Co to jest cloaking i dlaczego nie widzisz spamu na własnej stronie. Żeby zobaczyć to, co widzi Google, potrzebujesz Google Search Console (bezpłatne; jeśli nie masz, załóż — do tego i tak wrócisz w teście 4). W Search Console wpisz adres swojej strony głównej w pole na górze (sprawdzanie adresu URL), wybierz „Testuj URL na żywo”, a potem podgląd wyrenderowanej strony i jej kodu HTML. Porównaj z tym, co widzisz w przeglądarce. Obce linki, obcy tekst, obce skrypty w wersji „dla Google” = infekcja, nawet jeśli w Twojej przeglądarce wszystko wygląda normalnie.

Test 3. Wejdź na stronę tak, jak wchodzi Twój klient

Przekierowania na obce strony uruchamiają się zwykle warunkowo: tylko z telefonu, tylko po kliknięciu w wynik wyszukiwania, tylko raz na dobę dla danej osoby (reszta dostaje ciasteczko i widzi czystą stronę). Ty wchodzisz z komputera, z zakładki, kilkanaście razy dziennie — i nigdy nie trafiasz w warunek. Zrób więc tak:

  1. Weź telefon, wyłącz Wi-Fi (żeby wyjść z własnej sieci, którą kod może rozpoznawać po adresie IP).
  2. Otwórz przeglądarkę w trybie incognito.
  3. Wpisz w Google nazwę swojej firmy i kliknij w wynik — nie wpisuj adresu ręcznie.
  4. Poczekaj kilka sekund, przewiń stronę, kliknij w dwie–trzy podstrony.

Jeśli choć raz wylądujesz na stronie z hazardem, „nagrodą”, fałszywą aktualizacją przeglądarki albo sklepem z podróbkami — to nie reklama hostingu, to włamanie. Co dalej, opisujemy w tekście Moja strona przekierowuje na inną stronę.

Test 4. Sprawdź, czy Google i przeglądarki już Cię oznaczyły

Dwa miejsca, dwie minuty:

  • Raport przejrzystości Google (Safe Browsing) — wejdź na transparencyreport.google.com/safe-browsing/search i wpisz swoją domenę. Zobaczysz, czy Google uznaje stronę za niebezpieczną. Jeśli tak, Chrome, Firefox i Safari pokazują Twoim klientom czerwony ekran — więcej w tekście Czerwony ekran „Witryna zawiera złośliwe oprogramowanie”.
  • Google Search Console → Bezpieczeństwo i ręczne działania → Problemy dotyczące bezpieczeństwa. To tu Google wprost pisze, że wykrył zhakowaną treść, złośliwe oprogramowanie albo przekierowania, i podaje przykładowe adresy. Tu też składa się później wniosek o ponowne sprawdzenie. Jeśli Search Console nie była skonfigurowana, Google nie miał Cię jak powiadomić — stąd tyle firm dowiaduje się o włamaniu od klientów.

Tu sprawdzisz też etykietę „Ta witryna mogła zostać zhakowana”, która pojawia się pod wynikiem w Google i odstrasza klientów skuteczniej niż konkurencja.

Test 5. Zajrzyj do panelu: konta, wtyczki, daty plików

Zaloguj się do panelu WordPressa i sprawdź trzy listy:

  • Użytkownicy. Każde konto z rolą Administrator, którego nie rozpoznajesz, to alarm. Zwróć uwagę na konta z nazwami udającymi wtyczki albo system (wp_support, backup_admin, wordpress), z e-mailami w obcych domenach.
  • Wtyczki. Szukaj takich, których nie instalowałeś, bez autora i opisu, z nazwą jak losowy ciąg znaków. Włamywacze instalują „wtyczki” będące w rzeczywistości tylnymi drzwiami. Sprawdź też listę wtyczek typu „must-use” (zakładka Must-Use na liście wtyczek) — tam użytkownik zwykle nie zagląda.
  • Daty modyfikacji plików. W menedżerze plików na hostingu (albo przez FTP) otwórz katalog strony i posortuj po dacie modyfikacji. Pliki zmienione w nocy, w dniu, w którym nic nie aktualizowałeś, to ślad. Szczególnie podejrzane: pliki .php w katalogu wp-content/uploads (tam powinny być tylko zdjęcia i dokumenty), nowe pliki .htaccess w podkatalogach, zmieniony wp-config.php, index.php albo functions.php motywu.

Uwaga: to test wykrywający, nie naprawczy. Nie kasuj jeszcze niczego — ślady są potrzebne do ustalenia, którędy weszli; bez tego infekcja wraca.

Test 6. Przeczytaj kod źródłowy strony

Otwórz swoją stronę w przeglądarce i wciśnij Ctrl+U. Zobaczysz kod HTML. Nie musisz go rozumieć — użyj wyszukiwania w tej zakładce (Ctrl+F) i sprawdź kilka fraz:

  • eval(, base64, unescape(, String.fromCharCode — tak zaciemnia się złośliwe skrypty; w czystej stronie firmowej nie powinny występować (wyjątkiem bywają niektóre skrypty śledzące — jeśli masz wątpliwość, zapisz, gdzie to znalazłeś),
  • <iframe z atrybutami width="0", height="0" albo display:none — niewidoczne ramki ładujące obce strony,
  • <script src="http — przejrzyj, z jakich domen ładują się skrypty; Google, Facebook, Twój hosting, dostawca czatu są w porządku; domeny z losowych liter, z końcówkami .top, .xyz, .icu — nie,
  • display:none w pobliżu list linków — ukryte linki do obcych sklepów i kasyn.

Pamiętaj o teście 2: jeśli kod stosuje cloaking, w Twojej przeglądarce może być czysto, a brudno dopiero w podglądzie z Search Console.

Test 7. Sprawdź pocztę i czarne listy

Zainfekowana strona często służy do rozsyłania spamu — niekoniecznie z Twoich skrzynek, ale z Twojego serwera i Twojej domeny. Objawy: klienci mówią, że Twoje maile trafiają do spamu; przychodzą zwroty wiadomości, których nie wysyłałeś; hosting pisze o „nadużyciu”. Wpisz swoją domenę w bezpłatne narzędzie sprawdzające czarne listy (np. MXToolbox, zakładka Blacklists). Jeśli domena albo adres IP serwera figurują na listach — ktoś wysyła z nich spam, a strona jest najczęstszym punktem wyjścia. Hosting w takiej sytuacji zwykle blokuje konto; co wtedy robić, opisujemy w tekście Hosting zablokował moją stronę z powodu malware.

Wynik: ile testów wyszło źle?

Zero — dobrze, ale powtórz testy za miesiąc i po każdej aktualizacji wtyczek. Dodaj stronę do Search Console, jeśli jeszcze jej tam nie ma — wtedy Google powiadomi Cię sam. Jeden lub więcej — strona jest najprawdopodobniej zainfekowana. Kolejność działań w pierwszej godzinie:

  1. Nie kasuj plików i nie przywracaj kopii zapasowej na ślepo. Kopia sprzed włamania ma tę samą lukę; bez ustalenia drogi ataku infekcja wraca w ciągu dni.
  2. Zmień hasła do panelu WordPressa, hostingu i FTP/SFTP — z innego komputera niż ten, z którego logujesz się na co dzień, jeśli masz taką możliwość.
  3. Jeśli strona przekierowuje klientów na niebezpieczne treści, włącz tryb konserwacji albo poproś hosting o tymczasowe wyłączenie strony.
  4. Zrób zrzuty ekranu wszystkiego, co znalazłeś w testach — to oszczędza godziny diagnozy.
  5. Zleć czyszczenie komuś, kto usunie kod razem z luką, zdejmie ostrzeżenia Google i blokadę hostingu i odda raport. Tak wygląda to u nas: czyszczenie strony po włamaniu, jedna stała kwota po analizie.

Dlaczego to w ogóle się dzieje

Nie dlatego, że ktoś się na Ciebie uwziął. Ataki na strony firmowe są automatyczne: boty przeczesują internet w poszukiwaniu stron z konkretną, znaną luką — zwykle w przestarzałej wtyczce — i infekują wszystko, co znajdą. Strona warsztatu w małym mieście jest dla nich tak samo dobra jak sklep z milionowym ruchem, bo liczy się moc serwera i reputacja domeny, nie Twoja branża. Skąd biorą się te luki i czy da się ich uniknąć, zostając na WordPressie, piszemy w tekście Czy WordPress jest bezpieczny?.

Pytania

Pytania o sprawdzanie strony

Jak sprawdzić, czy strona jest zhakowana?

Siedem testów bez programisty: (1) wyszukiwanie site:twojadomena.pl w Google — obce podstrony i obce języki w tytułach; (2) test na żywo w Google Search Console — strona oczami robota; (3) wejście z telefonu, bez Wi-Fi, w trybie incognito, przez wynik wyszukiwania — przekierowania warunkowe; (4) raport Safe Browsing i raport Problemy dotyczące bezpieczeństwa w Search Console; (5) obce konta, obce wtyczki i daty modyfikacji plików w panelu i na hostingu; (6) kod źródłowy strony (Ctrl+U) — zaciemnione skrypty, ukryte ramki i linki; (7) czarne listy pocztowe. Jeden zły wynik = najprawdopodobniej włamanie.

Jak sprawdzić, czy strona WordPress ma wirusa?

„Wirus na stronie” to w praktyce złośliwy kod w plikach lub bazie WordPressa. Najszybsze sprawdzenie od zewnątrz: test na żywo w Search Console i wejście jak klient (test 2 i 3). Od wewnątrz: lista użytkowników z rolą Administrator, lista wtyczek (w tym must-use), pliki .php w katalogu wp-content/uploads i pliki zmodyfikowane w dniu, w którym nic nie aktualizowałeś. Skaner we wtyczce bezpieczeństwa uzupełnia te testy, ale ich nie zastępuje.

Jakie są objawy zhakowanej strony WordPress?

Najczęstsze: przekierowania na obce strony (często tylko z telefonu lub z Google), obce podstrony w wynikach Google (japońskie znaki, leki, kasyna), etykieta „Ta witryna mogła zostać zhakowana” pod wynikiem, czerwony ekran Safe Browsing w przeglądarce, blokada konta przez hosting, zwroty maili i spam z Twojej domeny, nieznane konta administratora i wtyczki, nagły spadek pozycji, wolniejsza strona, ruch z dziwnych krajów w statystykach. Część włamań nie daje żadnych objawów widocznych dla właściciela — stąd testy.

Jak sprawdzić, czy strona jest bezpieczna według Google?

Dwa miejsca: publiczny raport przejrzystości Google Safe Browsing (transparencyreport.google.com/safe-browsing/search — wpisz domenę) oraz Google Search Console → Bezpieczeństwo i ręczne działania → Problemy dotyczące bezpieczeństwa (wymaga zweryfikowanej domeny). Pierwsze mówi, czy przeglądarki blokują stronę; drugie — czy Google wykrył zhakowaną treść, i podaje przykładowe adresy.

Co zrobić, gdy strona została zhakowana?

W pierwszej godzinie: nie kasować plików i nie przywracać kopii na ślepo; zmienić hasła do panelu, hostingu i FTP; włączyć tryb konserwacji, jeśli strona przekierowuje klientów na niebezpieczne treści; zrobić zrzuty ekranu z testów. Potem: czyszczenie z zamknięciem luki, zdjęcie ostrzeżeń Google, zabezpieczenie — albo nowa strona na fundamencie bez obcych wtyczek. Obie drogi i ceny: czyszczenie strony po włamaniu.

Czy darmowe skanery online wykryją włamanie na stronę?

Częściowo. Skanery zewnętrzne (np. Sucuri SiteCheck, VirusTotal, raport Safe Browsing) widzą tylko to, co strona pokazuje ich robotowi — a złośliwy kod z cloakingiem potrafi pokazać im czystą wersję, tak samo jak Tobie. Negatywny wynik skanera nie oznacza czystej strony; pozytywny prawie zawsze oznacza problem. Traktuj je jako jeden z testów, nie jako wyrok.

Czy wtyczka bezpieczeństwa nie zrobi tych testów za mnie?

Część tak — skaner we wtyczce porówna pliki rdzenia z oryginałami i znajdzie znane sygnatury. Nie zrobi testów 1–4, bo one patrzą na stronę z zewnątrz, oczami Google i klienta. A włamywacz, który ma dostęp do strony, ma też dostęp do wtyczki i potrafi ją wyciszyć. Testy z zewnątrz są dlatego ważniejsze.

Jak często to sprawdzać?

Testy 1 i 4 — raz w miesiącu, zajmują dwie minuty. Pozostałe — gdy cokolwiek wyda się dziwne: spadek ruchu, wolniejsza strona, dziwne maile, telefon od klienta. Najlepiej jednak mieć Search Console i monitoring zmian plików, które powiadomią Cię same.

Wszystkie testy wyszły dobrze, ale pozycje w Google spadły. Co jeszcze?

Spadek pozycji ma wiele przyczyn niezwiązanych z włamaniem: aktualizacje algorytmu, wolna strona, konkurencja, utrata linków. Jeśli testy są czyste, a Search Console nie zgłasza problemów bezpieczeństwa, szukaj przyczyny w wydajności i treści — o szybkości strony piszemy w tekście Bezpieczna i szybka strona internetowa.

Mam stronę nie na WordPressie. Czy te testy działają?

Testy 1, 2, 3, 4, 6 i 7 są niezależne od systemu — działają dla Joomli, PrestaShop, strony z kreatora i strony pisanej ręcznie. Test 5 wymaga dostosowania do panelu danego systemu, ale zasada jest ta sama: obce konta, obce rozszerzenia, pliki zmienione bez Twojej wiedzy.

Któryś test wyszedł źle?

Wyślij zrzuty ekranu. Po analizie podamy jedną stałą kwotę za czyszczenie razem z zamknięciem luki i zdjęciem ostrzeżeń Google.

Zgłoś zhakowaną stronę