Telefon w czwartek wieczorem: „Szymon, coś się dzieje. Strona najpierw się zawiesiła, a teraz wyświetla jakiś obcy tekst”.

Panika w takiej sytuacji jest naturalna. Jest też najgorszym możliwym doradcą. Jeśli wiesz, co robić po kolei, w kilka godzin strona może wrócić do normy — a przede wszystkim przestaje szkodzić Twoim klientom i Twojej pozycji w Google.

Pracuję z firmami od ponad dziesięciu lat i podrzuconego kodu widziałem więcej, niż bym chciał. Poniżej dokładnie to, co robić w pierwszych minutach po odkryciu — i w kolejnych dniach.

Zanim zaczniesz

Włamanie prawie nigdy nie oznacza końca firmy. Oznacza kilka godzin nieprzyjemnej pracy. Co roku przejmowane są setki tysięcy stron i zdecydowana większość z nich wraca do działania.

Weź oddech i usiądź. Będziesz podejmować decyzje, przy których pośpiech kosztuje więcej niż zwłoka.

Krok 1: Potwierdź, że to naprawdę hack (3-5 minut)

Czasami to wygląda jak hack, ale to jest bug, problem z hostingiem, lub coś zupełnie innego.

Co robić:

  1. Otwórz stronę w incognito/prywatnym oknie przeglądarki (żeby uniknąć pamięci podręcznej)
  2. Sprawdź czy problem widać ze wszystkich urządzeń (komputer, telefon)
  3. Sprawdź logi dostępu do hostingu (jeśli masz dostęp do panelu)
  4. Poproś kogoś innego żeby sprawdził stronę u siebie (może to lokalny problem, może być problem z Twoim komputerem, siecią, przeglądarką)

Znaki że to rzeczywiście hack:

  • Strona pokazuje obcy content (reklamy, polityczne treści, crypto scam, cokolwiek co nie jest twoje)
  • Strona jest całkowicie zmieniona
  • Google alertuje Cię że strona zawiera malware (sprawdź: Google Search Console)
  • Wiadomości od klientów „Co się stało ze stroną?”
  • Dziwne e-maile od hostingu czy systemów backupu/monitoringu

Jeśli potwierdzisz że to hack — idziesz do kroku 2.

Krok 2: Zamknij dostęp — teraz (5 minut)

Każda minuta, przez którą zainfekowana strona jest dostępna, to ryzyko dla Twoich odwiedzających — i sygnał dla Google, że witryna jest niebezpieczna. To drugie odrabia się potem tygodniami.

Zrób to:

  1. Wyłącz dostęp do bazy danych lub strony całkowicie. Jeśli masz dostęp do panelu hostingu (cPanel, Plesk), wyłącz stronę. Jeśli to WordPress, zmień plik .htaccess i przekieruj całą stronę na 403 Forbidden. Jeśli nie umiesz — idź do kroku 3.
  2. Jeśli nie potrafisz wyłączyć całej strony — wyłącz co najmniej admin panel (/wp-admin dla WordPressa). Dodaj w .htaccess regułę blokującą dostęp do katalogu wp-admin dla wszystkich (Order allow,deny / Deny from all).
  3. Jeśli to możliwe, zmień wszystkie hasła. Hasło do panelu hostingu, hasło do FTP, hasło do WordPressa, hasło do e-maila powiązanego ze stroną. Wszystko.

Dlaczego akurat teraz? Bo osoba, która weszła na stronę, najprawdopodobniej ma jedno z Twoich haseł. Dopóki je ma, może wracać — i może zostawić sobie furtkę, która przetrwa nawet usunięcie samego złośliwego kodu.

Krok 3: Skontaktuj się z hostingiem (10-15 minut)

Telefonuj. Nie email. Telefon. Natychmiast.

Powiedz:

  • Że Twoja strona była zhakowana
  • Że chcesz tymczasowo wyłączyć stronę lub całe konto (żeby hacker nie robił dalej)
  • Czy mogą sprawdzić logi dostępu (żeby znaleźć jak się dostał)
  • Czy mogą uruchomić backup sprzed hacku

Hosting — jeśli jest porządny — ma backupy. To twoja poduszka bezpieczeństwa. Jeśli masz backup sprzed 24 godzin, możesz przywrócić stronę do stanu sprzed ataku.

