Powłoka internetowa - Web shell
Shell internetowej jest interfejs shell-like , który umożliwia serwer WWW do zdalnego dostępu, często dla celów cyberataków . Powłoka internetowa jest wyjątkowa, ponieważ do interakcji z nią używana jest przeglądarka internetowa .
Powłokę internetową można zaprogramować w dowolnym języku programowania obsługiwanym przez serwer. Powłoki WWW są najczęściej pisane w języku programowania PHP ze względu na powszechne użycie PHP w aplikacjach WWW . Jednak używane są również skrypty powłoki Active Server Pages , ASP.NET , Python , Perl , Ruby i Unix , chociaż te języki są rzadziej używane.
Korzystając z narzędzi do monitorowania sieci , osoba atakująca może znaleźć luki, które mogą potencjalnie umożliwić dostarczenie powłoki internetowej. Te luki są często obecne w aplikacjach uruchamianych na serwerze sieciowym.
Osoba atakująca może użyć powłoki internetowej do wydawania poleceń powłoki, wykonywania eskalacji uprawnień na serwerze sieciowym oraz do przesyłania , usuwania , pobierania i wykonywania plików do iz serwera sieci Web.
Ogólne zastosowanie
Powłoki internetowe są wykorzystywane w atakach głównie dlatego, że są wielozadaniowe i trudne do wykrycia.
Powłoki sieciowe są powszechnie używane do:
- Kradzież danych
- Infekowanie odwiedzających witrynę ( ataki wodopoju )
- Oszpecenie strony internetowej poprzez modyfikację plików ze złośliwą intencją
- Rozpocznij rozproszone ataki typu „odmowa usługi” ( DDoS )
- Aby przekazywać polecenia wewnątrz sieci, która jest niedostępna przez Internet
- Do wykorzystania jako baza dowodzenia i kontroli , na przykład jako bot w systemie botnet lub w celu naruszenia bezpieczeństwa dodatkowych sieci zewnętrznych.
Dostawa powłok internetowych
Powłoki internetowe są instalowane przez luki w aplikacjach internetowych lub słabą konfigurację zabezpieczeń serwera, w tym:
- wstrzyknięcie SQL ;
- Luki w aplikacjach i usługach (np. oprogramowanie serwera WWW , takie jak NGINX lub aplikacje systemu zarządzania treścią, takie jak WordPress );
- Podatności w przetwarzaniu i przesyłaniu plików, które można złagodzić, np. ograniczając typy plików, które można przesyłać;
- luki w zabezpieczeniach zdalnego włączania plików (RFI) i lokalnego włączania plików (LFI);
- Zdalne wykonanie kodu ;
- Odsłonięte interfejsy administracyjne;
Atakujący może również zmodyfikować ( spoof ) Content-Type
nagłówek, który ma zostać wysłany przez atakującego w przesłanym pliku, aby ominąć nieprawidłową walidację pliku (walidację za pomocą typu MIME wysłanego przez klienta), co spowoduje pomyślne przesłanie powłoki atakującego.
Przykład
Poniżej znajduje się prosty przykład powłoki internetowej napisanej w PHP, która wykonuje i wyświetla wynik polecenia powłoki:
<?=`$_GET[x]`?>
Zakładając, że nazwa pliku to example.php
, przykład, który wyświetliłby zawartość /etc/passwd
pliku, jest pokazany poniżej:
https://example.com/example.php?x=cat%20%2Fetc%2Fpasswd
Powyższe żądanie przyjmie wartość x
parametru ciągu zapytania , wysyłając następujące polecenie powłoki:
cat /etc/passwd
Można by temu zapobiec, gdyby funkcje powłoki PHP były wyłączone, tak że arbitralne polecenia powłoki nie mogły być wykonywane z PHP.
Zapobieganie i łagodzenie
Powłoka sieciowa jest zwykle instalowana z wykorzystaniem luk w oprogramowaniu serwera sieciowego. Dlatego usunięcie tych luk jest ważne, aby uniknąć potencjalnego ryzyka skompromitowanego serwera WWW.
Poniżej przedstawiono środki bezpieczeństwa zapobiegające instalacji powłoki internetowej:
- Regularnie aktualizuj aplikacje i system operacyjny serwera hosta, aby zapewnić odporność na znane błędy
- Wdrażanie strefy zdemilitaryzowanej (DMZ) między serwerami skierowanymi do sieci a sieciami wewnętrznymi
- Bezpieczna konfiguracja serwera WWW
- Zamykanie lub blokowanie nieużywanych portów i usług
- Korzystanie z walidacji danych wprowadzanych przez użytkownika w celu ograniczenia lokalnych i zdalnych podatności na włączenie plików file
- Użyj usługi odwrotnego proxy , aby ograniczyć administracyjne adresy URL do znanych legalnych
- Częste skanowanie podatności w celu wykrycia obszarów ryzyka i przeprowadzania regularnych skanów za pomocą oprogramowania zabezpieczającego sieć (nie zapobiega to atakom typu zero-day )
- Wdróż zaporę sieciową
- Wyłącz przeglądanie katalogów
- Nie używam domyślnych haseł
Wykrycie
Powłoki WWW można łatwo modyfikować, więc ich wykrycie nie jest łatwe, a oprogramowanie antywirusowe często nie jest w stanie wykryć powłok WWW.
Oto typowe wskaźniki obecności powłoki internetowej na serwerze sieciowym:
- Nienormalnie wysokie wykorzystanie serwera WWW (z powodu intensywnego pobierania i przesyłania przez atakującego);
- Pliki z nieprawidłowym znacznikiem czasu (np. nowsze niż data ostatniej modyfikacji);
- Nieznane pliki na serwerze WWW;
- Pliki z wątpliwymi odniesieniami, na przykład
cmd.exe
lubeval
; - Nieznane połączenia w logach serwera WWW
Na przykład plik generujący podejrzany ruch (np. plik PNG żądający z parametrami POST ); Wątpliwe logowanie z serwerów DMZ do wewnętrznych podsieci i odwrotnie.
Powłoki internetowe mogą również zawierać formularz logowania, który często jest zamaskowany jako strona błędu .
Korzystając z powłok internetowych, przeciwnicy mogą modyfikować plik .htaccess (na serwerach z oprogramowaniem Apache HTTP Server ) na serwerach internetowych, aby przekierowywać żądania wyszukiwarek na stronę internetową zawierającą złośliwe oprogramowanie lub spam . Często powłoki internetowe wykrywają klienta użytkownika, a treść prezentowana pająkowi wyszukiwarki różni się od prezentowanej przeglądarce użytkownika. Aby znaleźć muszlę wstędze user-agent jest zwykle wymagana zmiana bot gąsienicy. Po zidentyfikowaniu powłoki internetowej można ją łatwo usunąć.
Analiza dziennika serwera WWW może określić dokładną lokalizację powłoki WWW. Uprawnieni użytkownicy/odwiedzający zwykle mają różnych klientów użytkownika i odsyłaczy (odsyłających) , z drugiej strony powłoka internetowa jest zwykle odwiedzana tylko przez atakującego, dlatego ma bardzo niewiele wariantów ciągów agenta użytkownika.