Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Napadi z vbrizgavanjem so eden najpogostejših načinov, kako hekerji napadejo sisteme, saj jim omogočajo preprosto izvajanje številnih ukazov in kod. Vbrizgavanje ukazov OS je en tak napad z vbrizgavanjem, ki se ga morate zavedati. To izkorišča ranljivost, ki bi jo morali skrbniki sistema, baze podatkov in spletnih aplikacij jemati zelo resno.

Kaj je torej napad z vbrizgavanjem ukazov OS?

Opredelitev vbrizgavanja ukazov OS

Vstavljanje ukazov OS omogoča zlonamernemu napadalcu, da zažene poljuben ukaz, tako da izkoristi ranljiv operacijski sistem, program, aplikacijo, bazo podatkov ali vtičnik. To se zgodi, ko aplikacije ne uspejo pravilno preveriti in očistiti parametrov, ki jih uporabljajo pri klicanju lupinskih funkcij, kot je sistem() oz exec() za izvajanje sistemskih ukazov.

Za boljše razumevanje odkrivanja in izkoriščanja vbrizgavanja ukazov OS je koristno to težavo preučiti v treh glavnih kategorijah.

instagram viewer

1. Neposredno vbrizgavanje ukazov

Razmislite o tem z vidika napadalca. Kibernetski napadalec odkrije, da aplikacija izvaja določen sistemski ukaz; vnesejo zlonamerni ukaz kot del pričakovanih argumentov. Aplikacija nato izvede prvotni ukaz, ki mu sledi zlonamerni.

Napadalec uporablja različne pristope za iskanje takšne ranljivosti. Najlažji način za boj proti temu je, da je operacijski sistem ves čas posodobljen; to lahko storite v sodelovanju s kompetentno IT ekipo. Izogibajte se vsem aplikacijam in programom, ki lahko povzročijo ranljivost sistema, ker lahko napadalec neposredno vstavi kodo, škoda pa je nepredvidljiva.

2. Indirektno vstavljanje ukazov

V primeru posrednega vnosa ukaza napadalec neposredno ne vnese kode ali ukaza v sistem. Za to uporabijo ranljivo aplikacijo ali program v sistemu. Ranljivost ustvari most med napadalcem in operacijskim sistemom. Z izkoriščanjem te komunikacije želi napadalec zagnati zlonamerne kode in ukaze na tarči.

Napadalec izvede vrsto testov za identifikacijo te ranljivosti in odkrije, da programska oprema uporablja podatke iz zunanjega vira, kot je datoteka ali spremenljivka okolja, za klic sistemskega ukaza. Napadalec nato spremeni vsebino zunanjega vira, tako da zdaj vsebuje zlonamerni ukaz. To se nato izvede skupaj z navodili izvirne aplikacije.

Glavna razlika med neposrednim in posrednim vbrizgavanjem ukazov je v tem, da napadalec uporablja aplikacijo za komunikacijo z operacijskim sistemom. Vendar ni prave razlike med škodo, ki jo lahko povzročita obe obliki injiciranja, zato je treba obravnavati obe. Zato se morate prepričati, da so programi v vašem omrežju zanesljivi in ​​potrebni. V svoji napravi ne hranite aplikacij, ki jim ne zaupate.

3. Slepo vbrizgavanje ukazov

Druga vrsta vbrizgavanja ukazov OS je slepo vbrizgavanje ukazov. To pomeni, da aplikacija ne vrne nobenega izhoda ukaza v odzivu HTTP. Napadalec uporablja različne tehnike, kot sta časovna zakasnitev in izhodno usmerjanje, da izkoristi to ranljivost.

Predstavljajte si, da iščete spletno mesto in se vrednost »/?search=id« v URL-ju spreminja z vsakim iskanjem. Vrednost ID-ja tukaj je lahko uporabniška stran, naslov fotografije izdelka ali katera koli stran na spletnem mestu. Napadalec lahko s spreminjanjem vrednosti id-ja dobi različne rezultate. Težko je to narediti ročno, vendar obstajajo orodja, kot je Burp Suite za to. Kasneje napadalec odkrije nenavadnost na strani: vrnjena je lahko vrednost ID-ja, ki je, čeprav ni pokazala nobenih rezultatov, odziv spletne strani je bil 200, kar nakazuje, da je vse v redu. V takem primeru lahko napadalec uporabi slepo vbrizgavanje ukaza.

