Strona główna  /  Bezpieczeństwo  /  WordPress hacked spam posts – jak usunąć i zabezpieczyć stronę?

Cyfrowa tarcza chroniąca uszkodzoną kłódkę na tle serwerowni, symbolizująca zabezpieczanie zhakowanej strony WordPress.

WordPress hacked spam posts – jak usunąć i zabezpieczyć stronę?

Spamowe wpisy, linki do hazardu albo nieznani administratorzy w WordPressie zwykle nie są pojedynczym błędem do usunięcia z panelu. To objaw włamania typu black-hat SEO, w którym atakujący mógł zostawić backdoora, webshell lub złośliwy mu-plugin. Stronę da się odzyskać, ale kolejność działań ma znaczenie. Nie zaczynaj od samej zmiany haseł – najpierw trzeba odciąć dostęp i usunąć mechanizmy, które pozwalają napastnikowi wrócić.

Jak rozpoznać, że WordPress został zaatakowany?

Spam może być widoczny bezpośrednio na stronie, ale czasem pojawia się wyłącznie w wynikach wyszukiwania. Atakujący wykorzystują wtedy cloaking, czyli podawanie innej treści robotom wyszukiwarek niż zwykłym odwiedzającym. Właściciel widzi poprawną witrynę, a Google otrzymuje setki podstron z linkami do kasyn, farm pożyczkowych lub innych niezwiązanych z witryną tematów.

Niepokój powinny wzbudzić także nieznane konta administratorów, zmieniony tytuł strony, pliki PHP w katalogu przeznaczonym na obrazy oraz nagły wzrost liczby zaindeksowanych adresów w Google Search Console. Zestawienie objawów z możliwą przyczyną wygląda następująco:

Objaw Najbardziej prawdopodobna przyczyna Poziom ryzyka
Spamowe adresy pojawiają się w Google, ale nie widać ich na stronie Cloaking, złośliwe reguły serwera albo modyfikacja mapy witryny Wysoki
W treści stron pojawiają się ukryte linki Wstrzyknięty kod w motywie, wtyczce lub mu-pluginie Wysoki
W katalogu wp-content/uploads znajdują się pliki PHP Webshell lub inne pliki umożliwiające wykonanie kodu Krytyczny
Pojawił się nieznany administrator WordPressa Utworzenie konta przez atakującego lub przejęcie istniejącego konta Krytyczny
Strona wygląda normalnie, ale tytuł lub adresy w Google są zmienione Zmiana danych w bazie, cloaking albo manipulacja Search Console Wysoki

Sprawdź listę użytkowników w WordPressie, uprawnienia w Google Search Console oraz logi serwera. Warto też porównać pliki rdzenia WordPressa z czystą wersją. Sama obecność spamu nie pokazuje jeszcze pełnej skali incydentu.

Jak bezpiecznie usunąć spamowe wpisy z WordPressa?

Najważniejsza zasada brzmi: najpierw usuń dostęp napastnika, a dopiero później zmieniaj hasła i aktualizuj oprogramowanie. Jeśli webshell lub inny backdoor nadal działa, atakujący może odczytać nowe dane logowania, utworzyć kolejne konto albo ponownie zmodyfikować pliki.

Usunięcie spamowych wpisów naprawia objaw. Usunięcie backdoora usuwa przyczynę.

Postępuj w następującej kolejności:

  1. Odizoluj stronę i zabezpiecz materiał dowodowy – ogranicz dostęp do witryny, a przed kasowaniem wykonaj kopię plików, bazy oraz logów. Kopia zainfekowana nie służy do natychmiastowego przywrócenia strony, ale może pomóc ustalić zakres włamania.
  2. Sprawdź całe konto hostingowe – nie ograniczaj audytu do jednej domeny. Przejrzyj wszystkie instalacje WordPressa, katalogi użytkownika, pliki tymczasowe, archiwa i kopie zapasowe.
  3. Znajdź i usuń backdoory – sprawdź nieznane pliki PHP, modyfikacje motywu, katalog wp-content/mu-plugins, plik .htaccess, zadania cron oraz pliki startowe powłoki. Podejrzany kod może być zaciemniony przez base64, eval() lub inne techniki utrudniające analizę.
  4. Wyczyść instalację – w przypadku skażonego rdzenia usuń jego pliki i wgraj świeżą wersję z wiarygodnego źródła. Nie nadpisuj bezmyślnie starej instalacji nowymi plikami. Motyw i wtyczki pobierz ponownie z zaufanych źródeł, a katalog uploads sprawdź osobno.
  5. Usuń spam z bazy i zweryfikuj konta – skasuj nieautoryzowanych użytkowników, wpisy, strony, komentarze i ustawienia dodane przez atakującego. Zanim usuniesz dane, zachowaj kopię do analizy.
  6. Dopiero teraz zmień dane dostępowe – obejmuje to konta administratorów WordPressa, hosting, SSH, FTP, bazę danych oraz powiązane usługi, takie jak Search Console. Zmień też klucze bezpieczeństwa w wp-config.php.
  7. Zaktualizuj i utwardź środowisko – zainstaluj aktualny rdzeń, wtyczki i motyw, usuń nieużywane komponenty, ogranicz uprawnienia oraz włącz monitoring zmian plików.

