Command Injection Luka

os command injection (znany również jako Shell injection) to luka w zabezpieczeniach sieciowych, która pozwala atakującemu na wykonywanie dowolnych poleceń systemu operacyjnego (OS) na serwerze, na którym działa aplikacja, i zazwyczaj w pełni naraża aplikację i wszystkie jej dane.

dlaczego aplikacje internetowe muszą wykonywać polecenia systemowe?

aplikacje internetowe czasami muszą wykonywać polecenia systemu operacyjnego (polecenia systemu operacyjnego), aby komunikować się z podstawowym systemem operacyjnym hosta i systemem plików. Można to zrobić, aby uruchamiać polecenia systemowe, uruchamiać aplikacje napisane w innym języku programowania lub uruchamiać skrypty shell, python, perl lub PHP. Dla każdego systemu operacyjnego, w tym Windows, Unix i Linux, dostępne są funkcje, które mogą wykonać polecenie, które jest przekazywane do innych skryptów jako polecenie powłoki. Choć niezwykle przydatna, ta funkcjonalność może być niebezpieczna, gdy jest używana nieprawidłowo, i może prowadzić do problemów z bezpieczeństwem aplikacji internetowych, jak wyjaśniono w tym artykule.

dlaczego należy zachować ostrożność podczas używania poleceń systemowych w aplikacjach internetowych

wykorzystując lukę w wstrzykiwaniu poleceń w podatnej aplikacji, atakujący mogą dodawać dodatkowe polecenia lub wstrzykiwać własne polecenia systemu operacyjnego. Oznacza to, że podczas ataku command injection atakujący może łatwo przejąć pełną kontrolę nad systemem operacyjnym hosta serwera www. Dlatego programiści powinni być bardzo ostrożni, jak przekazać dane wejściowe użytkownika do jednej z tych funkcji podczas tworzenia aplikacji internetowych.

przykład luki w poleceniu Injection

w tym przykładzie luki w poleceniu injection używamy funkcji ping, która jest notorycznie niebezpieczna na wielu routerach. Wyobraź sobie podatną aplikację, która ma wspólną funkcję, która przekazuje adres IP z danych wejściowych użytkownika do polecenia ping systemu. Dlatego, jeśli Dane wejściowe użytkownika to 127.0.0.1, następujące polecenie jest wykonywane w systemie operacyjnym hosta:

ping -c 5 127.0.0.1

ponieważ mamy do czynienia z podatną na ataki aplikacją internetową, możliwe jest wyrwanie się z polecenia ping lub wywołanie błędu, który zwraca atakującemu przydatne informacje. Atakujący może następnie użyć tej funkcji do wykonania własnych dowolnych poleceń. Przykład dodawania dodatkowych poleceń systemowych może wyglądać następująco:

ping -c 5 127.0.0.1; id

w powyższym przykładzie najpierw wykonywane jest polecenie ping, A bezpośrednio po tym następuje wykonanie polecenia id. Dlatego wyjście polecenia na stronie będzie wyglądać tak:

podczas ataku na system operacyjny atakujący może również skonfigurować atak oparty na błędach. Na przykład, wstrzyknięcie kodu w tym przypadku będzie zazwyczaj wyglądać jak poniżej:

ping -c 5 "$(id)"

powyższy wstrzyknięcie kodu zwraca odpowiedź w następujący sposób:

ping: unknown host uid=0(root) gid=0(root) groups=0(root)

jak zapobiec lukom w zabezpieczeniach polecenia systemowego Injection

aby zapobiec wykorzystywaniu przez atakującego podatnej aplikacji internetowej i wstawianiu znaków specjalnych do polecenia systemu operacyjnego, należy spróbować aby w miarę możliwości uniknąć wywołań systemowych. We wszystkich przypadkach unikaj wprowadzania danych przez użytkownika, chyba że jest to absolutnie konieczne. A jeśli jest to konieczne, upewnij się, że istnieje odpowiednia walidacja danych wejściowych – walidacja danych wejściowych jest zawsze koniecznością, aby upewnić się, że kod aplikacji internetowej nie jest podatny na inne podatności o dużym wpływie, w tym XSS i SQL Injection.

wyłącz również tę funkcję w pliku konfiguracyjnym Twojego języka, jeśli jej nie potrzebujesz, aby atakujący nigdy nie mogli uzyskać dostępu do powłoki systemowej w systemie operacyjnym hosta za pośrednictwem podatnych aplikacji internetowych. W niektórych językach można oddzielić wykonanie procesu od parametrów wejściowych. Można również zbudować białą listę możliwych wejść i sprawdzić formaty, na przykład akceptując tylko integer dla numerycznego identyfikatora.

Klasyfikacja podatności I Tabela dotkliwości

Bądź na bieżąco z trendami bezpieczeństwa w sieci

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.