Studium przypadku infekcji WordPress: letsmakeparty3 i sdfsd234

Published Reading time 5 minutes
Studium przypadku infekcji WordPress -letsmakeparty3 i sdfsd234

Ostatnio trafiłem na interesujący, choć dość uciążliwy przypadek infekcji typu cross-site scripting (XSS) na platformie WordPress. Atak ten, znany w środowisku pod nazwą letsmakeparty3, pokazuje, jak jeden niezabezpieczony plik potrafi otworzyć furtkę do przejęcia kontroli nad całą witryną.

Mechanizm ataku i pierwsze ślady

Wszystko zaczęło się od wykrycia w katalogu głównym serwera podejrzanego pliku o nazwie sdfsd234. Po analizie jego zawartości okazało się, że skrypt ten próbuje zmienić uprawnienia innych plików (chmod) na 777. Taki zabieg pozwala napastnikowi na dowolną modyfikację kodu źródłowego strony.

Atak wymierzono głównie w pliki z rozszerzeniem .php oraz .js, w tym kluczowe elementy struktury WordPress’a, takie jak index.php czy pliki motywu. Skrypt automatycznie wstrzykiwał złośliwy kod, który po stronie użytkownika wywoływał niepożądane działania.

Jak wygląda atak?

Złośliwy kod jest dołączany do pliku header.php w motywie.

Do pliku header.php dopisywany jest następujący fragment kodu:

Obraz przedstawiający część obfuskowanego kodu w nagłówku infekcji Letsmakeparty3

W tej postaci bardzo trudno jednoznacznie zrozumieć, co dokładnie robi ten kod. Dlatego rozszyfrujmy go i sformatujmy tak, aby był bardziej czytelny i zrozumiały.

Obraz przedstawiający część ujawnionego kodu w nagłówku infekcji Letsmakeparty3

Wyraźnie widać, że celem tego złośliwego kodu jest:

  1. pobranie kodu PHP z pliku /n.txt z serwera atakującego i zapisanie go w pliku sdfsd234,
  2. odświeżanie tego pliku co 6400 sekund,
  3. umożliwienie atakującemu zdalnego uruchamiania kodu PHP na serwerze – atakujący musi wysłać zapytanie o określonej strukturze, a skrypt pobierze wskazany przez niego plik, zapisze go lokalnie na serwerze, uruchomi, a następnie usunie, aby nie pozostawić żadnych śladów.

Jaka jest zawartość pliku sdfsd234?

Ten skrypt wykonuje następujące działania (uwaga – należy pamiętać, że zawartość tego pliku jest odświeżana częściej niż co 2 godziny, więc jego działanie może zmieniać się w czasie):

  1. wyszukuje wszystkie pliki *.php, a następnie odnajduje w nich znacznik  i dołącza do niego wywołanie skryptu JS,
  2. wyszukuje wszystkie pliki index.* i dołącza do nich bardzo podobny kod do tego, który znajduje się w header.php,
  3. wyszukuje wszystkie pliki *.js i dopisuje do nich kod, który następnie zostaje dodany do strony poprzez wywołanie zdalnego pliku JS,
  4. wyszukuje wszystkie pliki wp-config.php i wyciąga z nich dane do połączenia z bazą danych (stałe DB_NAME, DB_HOST, DB_USER, DB_PASSWORD). Następnie łączy się z bazą danych, odnajduje tabelę pasującą do zapytania %post% i dopisuje do każdego wpisu kod JS, który
  5. odpowiada za przekierowywanie odwiedzających stronę internetową.

Wszystkie powyższe operacje są wykonywane na wszystkich plikach, do których skrypt ma dostęp, także poza katalogiem danej domeny. Jeżeli na serwerze znajduje się wiele stron, wszystkie mogą zostać zainfekowane.

Po wykonaniu tych operacji atakujący uzyskuje pełną kontrolę nad zaatakowaną stroną.

Między innymi może on:

  • w dowolnym momencie wysyłać kod PHP na stronę i wykonywać go na serwerze,
  • śledzić każdego odwiedzającego stronę internetową,
  • zbierać wszystkie dane podawane przez użytkowników na tej stronie,
  • przekierowywać odwiedzających na adres wskazany przez atakującego,
  • itp.

Jak dochodzi do infekcji?

Nie da się tego jednoznacznie ustalić. Wiemy już jednak, że:

  • plik header.php bywa modyfikowany nawet kilka tygodni przed faktycznym uruchomieniem złośliwych skryptów,
  • infekcja występuje także na stronach, na których zainstalowany jest Wordfence,
  • na wszystkich zainfekowanych stronach, które do nas trafiły, znajdowały się nieaktualne wtyczki oraz motywy z Themeforest. Jest bardzo prawdopodobne, że źródłem infekcji jest nieaktualna wersja jednej z wtyczek wykorzystywanych przez te motywy.

Czy moja strona jest zainfekowana?

To dość łatwe do sprawdzenia. Zaloguj się przez FTP i sprawdź, czy w katalogu głównym strony znajduje się plik sdfsd234 oraz czy plik header.php w Twoim motywie nie zawiera fragmentu kodu pokazanego powyżej.

Jeżeli znajdziesz którykolwiek z tych elementów lub Twoja strona już przekierowuje odwiedzających na inne witryny (w czyszczonych przez nas przypadkach były to strony typu „You won the contest!”), oznacza to, że strona jest zainfekowana i konieczne jest dokładne usunięcie skutków infekcji oraz odpowiednie zabezpieczenie witryny przed kolejnym atakiem.

Skutki dla bezpieczeństwa

Głównym celem tego ataku jest wstrzyknięcie skryptu zewnętrznego z domeny letsmakeparty3. Takie działanie pozwala hakerom na:

  • kradzież danych sesyjnych użytkowników,
  • przekierowywanie odwiedzających na niebezpieczne strony,
  • wyświetlanie niechcianych reklam,
  • infekowanie urządzeń osób odwiedzających witrynę.

Zauważyłem, że kod często ukrywa się w bazie danych lub w plikach nagłówka (header.php) i stopki (footer.php). To sprawia, że ręczne usunięcie infekcji bywa żmudne i wymaga sporej dokładności.

Wnioski z analizy

Ten konkretny przypadek przypomina, że dbanie o higienę strony to podstawa. Luka, którą wykorzystał skrypt sdfsd234, często wynika z nieaktualnych wtyczek lub błędnych uprawnień do plików na serwerze.

Warto regularnie sprawdzać, czy w katalogu głównym nie pojawiły się pliki o dziwnych nazwach. Szybka reakcja pozwala uniknąć sytuacji, w której Google oznaczy stronę jako niebezpieczną, co zazwyczaj drastycznie obniża zaufanie klientów i niszczy pozycjonowanie. Moim zdaniem najlepszą obroną jest połączenie regularnych aktualizacji z solidnym skanerem bezpieczeństwa, który wyłapie takie anomalie, zanim wyrządzą realne szkody.

Zmień zgody