Co to jest włączanie plików i wykonywanie dowolnego kodu? - MalCare
Opublikowany: 2023-04-13Włączenie pliku i wykonanie dowolnego kodu: Na początku tego miesiąca zhakowano witrynę z biletami lotniczymi zbudowaną na WordPressie, w wyniku czego ujawniono dane osobowe setek tysięcy odwiedzających. We wcześniejszym poście na temat tego, dlaczego hakerzy się włamują , omówiliśmy wszystkie powody, dla których hakerzy się włamują, w tym kradzież danych, wysyłanie e-maili ze spamem, mogą nawet używać technik czarnego kapelusza SEO do oceniania własnych produktów (zalecane przeczytanie – hack farmaceutyczny) itp.
Dowiedzenie się, w jaki sposób hakerzy włamują się na stronę internetową, jest kluczem do zapobiegania im, dlatego we wcześniejszym artykule wymieniliśmy najczęstsze ataki hakerskie przeprowadzane na stronach WordPress.
Kiedy mówimy o typowych atakach hakerskich, z dużym prawdopodobieństwem pomyślisz o atakach typu brute force. Ale czy wiesz, że włączanie plików i wykonywanie dowolnego kodu jest również jednym z najczęstszych ataków hakerskich przeprowadzanych na stronach WordPress. W tym poście zajmiemy się tymi atakami nieco głębiej, aby zrozumieć je szczegółowo.
Aby zrozumieć, jak działają te ataki, pierwszą rzeczą, którą musisz wiedzieć, jest to, że dotyczą one plików PHP.Pewnie zastanawiasz się, dlaczego? Dzieje się tak dlatego, że zarówno ataki typu File Inclusion, jak i Arbitrary Code Execution wymagają użycia plików PHP.
Ale co to jest plik PHP? Pomyśl o szafce kuchennej. Wewnątrz szafki znajduje się wiele przedmiotów, takich jak cukier, sól, przyprawy, naczynia itp. Każdy z tych przedmiotów ma służyć w kuchni.Plik PHP to szafka, a kody w plikach to elementy umożliwiające wykonanie określonych funkcji pożądanych przez hakera.To jest powód, dla którego hakerzy wolą przesyłać plik PHP niż inne pliki, takie jak np. plik JPEG lub PDF. Pliki JPEG i PDF nie są wykonywalne, tzn. hakerzy nie mogą użyć tych plików do wykonania jakiejkolwiek funkcji. Można je tylko czytać (tj. przeglądać). Nie można ich używać do wprowadzania jakichkolwiek zmian w zaatakowanej witrynie.
Haker, który przesłał plik PHP na serwer Twojej witryny, może go użyć do zrobienia czegokolwiek w Twojej witrynie. I właśnie dlatego pliki PHP są używane do przeprowadzania ataków File Inclusion i Arbitrary Code Execution.
Co to jest atak włączenia pliku?
Najlepszym sposobem zrozumienia takiego złożonego ataku na stronę internetową jest zilustrowanie rzeczywistego scenariusza. Załóżmy, że prowadzisz witrynę internetową swojej instytucji, która nazywa się college.com. Zezwalasz kilku studentom na dostęp do witryny, aby mogli publikować zdjęcia zrobione podczas niedawnego wydarzenia w college'u. Ktoś niewłaściwie wykorzystuje udzielony dostęp i przesyła złośliwy plik PHP (nazwany hack.php) na stronę internetową. Celem jest przejęcie kontroli nad stronami internetowymi uczelni. Gdy uczeń przesyła złośliwy plik PHP, domyślnie jest on przechowywany w folderze Upload.Każdy, kto zna podstawową strukturę WordPressa,wie, gdzie trafia przesłany plik.
Plik działa jak drzwi umożliwiające hakerowi zdalną interakcję z plikiem. Zauważ, że haker nadal nie ma kontroli nad witryną, ma tylko okno do komunikacji. Aby ułatwić zrozumienie, wyobraź sobie osobę A, która chce wyjechać do kraju, w którym nie wolno jej tego robić. Wysyła więc agenta, osobę B. Osoba A jest hakerem, kraj oznacza stronę internetową uczelni, a osoba B to plik hack.php.
Pliki PHP przesłane na stronę uczelni —-> Plik jest przechowywany na serwerze witryny
Osoba B jest przeszkolona tylko w kilku rzeczach i może zrobić tylko tyle. Zatem osoba A musi poinstruować go, co ma dalej robić. W tym samym duchu plik PHP tworzy okno komunikacyjne, a następnie oczekuje na dalsze polecenia od hakera.
Załóżmy, że plik hack.php jest tworzony w sposób umożliwiający wgrywanie większej ilości plików na stronę. Haker tworzy plik (o nazwie control.php), który przesyła za pomocą pliku hack.php, który jest już obecny na serwerze witryny. Nowy plik – control.php umożliwi hakerowi pełny dostęp do serwisu. Używa okna dostarczonego przez plik hack.php do załadowania pliku control.php na stronę.Ten proces przesyłania pliku control.php przy użyciu pliku (hack.php), który jest już obecny na serwerze witryny, nazywa się dołączaniem plików lokalnych .
Doskonałym przykładem lokalnego wykonywania plików jest luka zaobserwowana we wtyczce Easy Forms for MailChimp WordPress (wersja 6.0.5.5) . Korzystając z wtyczki MailChimp, właściciele witryn mogą dodawać różne typy formularzy do swojej witryny WordPress. Luka w zabezpieczeniach umożliwiła hakerom przesłanie pliku PHP na serwer witryny za pomocą formularza MailChimp.Po zapisaniu pliku na serwerze witryny hakerzy mogli się z nimi komunikować i wykonywać kody, które umożliwią im kontrolę nad serwerem lub uszkodzenie witryny na wiele sposobów.
Oto scenariusz: witryna uczelni ma zainstalowaną zaporę sieciową i dlatego haker nie może przesłać pliku control.php. Chociaż nie może przesłać kolejnego oddzielnego pliku, może „załączyć” plik. Oznacza to, że może wstawić plik do pliku hack.php, który jest już obecny na serwerze strony uczelni. Gdyby hakerowi udało się przesłać plik control.php, serwer witryny odczytałby ten plik i wykonał zawarty w nim kod, który umożliwi hakerowi zrobienie wszystkiego, co zechce. Ale ponieważ nie może przesłać pliku, będzie musiał znaleźć inne sposoby, aby serwer odczytał plik control.php. Ścieżka stworzona przez hakera jest dostępna online i serwer strony internetowej uczelni powinien być w stanie ją odczytać. Dlatego haker tworzy ścieżkę i udostępnia ją online, aby serwer strony uczelni mógł ją odczytać. Następnie serwer zaczyna wykonywać kod uzyskany ze ścieżki, a ponieważ kod jest napisany w sposób umożliwiający hakerowi pełną kontrolę nad witryną, haker kontroluje teraz witrynę uczelni. Ten proces zmuszania serwera do odczytywania zdalnego pliku jest nazywany zdalnym włączaniem plików.
Przypadek luki TimThumb jest popularnym przykładem zdalnego dołączania plików. TimThumb była wtyczką WordPress, która umożliwiała łatwą edycję obrazów w witrynie WordPress. Umożliwiło to każdemu korzystanie z obrazów uzyskanych z witryn udostępniających obrazy, takich jak imgur.com i flickr.com. TimThumb rozpoznaje imgur jako prawidłową stronę (lub na białej liście). Hakerzy korzystający z tego kryterium tworzą pliki z adresami URL odnoszącymi się do prawidłowej witryny, takiej jak http://www.imgur.com.badsite.com.Kiedy przesyłają złośliwy plik z adresem URL, takim jak ten, o którym wspomnieliśmy powyżej, wtyczka jest oszukiwana, że plik pochodzi z prawidłowej strony internetowej.I umożliwia przesłanie złośliwego pliku na serwer witryny. Cały ten proces dołączania złośliwego pliku spoza serwera witryny poprzez wykorzystanie luki we wtyczce to zdalne włączanie plików. Po zapisaniu złośliwego pliku PHP na serwerze witryny, hakerzy mogą się z nim komunikować, aby wykonać pożądane działania.
Co to jest atak polegający na wykonaniu arbitralnego kodu?
Teraz, gdy wiemy, czym jest zdalne i lokalne włączanie plików, przejdźmy dalej i spróbujmy zrozumieć, czym jest wykonanie dowolnego kodu. Włączenie pliku i włączenie dowolnego kodu są ze sobą powiązane. W każdym przypadku włączenia pliku celem hakerów jest wykonanie dowolnego kodu na stronie internetowej. Wróćmy do przykładu Local File Inclusion, w którym haker zamieścił plik hack.php na stronie uczelni, a następnie za pomocą pliku hack.php przesłał plik control.php.Wyrażenie Wykonanie dowolnego kodu opisuje zdolność hakera do wykonania dowolnego polecenia na zhakowanej witrynie.Gdy pliki PHP (hack.php i control.php) znajdą się na serwerze witryny, haker może wykonać dowolny kod. Ten proces wykonywania dowolnego kodu z przesłanych przez niego plików nazywa się wykonywaniem arbitralnego kodu.
Hacki są złożone. W tym poście staraliśmy się wyjaśnić to w prosty sposób, ale jeśli jest jakaś część, która nie ma dla Ciebie sensu, zachęcamy naszych czytelników do napisania do nas . W następnym poście omawiamy inny powszechny atak hakerski na witrynę WordPress o nazwie Cross-Site Scripting (XSS). Spójrz.