Dlaczego nie należy zaczynać od zmiany haseł?

Hasło chroni konkretny mechanizm logowania. Backdoor działa niezależnie od niego. Webshell może pozwolić na zapis plików z poziomu przeglądarki, a reverse shell może zapewniać dostęp do powłoki systemowej. W takiej sytuacji nowe hasło do WordPressa nie usuwa aktywnego dostępu.

Po oczyszczeniu plików wygeneruj nowe klucze i sole WordPressa, a następnie unieważnij aktywne sesje użytkowników. Jeżeli nie masz pewności, że środowisko zostało wyczyszczone, nie przywracaj strony z przypadkowej kopii. Może zawierać ten sam kod, który rozpoczął reinfekcję.

Co sprawdzić w plikach?

Audyt powinien objąć nie tylko standardowe katalogi WordPressa. W pierwszej kolejności przejrzyj następujące obszary:

  • wp-content/uploads – katalog na obrazy i dokumenty nie powinien zawierać wykonywalnych plików PHP.
  • wp-content/mu-plugins – mu-plugin jest ładowany automatycznie i nie można go wyłączyć z typowego panelu wtyczek.
  • motyw i aktywne wtyczki – sprawdź nowe pliki, nietypowe modyfikacje oraz kod rozpoznający User-Agent.
  • .htaccess, cron i pliki konfiguracyjne – napastnik może użyć ich do przekierowań, cloakingu lub ponownego uruchamiania kodu.
  • archiwa i kopie zapasowe – pliki z rozszerzeniami ZIP, TAR lub nazwami zawierającymi daty również mogą być zainfekowane.

Przy dostępie SSH pomocne są porównania sum kontrolnych z czystym rdzeniem oraz wyszukiwanie ostatnio zmodyfikowanych plików. Przykładowo można przejrzeć pliki PHP zmienione w ostatnich dniach poleceniem find . -type f -name "*.php" -mtime -14. Wynik wymaga interpretacji, ponieważ aktualizacje i legalne zmiany także modyfikują daty. Nie usuwaj plików wyłącznie na podstawie nazwy lub daty.

Gdzie atakujący ukrywają trwały dostęp?

Webshell to złośliwy skrypt, najczęściej PHP, który daje napastnikowi panel do przeglądania, edytowania i uruchamiania plików. Może wyglądać jak plik rdzenia WordPressa, różniąc się od prawidłowej nazwy jedną literą. Czasem występuje jako zwykła wtyczka widoczna w panelu administracyjnym.

Mu-plugin jest szczególnie niebezpieczny, ponieważ WordPress uruchamia go automatycznie przy każdym żądaniu. Taki plik może dopisywać linki do treści, tworzyć spamowe adresy, podmieniać mapę witryny albo przekazywać inną zawartość robotom wyszukiwarek. Samo usunięcie wpisów z bazy nie zatrzyma takiego mechanizmu.

Jeszcze głębiej może znajdować się reverse shell w plikach startowych konta systemowego. Zakodowana linia pobierająca kod z zewnętrznego serwera może przeżyć reinstalację WordPressa, ponieważ nie znajduje się w jego katalogach. Dlatego przy powtarzających się infekcjach trzeba sprawdzić logowania SSH, zadania cron, konfigurację konta i pliki powłoki.

Dlaczego hosting współdzielony zwiększa skalę problemu?