Posebej uporabna je tehnika, kot je časovni zamik. Ker bo stran, ki se odpre, prazna, ne boste prejeli nobenega odgovora, vendar boste morda še vedno lahko zbirali informacije o tem, kaj je shranjeno v zbirki podatkov, na podlagi časovnih zamikov, ki naložijo stran le, če je določen znak prisoten. To je preveč zamudno, da bi bil ročni postopek, vendar lahko veliko orodij avtomatizira napad.

Primer scenarija napada

Poglejmo vse zgoraj na primeru. Predstavljajte si, da imate nakupovalno aplikacijo, ki uporabniku omogoča, da vidi, ali so izdelki na zalogi. Za dostop do vseh teh informacij uporabimo URL, kot je spodnji:

example_unsafe_store.com/stockStatus? productID=245&storeID=

Predstavljajte si, da posredujete ID-je izdelka in trgovine kot argumenta lupinskemu ukazu, kot je "stockstat.pl 245 38", saj bi morala aplikacija poizvedovati za stare zapise. Če razvijalec ne ukrepa proti vbrizgavanju ukazov, lahko napadalec pošlje vnos za izvedbo želenega ukaza:

& odmev this_a_harmful_command &

Če je ta vnos v parametru productID, bo ukaz, ki ga bo izvedla aplikacija:

stockstat.pl & odmev this_a_harmful_command & 38

Ukaz echo je uporabna metoda za odkrivanje vbrizgavanja ukazov in zagotavljanje, da se dani niz pojavi v izhodu. Znak "&" je a ločilo ukazov lupine, torej se izvedejo trije ločeni ukazi, eden za drugim. Posledično bo izhod, vrnjen uporabniku:

Napaka -ID izdelka ni bilo mogoče najti
ta_škodljiv_ukaz
38: ukaz ni najdeno

Tukaj je datoteka "stockstat.pl" izvedla ukaz brez argumentov, ki jih je pričakovala, in je zato vrnila sporočilo o napaki. Nato se je zagnal ukaz echo, ki ga je vnesel napadalec, in napadalec je na zaslonu videl izraz, ki ga je vnesel. Prvotni argument, "38", se je izvajal kot ukaz, ki povzroča napako.

Kako se zaščititi pred vstavitvijo ukazov OS

Čeprav je vstavljanje ukaza močan in škodljiv vektor napada, obstaja nekaj trikov, da se mu izognete. Utemeljitev za napadi z vbrizgavanjem ukazov OS je izvajanje določenih ukazov operacijskega sistema z aplikacijo. Moraš preprečiti, da bi se to zgodilo. Upoštevati je treba nekaj vprašanj:

  1. Preprečiti morate, da bi kdor koli z dostopom do aplikacije izvajal kodo.
  2. Preprečite, da bi kdorkoli z dostopom do aplikacije strežniku pošiljal zahteve s sintaktičnimi izrazi.
  3. Šifrirati morate fraze, ki jih zahteva vsak z dostopom.

Pojdimo skozi vsak element enega za drugim. Dobra rešitev za prvo težavo je uporabite metodo seznama dovoljenih da preprečite, da bi kdor koli dosegel aplikacijsko plast izvajal določene kode ali zahteve. Kdor koli, ki ga ne identificirate, ne bo mogel izvajati kode.

Rešitev drugega je, da ne sprejmete nekaterih besedilnih izrazov, uporabljenih v ukazih. Uporabnik lahko vnese samo številske vrednosti. Uporabite to skupaj z metodo seznama dovoljenih in imeli boste veliko varnejši sistem.

Tretja točka se nanaša na šifriranje sintaktičnih parametrov, kot so vneseni znak in presledki. Posledično vas mora metoda seznama dovoljenih, sintaktično preverjanje vnosov in šifriranje vnosov zaščititi pred vstavljanjem ukazov OS.

Napadi z injiciranjem se razvijajo vsak dan

Obstaja veliko metod vbrizgavanja z različnimi tehnikami napada, kot so ukaz OS, SQL, SSI in XPath. Vsakega od njih ni lahko preprečiti. Ne pozabite, da se vsi ti napadi razvijajo vsak dan in izkoriščajo majhne ranljivosti, ki so jih razvijalci spregledali. Zato je ključnega pomena, da ste vedno na tekočem in pozorno spremljate trenutni razvoj v svetu kibernetske varnosti.