Blog 24/7

webshell

TAB. 1Hasłopo angielsku
Po angielskuweb shell
Którą formą pisaćpo angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim.
Inne formyskrypt umożliwiający zdalne wykonywanie kodu na serwerze strony · backdoor dostępny przez przeglądarkę · panel napastnika w plikach strony
KategoriaStrony WWW, WordPress i hosting

Webshell to skrypt umieszczony na publicznie dostępnym serwerze WWW, który daje atakującemu dostęp do tego serwera i służy mu jako brama dalej, do sieci [1]. MITRE ATT&CK opisuje go jako sposób na utrwalenie dostępu, czyli tylną furtkę (backdoor) w serwerze WWW [1]. CERT Polska wskazuje, że nawet prosty webshell umożliwia zdalne wykonywanie komend na serwerze [2]. Na stronach WordPress jest to najczęściej plik PHP dopisany do katalogu wtyczki, motywu albo przesłanych plików.

Jak działa

Webshell to zwykły plik, który serwer WWW uruchamia jak każdy inny skrypt strony. Atakujący wysyła do niego żądanie HTTP z poleceniem w parametrze, a skrypt przekazuje je do systemu i odsyła wynik. Sekurak zwraca uwagę, że webshelle zwykle korzystają z funkcji danej technologii do wykonywania poleceń systemowych [3]. Oprócz skryptu po stronie serwera webshell może mieć program kliencki do komunikacji z nim; MITRE podaje przykład klienta China Chopper [1].

Sam webshell nie jest włamaniem, tylko jego skutkiem. Najpierw musi zadziałać inny błąd: wgranie dowolnego pliku (arbitrary file upload), zdalne wykonanie kodu (RCE) albo przejęcie hasła do panelu lub serwera. Słabość CWE-434, czyli nieograniczone wgrywanie plików niebezpiecznego typu, zajęła 10. miejsce w zestawieniu CWE Top 25 za 2024 rok [7]. Typowy przebieg pokazuje schemat poniżej.

RYS. 1Od podatności do webshella

Najprostszy webshell ma jedną linię kodu: przekazuje wartość parametru żądania do funkcji, która wykonuje polecenie systemowe. Przykład takiego kodu CERT Polska zamieszcza w swojej ścieżce postępowania [2]. Ten artykuł go nie powtarza, bo programy antywirusowe słusznie traktują taki plik jako złośliwy.

Odmiany

Webshelle różnią się rozmiarem i sposobem ukrycia. Sekurak opisuje gotowe narzędzia o różnym stopniu zaawansowania oraz techniki, które omijają wykrywanie po nazwach funkcji [3].

OdmianaCechaTrudność wykrycia
jednolinijkowyjedno wywołanie funkcji systemowej [2]niska, gdy plik jest nowy
gotowe narzędzierozbudowany skrypt pobrany z sieci [3]średnia
zaciemnionykod zakodowany, np. przez base64_decode [3]wysoka
z ładunkiem z zewnątrzpobiera właściwy kod z innego serwera [3]wysoka

Zaciemnianie kodu ma utrudnić przegląd pliku. Sekurak podaje też przykład operatora wykonania PHP (odwrotnych apostrofów), który uruchamia polecenie bez użycia funkcji system czy exec [3].

W WordPressie

WordPress jest napisany w PHP, więc każdy plik .php, do którego serwer WWW ma dostęp, może zostać wykonany. Źródłem webshella jest najczęściej podatność we wtyczce albo w motywie, która pozwala zapisać plik na dysku. Drugą drogą jest edytor plików motywów i wtyczek w panelu: kto przejmie konto administratora, może dopisać kod do istniejącego pliku motywu. Dokumentacja WordPressa podaje, że stała DISALLOW_FILE_EDIT w wp-config.php działa jak odebranie wszystkim użytkownikom uprawnień edit_themes, edit_plugins i edit_files [5].

