Bieżący tydzień minął nam pod znakiem czyszczenia infekcji na stronach, a szybkie wyszukanie jej oznak w Google pokazuje, że jeszcze sporo osób się z nią zmierzy. Opiszmy więc, jak ta infekcja wyglądała i jak działa.
Jak wygląda atak
Doklejenie szkodliwego kodu do pliku header.php
w motywie
W pliku header.php
doklejany jest następujący fragment kodu:
W tej formie oczywiście trudno jest zrozumieć, co ten kod dokładnie robi. Dlatego go sobie rozszyfrujmy i przeformatujmy, aby stał się bardziej czytelny i zrozumiały:
Teraz widać już, że wklejka ta ma za zadanie:
- Pobrać z pliku
/n.txt
z serwera atakującego kod PHP i umieścić go w plikusdfsd234
- Plik ten ma być odświeżany co 6400 sekund.
- Pozwolić atakującemu na zdalne uruchamianie kodu PHP na serwerze – atakujący musi wysłać request o określonej konstrukcji, a skrypt pobierze wskazany przez niego plik, zapisze go lokalnie na serwerze, uruchomi, a następnie usunie, aby nie zostawić po sobie śladów.
Zawartość pliku sdfsd234
Skrypt ten wykonuje następujące akcje (uwaga – przypominam, że zawartość tego pliku jest odświeżana co niecałe 2 godziny, więc jego działanie może zmieniać się w czasie):
- Szuka wszystkich plików
*.php
, a następnie szuka w nich tagu<head>
i dokleja w nim wywołanie skryptu JS. - Szuka wszystkich plików
index.*
, a następnie dokleja do nich bardzo podobny kod, jaki znajduje się w plikuheader.php
. - Szuka wszystkich plików
*.js
i dokleja do nich kod, który dokleja na stronie wywołanie zdalnego pliku JS. - Szuka wszystkich plików
wp-config.php
i wyparsowuje z nich dane połączenia do bazy danych (stałeDB_NAME
,DB_HOST
,DB_USER
,DB_PASSWORD
). Następnie nawiązuje połączenie z bazą danych, odnajduje tabelę pasującą do zapytania%post%
i do każdego wpisu dokleja kod JS, który odpowiedzialny jest za przekierowywanie osoby odwiedzające stronę.
Wszystkie powyższe poszukiwania prowadzone są w obrębie wszystkich plików, do których skrypt ma dostęp (wychodząc przy tym poza katalog danej domeny – jeśli na serwerze znajduje się wiele stron, to wszystkie zostaną zainfekowane).
Po tych operacjach, atakujący ma już pełną kontrolę nad zaatakowaną stroną.
Może m. in.:
- w dowolnym momencie wysłać do strony kod PHP i wykonać go na serwerze,
- śledzić każdego odwiedzającego stronę,
- zbierać wszystkie dane, które na tej stronie zostaną przez odwiedzających podane,
- przekierować odwiedzających stronę na wskazany przez atakującego adres,
- itd.
Jak dochodzi do infekcji?
Tego jednoznacznie nie da się ustalić. Wiemy już natomiast, że:
- Plik header.php modyfikowany jest nawet kilka tygodni wcześniej niż zaczyna się faktyczne działanie szkodliwych skryptów.
- Infekcja występuje także na stronach, które mają zainstalowanego Wordfence’a.
- Na wszystkich zainfekowanych stronach, które do nas trafiły, znajdowały się nieaktualne wtyczki i motywy z TF. Z dużym prawdopodobieństwem źródłem infekcji jest nieaktualna wersja jednej z wtyczek, z których te motywy korzystają.
Czy moja strona jest zainfekowana?
To akurat dość łatwo można sprawdzić. Zaloguj się na FTP i sprawdź, czy w folderze głównym strony znajduje się plik sdfsd234
oraz czy plik header.php
Twojego motywu nie zawiera pokazanego wyżej fragmentu kodu.
Jeśli znajdziesz któryś z tych plików lub Twoja strona już przekierowuje odwiedzających na inne strony (w czyszczonych przez nas przypadkach były to strony „Wygrałeś konkurs!”), to Twoja strona jest zainfekowana i czeka Cię żmudne czyszczenie skutków infekcji i zabezpieczenie strony, aby atak się nie powtórzył.
Jeśli potrzebujesz pomocy w usunięciu skutków ataku – zapraszam do współpracy.