Co to jest wstrzyknięcie polecenia systemu operacyjnego?
Ataki iniekcyjne są jednym z najczęstszych sposobów atakowania systemów przez hakerów, ponieważ umożliwiają im łatwe uruchamianie wielu poleceń i kodów. Wstrzykiwanie poleceń systemu operacyjnego jest jednym z takich ataków polegających na wstrzykiwaniu, o których należy wiedzieć. Wykorzystuje to lukę, którą administratorzy systemów, baz danych i aplikacji internetowych powinni traktować bardzo poważnie.
Czym więc jest atak polegający na wstrzykiwaniu poleceń systemu operacyjnego?
Definicja wstrzykiwania poleceń systemu operacyjnego
Wstrzykiwanie poleceń systemu operacyjnego umożliwia złośliwemu atakującemu wykonanie dowolnego polecenia poprzez wykorzystanie podatnego na ataki systemu operacyjnego, programu, aplikacji, bazy danych lub wtyczki. Dzieje się tak, gdy aplikacje nie sprawdzają prawidłowości i nie oczyszczają parametrów, których używają podczas wywoływania funkcji powłoki, takich jak system() lub exec() w celu wykonania poleceń systemowych.
Aby lepiej zrozumieć wykrywanie i wykorzystywanie wstrzykiwania poleceń systemu operacyjnego, warto przeanalizować ten problem w trzech głównych kategoriach.
1. Bezpośredni wtrysk poleceń
Rozważ to z perspektywy atakującego. Cyberatakujący odkrywa, że aplikacja uruchamia określone polecenie systemowe; wprowadzają złośliwą komendę jako część oczekiwanych argumentów. Następnie aplikacja wykonuje oryginalne polecenie, po którym następuje złośliwe.
Atakujący stosuje różne podejścia, aby znaleźć taką lukę. Najłatwiejszą metodą walki z tym problemem jest ciągłe aktualizowanie systemu operacyjnego; możesz to zrobić we współpracy z kompetentnym zespołem IT. Należy unikać wszystkich aplikacji i programów, które mogą powodować luki w systemie, ponieważ osoba atakująca może bezpośrednio wprowadzić kod, a szkody są nieprzewidywalne.
2. Pośredni wtrysk poleceń
W przypadku pośredniego wstrzyknięcia polecenia atakujący nie wprowadza bezpośrednio kodu ani polecenia do systemu. W tym celu wykorzystują podatną na ataki aplikację lub program w systemie. Luka tworzy pomost między atakującym a systemem operacyjnym. Wykorzystując tę komunikację, osoba atakująca ma na celu uruchomienie złośliwych kodów i poleceń na celu.
Atakujący przeprowadza serię testów w celu zidentyfikowania tej luki i odkrywa, że oprogramowanie wykorzystuje dane z zewnętrznego źródła, takiego jak plik lub zmienna środowiskowa, do wywołania polecenia systemowego. Następnie atakujący modyfikuje zawartość źródła zewnętrznego, tak aby zawierało ono złośliwe polecenie. Jest to następnie wykonywane wraz z instrukcjami oryginalnej aplikacji.
Główna różnica między bezpośrednim i pośrednim wprowadzaniem poleceń polega na tym, że atakujący używa aplikacji do komunikacji z systemem operacyjnym. Ale nie ma prawdziwej różnicy między szkodami, jakie mogą wyrządzić te dwie formy iniekcji, więc należy zająć się obiema. Dlatego powinieneś upewnić się, że programy w Twojej sieci są niezawodne i niezbędne. Nie trzymaj na urządzeniu aplikacji, którym nie ufasz.
3. Wstrzykiwanie polecenia na ślepo
Innym rodzajem wstrzykiwania poleceń systemu operacyjnego jest wstrzykiwanie poleceń na ślepo. Oznacza to, że aplikacja nie zwraca żadnych danych wyjściowych z polecenia w odpowiedzi HTTP. Osoba atakująca wykorzystuje różne techniki, takie jak opóźnienie czasowe i routing danych wyjściowych, aby wykorzystać tę lukę.
Wyobraź sobie, że szukasz witryny, a wartość „/?search=id” w adresie URL zmienia się przy każdym wyszukiwaniu. Wartością id może być tutaj strona użytkownika, adres zdjęcia produktu lub dowolna strona w witrynie. Atakujący może uzyskać różne wyniki, zmieniając wartość identyfikatora. Trudno to zrobić ręcznie, ale są do tego narzędzia, takie jak Burp Suite. Później atakujący odkrywa na stronie dziwną rzecz: może zostać zwrócona wartość id, która oznacza, że mimo braku wyników odpowiedź witryny wynosi 200, co oznacza, że wszystko jest w porządku. W takim przypadku atakujący mógłby użyć wstrzyknięcia polecenia na ślepo.
Technika taka jak opóźnienie czasowe jest szczególnie użyteczna. Ponieważ otwierana strona będzie pusta, nie otrzymasz żadnej odpowiedzi, ale nadal możesz zebrać informacje o tym, co jest przechowywane w bazie danych na podstawie opóźnień czasowych, które ładują stronę tylko wtedy, gdy obecny jest określony znak. Jest to zbyt czasochłonne, aby być procesem ręcznym, ale wiele narzędzi może zautomatyzować atak.
Przykładowy scenariusz ataku
Przeanalizujmy wszystkie powyższe na przykładzie. Wyobraź sobie, że masz aplikację zakupową, która pozwala użytkownikowi sprawdzić, czy produkty są dostępne w magazynie. Użyjmy adresu URL takiego jak ten poniżej, aby uzyskać dostęp do wszystkich tych informacji:
example_unsafe_store.com/stockStatus?productID=245&storeID=
Wyobraź sobie przekazanie identyfikatorów produktów i sklepów jako argumentów do polecenia powłoki, takiego jak „stockstat.pl 245 38”, ponieważ aplikacja musiałaby odpytywać o stare rekordy. Jeśli programista nie podejmie żadnych działań przeciwko wstrzykiwaniu poleceń, osoba atakująca może wysłać dane wejściowe, aby wykonać żądane polecenie:
& echo this_a_harmful_command &
Jeśli ten wpis trafi do parametru productID, polecenie wykonane przez aplikację będzie następujące:
stockstat.pl & echo this_a_harmful_command & 38
Polecenie echo jest użyteczną metodą wykrywania wstrzyknięć poleceń, a także upewnienia się, że dany ciąg znaków pojawi się na wyjściu. Znak „&” jest separatorem poleceń powłoki, więc wykonywane są trzy oddzielne polecenia, jedno po drugim. W rezultacie dane wyjściowe zwrócone użytkownikowi będą następujące:
Error -productID not found
this_a_harmful_command
38: command not found
Tutaj plik „stockstat.pl” wykonał polecenie bez oczekiwanych argumentów i dlatego zwrócił komunikat o błędzie. Następnie polecenie echo wstrzyknięte przez atakującego zostało uruchomione, a atakujący zobaczył wyrażenie, które wprowadził na ekranie. Pierwotny argument „38” działał jako polecenie powodujące błąd.
Jak chronić się przed iniekcjami poleceń systemu operacyjnego
Chociaż wstrzykiwanie poleceń jest potężnym i szkodliwym wektorem ataku, istnieją pewne sztuczki, aby go uniknąć. Powodem ataków polegających na wstrzykiwaniu poleceń systemu operacyjnego jest wykonanie określonych poleceń systemu operacyjnego za pomocą aplikacji. Musisz temu zapobiec. Jest kilka kwestii do rozważenia:
- Musisz uniemożliwić każdemu, kto ma dostęp do aplikacji, uruchamianie kodu.
- Należy uniemożliwić każdemu, kto ma dostęp do aplikacji, wysyłanie żądań do serwera za pomocą wyrażeń składniowych.
- Musisz zaszyfrować frazy, o które prosi każda osoba mająca dostęp.
Przejdźmy przez każdy element jeden po drugim. Dobrym rozwiązaniem pierwszego problemu jest użycie metody białej listy, aby uniemożliwić każdemu, kto dociera do warstwy aplikacji, wykonanie określonych kodów lub żądań. Każdy, kogo nie zidentyfikujesz, nie będzie mógł uruchomić kodu.
Rozwiązaniem drugiego jest nieakceptowanie niektórych wyrażeń tekstowych używanych w poleceniach. Użytkownik może wprowadzać tylko wartości liczbowe. Zastosuj to razem z metodą białej listy, a będziesz mieć znacznie bezpieczniejszy system.
Trzecia pozycja dotyczy szyfrowania parametrów składniowych, takich jak wprowadzany znak i spacje. W rezultacie metoda białej listy, sprawdzanie składni danych wejściowych i szyfrowanie danych wejściowych powinno chronić Cię przed wstrzyknięciem poleceń systemu operacyjnego.
Ataki iniekcyjne ewoluują każdego dnia
Istnieje wiele metod wstrzykiwania z różnymi technikami ataku, takimi jak polecenia systemu operacyjnego, SQL, SSI i XPath. Nie jest łatwo zapobiegać każdemu z nich. Należy pamiętać, że wszystkie te ataki ewoluują każdego dnia i wykorzystują niewielkie luki w zabezpieczeniach, które przeoczyli programiści. Dlatego tak ważne jest, abyś zawsze był na bieżąco i uważnie śledził bieżące wydarzenia w świecie cyberbezpieczeństwa.
Dodaj komentarz