CERT Polska zwraca uwagę na niestandardowe żądania POST do plików w katalogach, w których nie powinno być plików wykonywalnych, na przykład /images/ albo /uploads/; mogą one świadczyć o obecności webshella [2]. Z tego powodu stosuje się blokadę wykonywania PHP w katalogu uploads. CERT Polska pisze wprost, że ograniczenie katalogów z uprawnieniem wykonywania skryptów PHP ogranicza możliwość wykorzystania webshella [2].

Na hostingu współdzielonym znaczenie mają też uprawnienia plików. Dokumentacja WordPressa zaleca, by pliki należały do konta użytkownika, a zapis przez serwer WWW był możliwy tylko tam, gdzie WordPress go potrzebuje [5].

Zagrożenia i skutki

Webshell daje atakującemu trwały dostęp, który przetrwa zmianę hasła do panelu. Z jego pomocą można czytać wp-config.php z hasłem do bazy, zakładać konta, dopisywać SEO spam i przekierowania albo wgrywać kolejne narzędzia. MITRE opisuje webshell jako bramę do sieci, co otwiera drogę do lateral movement, czyli przemieszczania się na inne systemy [1].

  • Kradzież danych z bazy i plików konfiguracyjnych.
  • Dalsze infekcje: dopisany kod w innych plikach strony, nowe tylne furtki.
  • Wykorzystanie serwera do ataków na innych, np. wysyłki spamu.

Jak się bronić

Podstawą jest usunięcie przyczyny: aktualizacja wtyczek, motywów i rdzenia. CERT Polska zaleca utrzymywanie aktualnych wersji CMS, jego wtyczek, motywów i oprogramowania serwera [2]. Dokumentacja WordPressa radzi usuwać nieużywane wtyczki [5].

MITRE wymienia jako środki zaradcze zasadę najmniejszych uprawnień dla kont mogących modyfikować katalogi WWW oraz wyłączanie niebezpiecznych funkcji skryptowych [1]. W PHP służy do tego dyrektywa disable_functions, ale podręcznik PHP ostrzega, że można ją obejść i nie jest wystarczającym zabezpieczeniem na hostingu współdzielonym [6]. Dyrektywa open_basedir ogranicza pliki dostępne dla PHP do wskazanego drzewa katalogów [6].

Wykrywanie opiera się na kilku warstwach:

Znaleziony webshell to wskaźnik kompromitacji (IoC), a nie koniec sprawy. Czyszczenie przejętej strony wymaga ustalenia wektora ataku. CERT Polska zaleca po incydencie zmianę wszystkich haseł i kluczy, do których atakujący mógł mieć dostęp [2], a przywrócenie z kopii zapasowej rozważać wtedy, gdy wektor i czas infekcji są jednoznacznie ustalone [2].

Historia i przykłady

Webshelle instalowano na serwerach Microsoft Exchange podatnych na lukę ProxyLogon (CVE CVE-2021-26855) [4]. W artykule z 14 kwietnia 2021 roku Sekurak opisał operację FBI, która za zgodą sądu usunęła te webshelle, wydając przez nie polecenie skasowania samego pliku webshella [4]. Operacja nie łatała podatności; aktualizacja serwerów nadal była konieczna [4].

TAB. 2

Przypisy

7
  1. [1] Server Software Component: Web Shell (T1505.003) · MITRE ATT&CK
  2. [2] Przejęta strona internetowa — ścieżka postępowania · CERT Polska
  3. [3] Jak wykrywać backdoory / webshelle w aplikacjach webowych? · Sekurak
  4. [4] FBI za zgodą sądu wykorzystał webshelle żeby… usunąć webshelle · Sekurak
  5. [5] Hardening WordPress — Advanced Administration Handbook · WordPress.org
  6. [6] Description of core php.ini directives (open_basedir, disable_functions) · The PHP Group
  7. [7] 2024 CWE Top 25 Most Dangerous Software Weaknesses · MITRE
TAB. 3

Hasła w tym artykule

18
TAB. 4

Linkują tutaj

72

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com