Na jednym koncie hostingowym kilka stron może korzystać z tego samego użytkownika systemowego, panelu albo dostępu FTP. Wtedy włamanie na jedną instalację może umożliwić ruch boczny, czyli przejście do pozostałych katalogów. Aktualna i dobrze zabezpieczona strona nie jest w pełni odizolowana, jeśli wszystkie witryny mają wspólny poziom dostępu.

Jeśli na jednym koncie znajduje się kilka stron, po wykryciu włamania traktuj je wszystkie jako potencjalnie zagrożone.

Nie czyść takich instalacji w odstępach kilku dni. Pozostawiony backdoor w jednej domenie może ponownie zapisać złośliwe pliki w tej, którą właśnie wyczyściłeś. Przy ważnych serwisach rozważ osobne konta hostingowe lub przynajmniej odrębnych użytkowników systemowych z ograniczonymi uprawnieniami.

Nie pomijaj też kopii zapasowych leżących obok aktywnej strony. Stare archiwum może zawierać webshell albo zainfekowany mu-plugin. Jeśli ktoś przypadkiem przywróci taki katalog, problem wróci mimo wcześniejszego oczyszczenia wersji publicznej.

Jak zabezpieczyć WordPress po incydencie?

Po usunięciu infekcji wykonaj poniższe działania. Traktuj je jako zabezpieczenie całego środowiska, nie tylko panelu WordPressa:

  • Włącz monitoring integralności plików i alerty dla nowych plików PHP w katalogach przesyłania.
  • Usuń nieużywane wtyczki, motywy, wtyczki typu file manager oraz dodatki instalowane tylko na czas jednorazowej pracy.
  • Ustaw możliwie ograniczone uprawnienia plików i katalogów, a dostęp do wp-config.php zabezpiecz zgodnie z możliwościami hostingu, bez blokowania działania strony.
  • Włącz uwierzytelnianie dwuskładnikowe dla administratorów i ogranicz liczbę kont z pełnymi uprawnieniami.
  • Weryfikuj aktualizacje rdzenia, motywów i wtyczek, a kopie przechowuj poza publicznym katalogiem strony.
  • Przejrzyj Google Search Console, mapy witryny, właścicieli usług oraz nieznane adresy URL zaindeksowane po włamaniu.
  • Sprawdź logi serwera, FTP, SSH i panelu hostingowego, aby ustalić, czy przejęcie dotyczyło jednego WordPressa, czy całego konta.

Uprawnienia plików nie zastąpią aktualizacji ani kontroli dostępu. Zbyt liberalne ustawienia mogą ułatwić zapis kodu, ale ich zmiana nie usunie już istniejącego webshella. Najpierw czyszczenie, potem ograniczenie uprawnień i monitoring.

Kiedy potrzebny jest audyt specjalisty?

Samodzielne czyszczenie ma sens przy ograniczonym incydencie, gdy potrafisz porównać pliki z czystą wersją i masz dostęp do logów. Zleć analizę zespołowi zajmującemu się informatyką śledczą, jeśli infekcja wraca, obejmuje kilka stron, dotyczy konta hostingowego albo znaleziono reverse shell, webshell i nieznane logowania administracyjne.

Za bezpiecznie uznaj stronę dopiero wtedy, gdy sprawdzono nie tylko aktywną instalację, lecz także bazę danych, katalogi sąsiednich domen, pliki ukryte, zadania cron, logi i stare archiwa. Ostateczna kontrola powinna obejmować:

  • brak nieznanych kont i kluczy dostępu,
  • brak plików PHP w katalogach przesyłania,
  • brak podejrzanych mu-pluginów, webshelli i reguł cloakingu,
  • sprawdzenie wszystkich kopii zapasowych oraz katalogów poza aktywną stroną.

Jeżeli nie da się potwierdzić każdego z tych punktów, strona może wyglądać poprawnie, a mimo to nadal pozostawać pod kontrolą napastnika.


Artykuł ma charakter informacyjny. W przypadku aktywnego włamania, utraty danych lub podejrzenia przejęcia całego konta hostingowego skorzystaj z pomocy administratora systemów albo specjalisty od analizy incydentów.

Redakcja wpinternals.pl

WordPressa znamy od kuchni – budujemy na nim strony, migrujemy serwisy i optymalizujemy ich wydajność. Piszemy o wtyczkach, motywach, hostingu i bezpieczeństwie tak, by poradzili sobie także początkujący. Dbamy o to, by Twoja strona była szybka, stabilna i bezpieczna.

Może Cię również zainteresować

Potrzebujesz więcej informacji?