Luka oznaczona jako CVE-2023-54352 otrzymała ocenę 9.8 w skali CVSS (Common Vulnerability Scoring System — skala 0-10 oceniająca powagę luki). Zaobserwowaliśmy, że problem dotyczy motywu WordPress o nazwie Seotheme 1. Podatność umożliwia atakującym, którzy nie posiadają żadnych poświadczeń, zdalne wykonanie kodu na serwerze, na którym działa strona internetowa.
Mechanizm ataku jest prosty i nie wymaga interakcji ze strony administratora witryny. Atakujący może przesłać spreparowany plik PHP bezpośrednio do katalogu motywu 2. Daje to natychmiastowy dostęp do powłoki systemowej i w konsekwencji może prowadzić do pełnej kontroli nad serwerem. Ze względu na popularność WordPressa w polskim segmencie MŚP, skala potencjalnego zagrożenia jest wysoka.
TL;DR
- Produkt: Motyw WordPress Seotheme 1.
- Wektor: Nieautoryzowane przesyłanie plików prowadzące do RCE (Remote Code Execution — zdalne wykonanie kodu na komputerze ofiary) 1 2.
- Identyfikator: CVE-2023-54352.
- Wskaźnik kompromitacji (IoC): Obecność pliku
mar.phpw katalogu/wp-content/themes/seotheme/3. - Kogo dotyczy: Administratorzy i właściciele stron opartych na WordPress z zainstalowanym motywem Seotheme, w tym polskie firmy, blogerzy i małe sklepy e-commerce.
- Pierwszy ruch reagowania: Natychmiastowe sprawdzenie serwera pod kątem obecności pliku
mar.phpi usunięcie lub zmiana motywu Seotheme.
Wektor ataku
Podatność w motywie Seotheme należy do klasy CWE-434 (Unrestricted Upload of File with Dangerous Type). Luka pozwala atakującemu na wysłanie pliku z kodem PHP na serwer bez potrzeby logowania się do panelu administracyjnego WordPressa 2.
Proces ten składa się z dwóch kroków:
- Przesłanie pliku: Atakujący wysyła złośliwy plik, najczęściej prostą powłokę webową (webshell), do katalogu motywu na serwerze. Telemetria wskazuje, że plik ten jest zapisywany pod nazwą
mar.phpw ścieżce/wp-content/themes/seotheme/3. - Wykonanie kodu: Po pomyślnym przesłaniu pliku, atakujący może uzyskać do niego dostęp przez przeglądarkę, wpisując bezpośredni adres URL. Uruchomienie skryptu
mar.phpmoże dać mu możliwość wykonywania dowolnych poleceń systemowych na serwerze z uprawnieniami, z jakimi działa proces serwera WWW (np.www-data) 4.
Z tego poziomu atakujący może eskalować uprawnienia, instalować tylne furtki (backdoory) w celu zapewnienia sobie trwałego dostępu, kraść dane z bazy danych (dane klientów, zamówienia) lub wykorzystać serwer do dalszych ataków, na przykład jako część botnetu do ataków DDoS (rozproszony atak odmowy usługi).
Wskaźniki kompromitacji
Podstawowym IoC (Indicators of Compromise — wskaźniki kompromitacji) dla tego ataku jest obecność konkretnego pliku na serwerze. Zespoły reagowania powinny przeszukać systemy plików pod kątem następującej ścieżki:
/wp-content/themes/seotheme/mar.php
Obecność tego pliku z dużą dozą prawdopodobieństwa świadczy o udanej kompromitacji. Należy jednak pamiętać, że nazwa pliku (mar.php) może być trywialnie zmieniona przez bardziej zaawansowanych operatorów. Dlatego kluczowe jest również przeszukanie logów serwera WWW (np. Apache, Nginx) pod kątem nietypowych żądań POST do katalogu /wp-content/themes/seotheme/, które nie pochodzą od zaufanych użytkowników.
Co zrobić w 24-48h
Rekomendowane podejście zakłada natychmiastowe działania w celu weryfikacji i zabezpieczenia systemu. Poniższe kroki nie zastępują pełnej konsultacji z zespołem incident response, ale stanowią pierwszą linię obrony.
-
Identyfikacja: Sprawdź, czy na którejkolwiek z zarządzanych przez Ciebie stron WordPress jest zainstalowany i aktywny motyw
Seotheme. Można to zrobić z poziomu panelu administracyjnego (Wygląd -> Motywy) lub sprawdzając zawartość katalogu/wp-content/themes/na serwerze. -
Skanowanie: Niezależnie od tego, czy motyw jest aktywny, przeszukaj całą instalację WordPressa pod kątem obecności pliku
mar.php3. Użyj poleceniafindw konsoli serwera:find /path/to/your/wordpress/ -name "mar.php" -
Izolacja i czyszczenie: Jeśli plik zostanie znaleziony, witrynę należy uznać za skompromitowaną.
- Natychmiast wyłącz stronę (np. przez plik
.htaccesslub w panelu dostawcy hostingu), aby zapobiec dalszym szkodom. - Usuń cały katalog motywu
Seotheme. - Przywróć stronę z ostatniej czystej kopii zapasowej, wykonanej przed datą utworzenia złośliwego pliku.
- Jeśli nie posiadasz czystej kopii, konieczne jest ręczne przejrzenie wszystkich plików WordPressa (core, wtyczki, motywy) w poszukiwaniu innych backdoorów i złośliwego kodu 4.
- Natychmiast wyłącz stronę (np. przez plik
-
Zmiana poświadczeń: Po wyczyszczeniu strony, natychmiast zmień wszystkie hasła: do panelu WordPressa, bazy danych, kont FTP i panelu hostingowego.
-
Kontakt ze wsparciem: Jeśli nie czujesz się pewnie wykonując powyższe kroki, skontaktuj się z działem wsparcia swojego polskiego dostawcy hostingu (np. home.pl, nazwa.pl, dhosting.pl). Często oferują oni pomoc w zakresie skanowania i czyszczenia stron po infekcji.
-
Zgłoszenie incydentu: Każde naruszenie bezpieczeństwa, zwłaszcza jeśli mogło prowadzić do wycieku danych osobowych, warto zgłosić do krajowego zespołu reagowania na incydenty – CERT Polska. Pomaga to w monitorowaniu skali zagrożenia w kraju.
Źródła
Zobacz też
- Krytyczna luka w starej wtyczce WordPress. Analiza CVE-2018-25335
- Luka RCE we wtyczce WordPress Augmented-Reality (CVE-2023-54350)
- Krytyczna luka w Kids Online Store: RCE przez upload plików (CVE-2026-40750)
Footnotes
-
WordPress Seotheme zawiera lukę umożliwiającą zdalne wykonanie kodu (RCE). — https://nvd.nist.gov/vuln/detail/CVE-2023-54352 ↩ ↩2 ↩3
-
Luka pozwala nieautoryzowanym atakującym na wykonanie dowolnego kodu PHP poprzez przesłanie złośliwych plików do katalogu motywu. — https://nvd.nist.gov/vuln/detail/CVE-2023-54352 ↩ ↩2 ↩3
-
Atakujący mogą uzyskać dostęp do przesłanej powłoki PHP pod adresem /wp-content/themes/seotheme/mar.php. — https://nvd.nist.gov/vuln/detail/CVE-2023-54352 ↩ ↩2 ↩3 ↩4
-
Dostęp do powłoki PHP umożliwia wykonanie poleceń systemowych i przesłanie dodatkowych plików w celu uzyskania trwałego dostępu. — https://nvd.nist.gov/vuln/detail/CVE-2023-54352 ↩ ↩2
// Komentarze ...
Dodaj komentarz