Pytania które warto zadać hostingowi:

  • Kiedy ostatni backup był uruchamiany?
  • Czy mogą zidentyfikować z którego IP/kraju pochodzi atak?
  • Czy strona ma złośliwe oprogramowanie?
  • Czy mogę wyłączyć stronę tymczasowo?

Dobry hosting będzie współpracował. Słaby powie „nie widzimy problemu” — jeśli tak się stanie, zapisz to sobie na później i szukaj innego dostawcy. Teraz skup się na ratowaniu strony.

Krok 4: Zrób pełny backup BIEŻĄCY (jeśli możesz) (15-30 minut)

Paradoksalnie — chociaż strona jest zhakowana, chcesz mieć backup tego stanu. Dlaczego? Żeby developer (ja, albo ktoś inny) mógł ją zbadać i znaleźć dokładnie co haker zrobił. To pomaga w przyszłości.

Jak zrobić backup zhakowanej strony:

  1. SSH do serwera (jeśli masz dostęp) i użyj komendy scp do skopiowania plików
  2. Albo zaloguj się przez FTP i pobierz wszystkie pliki na dysk
  3. Pobierz bazę danych (phpMyAdmin → Eksport)

Zachowaj tę kopię na osobnym dysku i nie nadpisuj jej. To jest materiał dowodowy — na jego podstawie da się ustalić, którędy ktoś wszedł, a bez tego naprawiasz objaw zamiast przyczyny.

Krok 5: Przywróć z backupu LUB oczyść (1-8 godzin)

Tutaj masz dwie ścieżki.

Ścieżka A: Przywróć z czystego backupu (preferowana)

Jeśli hosting ma backup sprzed 24-48 godzin — powiedz im żeby go przywrócili. To jest najprostszy sposób.

Zysk: strona wraca do normalności szybko.

Ryzyko: kopia jest starsza niż Twoje ostatnie zmiany. Jeśli wczoraj poprawiałeś cennik, a kopia jest sprzed dwóch dni, te poprawki przepadają. To jest decyzja biznesowa, nie techniczna: co boli bardziej — utrata jednego dnia zmian czy kolejne godziny z przejętą stroną.

Ścieżka B: Ręczne czyszczenie (czasochłonne, ale precyzyjne)

Jeśli nie masz backupu, lub wolisz nie przywracać — musisz ręcznie znaleźć i usunąć malware. To jest praca dla developera.

Znaki gdzie szukać:

  • Ostatnio modyfikowane pliki (sprawdź timestamp w FTP)
  • Pliki PHP w miejscach gdzie nie powinno być PHP (media folder, itd)
  • Dziwne pliki (shell.php, backdoor.php, x7x.php) — na pewno to hack
  • W kodzie — eval(), base64_decode(), assert(); to typowe sposoby ukrywania podrzuconych skryptów
  • Theme files (w WordPressie) — haker je modyfikuje

Jeśli nie czujesz się w tym pewnie — zadzwoń do programisty. Czyszczenie ręczne jest precyzyjną robotą: usunięcie o jeden plik za dużo potrafi położyć stronę skuteczniej niż samo włamanie.

W WordPressie — specjalne kroki:

  1. Zainstaluj wtyczkę skanującą, na przykład Wordfence albo Sucuri
  2. Zmień wszystkie hasła (WordPress admin, bazy danych, FTP)
  3. Usuń nieużywane wtyczki i szablony — nieaktywne też, bo kod nadal leży na serwerze
  4. Zaktualizuj WordPressa do najnowszej wersji
  5. Zaktualizuj wszystko, co zostało

Krok 6: Zmień WSZYSTKIE hasła (10 minut)

To jest krok, który wszyscy pomijają, bo strona już wygląda dobrze. Nie pomijaj go — bez tego cała reszta pracy może pójść na marne.

Co zmienić:

  • Hasło do WordPress admin
  • Hasło do bazy danych
  • Hasło do FTP/SFTP
  • Hasło do e-mail powiązanego ze stroną
  • Hasło do panelu hostingu
  • Hasło do domeny (whois contact email)

Hacker prawdopodobnie ma przynajmniej jedno z tych haseł. Nowe hasła powinny być:

  • Minimum 16 znaków
  • Mix dużych, małych, liczb, symboli
  • Bez oczywistych wzorców i bez nazwy firmy w treści
  • Zapisane w menedżerze haseł, nie w notatniku

