Wprowadzenie: Twój WordPress został zhakowany - co teraz robić
Odkrycie, że Twoja strona WordPress została zhakowana, to jedno z najbardziej stresujących doświadczeń dla każdego właściciela strony internetowej. Ale nie panikuj. Z odpowiednim procesem możesz oczyścić swoją stronę, usunąć cały malware i zabezpieczyć ją przed przyszłymi atakami.
Dowiedz się więcej o usługach audytu bezpieczeństwa WordPress na WPPoland.
W tym kompletnym przewodniku prowadzę Cię krok po kroku przez profesjonalny proces, którego używam do czyszczenia zainfekowanych stron WordPress. Będziemy używać narzędzi wiersza poleceń (SSH, WP-CLI), ponieważ są szybsze i bardziej dokładne niż jakiekolwiek wtyczki, choć omówię również alternatywy z interfejsem graficznym.
Oznaki zhakowania WordPressa
Przed rozpoczęciem czyszczenia, potwierdź, że Twoja strona rzeczywiście jest skompromitowana. Najczęstsze oznaki to:
- Niechciane przekierowania: Odwiedzający są przekierowywani na strony ze spamem, farmacją lub kasynami
- Wstrzyknięty spam: Strony z tekstem w języku japońskim, chińskim lub linkami do złośliwych stron
- Nieznani administratorzy: Nowe konta administratorów, których nie tworzyłeś
- Ostatnio zmodyfikowane pliki: Pliki rdzenia, motywów lub wtyczek zmienione bez Twojej wiedzy
- Ostrzeżenia przeglądarki: Chrome lub Firefox wyświetla “Ta strona może uszkodzić Twój komputer”
- Spadek ruchu SEO: Google ukarał lub deindeksował Twoją stronę
- Wysyłanie spamu mailowego: Twój serwer wysyła niechciane maile
- Pogorszona wydajność: Strona stała się zauważnie wolniejsza
Krok 1: Zrób backup przed dotknięciem czegokolwiek
Przed wprowadzeniem jakichkolwiek zmian, utwórz kompletny backup zainfekowanego stanu. To kluczowe z dwóch powodów: (1) jeśli coś pójdzie nie tak podczas czyszczenia, możesz przywrócić, i (2) możesz później przeanalizować malware, aby zrozumieć, jak doszło do naruszenia.
# Utworz kompletny backup plikow
tar -czf /tmp/backup-zainfekowany-$(date +%Y%m%d).tar.gz /var/www/html/
# Eksportuj baze danych
wp db export /tmp/backup-db-zainfekowany-$(date +%Y%m%d).sql --path=/var/www/html/
Krok 2: Diagnoza - Znajdowanie malware
Skanowanie podejrzanych plików
Użyj grep do wyszukiwania typowych wzorców malware w plikach:
# Szukaj typowych funkcji obfuskacji
grep -rn "eval(" /var/www/html/wp-content/ --include="*.php"
grep -rn "base64_decode" /var/www/html/wp-content/ --include="*.php"
grep -rn "str_rot13" /var/www/html/wp-content/ --include="*.php"
grep -rn "gzinflate" /var/www/html/wp-content/ --include="*.php"
# Szukaj plikow PHP w uploads (NIE powinno ich być)
find /var/www/html/wp-content/uploads/ -name "*.php" -type f
# Szukaj plikow zmodyfikowanych w ostatnich 7 dniach
find /var/www/html/ -name "*.php" -mtime -7 -type f
Weryfikacja użytkowników bazy danych
-- Szukaj podejrzanych administratorów
SELECT ID, user_login, user_email, user_registered
FROM wp_users
WHERE ID IN (
SELECT user_id FROM wp_usermeta
WHERE meta_key = 'wp_capabilities'
AND meta_value LIKE '%administrator%'
);
Typowe rodzaje hacków w 2026
| Typ | Objawy | Gdzie szukać |
|---|---|---|
| Japanese Keyword Hack | Tysiące stron spamowych w japońskim zaindeksowanych | wp_posts, sitemap.xml |
| Pharma Hack | Linki do stron farmaceutycznych w treści | wp_posts, wp_options |
| Backdoor PHP | Ukryte pliki PHP do zdalnego dostępu | wp-content/uploads/, motywy |
| Złośliwe przekierowania | Odwiedzający przekierowywani na inne strony | .htaccess, wp-config.php, wp_options |
| Cryptominer | Wysokie zużycie CPU, wolna strona | Wstrzyknięte pliki JS, wp-includes/ |
| Skimmer kart | Kradzież danych płatniczych w checkout | JS w motywach/wtyczkach WooCommerce |
Krok 3: Zastąpienie rdzenia WordPressa
Najbezpieczniejsza metoda to zastąpienie wszystkich plików rdzenia czystymi wersjami:
# Pobierz czysty rdzen bez ruszania wp-content
wp core download --force --skip-content --path=/var/www/html/
# Zweryfikuj integralnosc
wp core verify-checksums --path=/var/www/html/
To zastępuje wp-admin/, wp-includes/ i wszystkie pliki rdzenia głównego czystymi oryginalnymi wersjami, eliminując wszelkie złośliwe modyfikacje.
Krok 4: Czyszczenie wp-content
Wtyczki
Najbezpieczniejszy sposób to usunięcie i ponowna instalacja wszystkich wtyczek:
# Lista aktywnych wtyczek
wp plugin list --status=active --path=/var/www/html/
# Zainstaluj ponownie każda wtyczke z repozytorium
wp plugin install nazwa-wtyczki --force --path=/var/www/html/
Dla wtyczek premium pobierz świeże wersje od oryginalnego dostawcy.
Motywy
Usuń wszystkie motywy oprócz aktywnego. Dla aktywnego motywu porównaj pliki z oryginalną wersją linia po linii.
Uploads
Folder uploads NIGDY nie powinien zawierać plików PHP. Usuń wszystkie, które znajdziesz:
find /var/www/html/wp-content/uploads/ -name "*.php" -delete
find /var/www/html/wp-content/uploads/ -name "*.phtml" -delete
find /var/www/html/wp-content/uploads/ -name ".htaccess" -delete
Krok 5: Czyszczenie bazy danych
Usunięcie fałszywych administratorów
-- Usun podejrzanych użytkowników (najpierw zweryfikuj ID)
DELETE FROM wp_users WHERE ID IN (lista_podejrzanych_id);
DELETE FROM wp_usermeta WHERE user_id IN (lista_podejrzanych_id);
Szukanie wstrzykniętej treści
-- Szukaj wstrzyknietych skryptow w postach
SELECT ID, post_title
FROM wp_posts
WHERE post_content LIKE '%<script%'
AND post_content LIKE '%eval(%';
-- Szukaj podejrzanych opcji
SELECT option_name, option_value
FROM wp_options
WHERE option_name LIKE '%hack%'
OR option_name LIKE '%inject%'
OR option_value LIKE '%base64_decode%';
Krok 6: Wzmocnienie konfiguracji
Po czyszczeniu, wzmocnij swoją stronę przed przyszłymi atakami:
Zmiana wszystkich danych logowania
# Zmien haslo administratora
wp user update admin --user_pass="nowe-bezpieczne-haslo" --path=/var/www/html/
# Regeneruj Salt Keys (wylogowuje wszystkie aktywne sesje)
wp config shuffle-salts --path=/var/www/html/
Dodanie zabezpieczen w wp-config.php
// Wylacz edycje plikow z panelu admin
define('DISALLOW_FILE_EDIT', true);
// Wylacz instalacje wtyczek/motywow z panelu admin
define('DISALLOW_FILE_MODS', true);
// Wymus SSL w panelu admin
define('FORCE_SSL_ADMIN', true);
Konfiguracja uprawnien plikow
# Katalogi: 755
find /var/www/html/ -type d -exec chmod 755 {} \;
# Pliki: 644
find /var/www/html/ -type f -exec chmod 644 {} \;
# wp-config.php: 400 (tylko do odczytu)
chmod 400 /var/www/html/wp-config.php
Krok 7: Weryfikacja i monitorowanie
Lista kontrolna po czyszczeniu
- Rdzeń WordPressa zweryfikowany za pomocą checksums
- Wszystkie wtyczki zainstalowane ponownie z czystych źródeł
- Pliki PHP usunięte z uploads
- Fałszywe konta administratorów usunięte
- Hasła zmienione dla wszystkich użytkowników
- Salt Keys zregenerowane
- Uprawnienia plików poprawione
- DISALLOW_FILE_EDIT włączone
- XML-RPC wyłączone jeśli nie jest potrzebne
- Wtyczka bezpieczeństwa zainstalowana (Wordfence, Sucuri)
- Automatyczne backupy skonfigurowane
Zgłoszenie rewizji do Google
Jeśli Google oznaczył Twoją stronę jako niebezpieczną:
- Przejdz do Google Search Console
- Przejdz do Bezpieczeństwo i ręczne działania
- Zglos rewizje po czyszczeniu
- Czekaj 24-72 godziny na ponowną ocenę
Zapobieganie: Unikanie przyszłych hacków
Najlepsza obrona to zapobieganie:
- Zawsze aktualizuj: Rdzeń, wtyczki i motywy - automatycznie jeśli to możliwe
- Używaj silnych haseł: Minimum 16 znaków, unikalnych dla każdego konta
- Wdrażaj 2FA: Uwierzytelnianie dwuskładnikowe dla wszystkich kont admin
- Bezpieczny hosting: VPS z firewallem, nie hosting współdzielony
- Codzienne backupy: Zautomatyzowane i przechowywane poza serwerem
- Ciągłe monitorowanie: Alerty o zmianach plików i podejrzanej aktywności
Poznaj nasze usługi audytu bezpieczeństwa WordPress i opiekę techniczną WordPress aby profesjonalnie chronić swoją stronę.