Krok 7: Powiadom Google (24 godziny)

Kiedy strona jest już czysta i znów działa:

  1. Google Search Console → Bezpieczeństwo i ręczne działania → Problemy dotyczące bezpieczeństwa. Zaznacz, że problem został usunięty, i poproś o ponowne sprawdzenie.
  2. Google Safe Browsing → Report form. Powiedz że strona nie zawiera już malware.
  3. Jeśli ucierpieli klienci — na przykład przez Twoją stronę rozsyłano phishing albo wyciekły dane z formularzy — powiadom ich. Przy danych osobowych sprawdź też, czy nie masz obowiązku zgłoszenia do UODO w ciągu 72 godzin.

Google potrzebuje czasu aby zaufać że strona jest czysta. Czasami kilka dni. Czasami tydzień. Bądź cierpliwy.

Krok 8: Dowiedz się jak to się stało (następny dzień)

Po tym jak strona jest przywrócona, czas na analizę co się stało.

Pytania które sobie zadać:

  • Jaki plugin/theme był podatny?
  • Czy były stare wersje programów?
  • Czy hasła były słabe?
  • Czy backup był regularnie robiony?
  • Czy były regularnie security updates?

Jeśli to WordPress — sprawdź które pluginy były ostatnio aktualizowane. Hakerzy atakują stare pluginy które nie są patchowane.

Krok 9: Zabezpiecz się na przyszłość (teraz, jeśli możesz)

Teraz kiedy strona jest bezpieczna — nie chcesz żeby to się stało znowu.

Konieczne minimum:

  1. Security pluginy (WordPress): Wordfence/Sucuri/iThemes Security
  2. Regularne kopie zapasowe — codziennie, w ostateczności raz w tygodniu. Przechowywane poza serwerem strony: dysk w chmurze, S3, cokolwiek osobnego.
  3. Regularne aktualizacje — wtyczki, szablony, sam system. Najlepiej w stałym rytmie, a nie wtedy, gdy się o nich przypomni.
  4. Silne hasła — dla każdego konta. Password manager.
  5. Two-factor authentication — dla WordPressa, dla FTP, dla hostingu.

Jeśli prowadzisz coś ważniejszego (e-commerce, dane klientów):

  • Web Application Firewall (WAF) — Cloudflare, Sucuri, Wordfence
  • Audyty bezpieczeństwa (raz na rok)
  • SSL certificate (https) — powinno być zawsze
  • Aktualizacje zależności, jeśli strona jest pisana na zamówienie

Moje rady z doświadczenia

Wszyscy którzy prowadzą stronę powinni być przygotowani na hack. To nie jeśli, tylko kiedy.

Zatem:

  1. Miej regularny backup. Off-site. Nie na tym samym serwerze co strona. Jeśli serwer się spali, backup się spali razem.
  2. Aktualizuj wszystko. Pluginy, theme'y, system operacyjny, biblioteki. Nie ignoruj update'ów bo „strona się zmieni”. Update'y zawierają security patches.
  3. Używaj mocnych haseł. I nie powtarzaj tego samego hasła w kilku miejscach.
  4. Jeśli Twoja strona ma kontakt z finansami (płatności, dane karty) — weź bezpieczeństwo poważnie. Miej WAF. Miej regularne audyty.
  5. Jeśli korzystasz z WordPressa — jego popularność działa w obie strony. Jest częściej atakowany, ale też szybciej łatany i lepiej opisany. Korzystaj z tego drugiego.

Potrzebujesz pomocy teraz

Jeśli czytasz to w trakcie awarii — tutaj opisuję pilną pomoc. Pracuję z firmami z Pleszewa, Kalisza, Ostrowa Wielkopolskiego i Jarocina, a zdalnie z klientami z całej Polski. Napisz albo zadzwoń, pomogę przywrócić stronę do działania.

Włamanie to nie koniec świata. To incydent, który da się naprawić i z którego zwykle wynika jeden porządny wniosek: strona potrzebowała opieki wcześniej.

Jeśli czytasz to na spokojnie i Twoja strona działa — to jest najlepszy moment, żeby sprawdzić kopie zapasowe i aktualizacje. Przy okazji warto przejrzeć najczęstsze błędy na stronach firmowych; brak monitoringu jest na tej liście nie bez powodu.