Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Injektiohyökkäykset ovat yksi yleisimmistä tavoista, joilla hakkerit hyökkäävät järjestelmiin, koska sen avulla he voivat helposti suorittaa monia komentoja ja koodeja. OS-komentoinjektio on yksi tällainen injektiohyökkäys, joka sinun on oltava tietoinen. Tämä hyödyntää haavoittuvuutta, joka järjestelmän, tietokannan ja verkkosovellusten järjestelmänvalvojien tulee ottaa erittäin vakavasti.

Joten mikä on käyttöjärjestelmän komento-injektiohyökkäys?

Määritelmä OS Command Injection

Käyttöjärjestelmän komentojen lisäys antaa haitallisen hyökkääjän suorittaa minkä tahansa komennon hyödyntämällä haavoittuvaa käyttöjärjestelmää, ohjelmaa, sovellusta, tietokantaa tai laajennusta. Näin tapahtuu, kun sovellukset eivät pysty oikein vahvistamaan ja puhdistamaan parametreja, joita he käyttävät kutsuessaan komentotulkkitoimintoja, kuten järjestelmä() tai exec() suorittaa järjestelmäkomentoja.

Jotta ymmärrät paremmin käyttöjärjestelmän komentojen lisäyksen havaitsemisen ja hyödyntämisen, on hyödyllistä tarkastella tätä asiaa kolmessa pääkategoriassa.

1. Suorakomento-injektio

Mieti tätä hyökkääjän näkökulmasta. Kyberhyökkääjä huomaa, että sovellus suorittaa tiettyä järjestelmäkomentoa; he syöttävät haitallisen komennon osana odotettuja argumentteja. Sovellus suorittaa sitten alkuperäisen komennon ja sen jälkeen haitallisen komennon.

Hyökkääjä käyttää useita tapoja löytääkseen tällaisen haavoittuvuuden. Helpoin tapa torjua tämä on pitää käyttöjärjestelmä aina ajan tasalla. voit tehdä tämän yhteistyössä pätevän IT-tiimin kanssa. Sinun tulee välttää kaikkia sovelluksia ja ohjelmia, jotka voivat aiheuttaa järjestelmän haavoittuvuuksia, koska hyökkääjä voi lisätä koodia suoraan ja vahinko on arvaamaton.

2. Epäsuora komento-injektio

Epäsuoran komennon lisäyksen tapauksessa hyökkääjä ei syötä koodia tai komentoa suoraan järjestelmään. Tätä varten he käyttävät haavoittuvaa sovellusta tai ohjelmaa järjestelmässä. Haavoittuvuus luo sillan hyökkääjän ja käyttöjärjestelmän välille. Hyödyntämällä tätä viestintää, hyökkääjä pyrkii suorittamaan haitallisia koodeja ja komentoja kohteessa.

Hyökkääjä suorittaa sarjan testejä tämän haavoittuvuuden tunnistamiseksi ja huomaa, että ohjelmisto käyttää tietoja ulkoisesta lähteestä, kuten tiedostosta tai ympäristömuuttujasta, kutsuakseen järjestelmäkomennon. Hyökkääjä muuttaa sitten ulkoisen lähteen sisältöä, joten se sisältää nyt haitallisen komennon. Tämä suoritetaan sitten alkuperäisen sovelluksen ohjeiden kanssa.

Suurin ero suoran ja epäsuoran komennon lisäämisen välillä on se, että hyökkääjä käyttää sovellusta kommunikoidakseen käyttöjärjestelmän kanssa. Mutta näiden kahden injektiomuodon aiheuttamien vaurioiden välillä ei ole todellista eroa, joten molempia on käsiteltävä. Siksi sinun tulee varmistaa, että verkossasi olevat ohjelmat ovat luotettavia ja tarpeellisia. Älä säilytä laitteessasi sovelluksia, joihin et luota.

3. Blind Command -injektio

Toinen käyttöjärjestelmän komentojen lisäystyyppi on sokea komento. Tämä tarkoittaa, että sovellus ei palauta HTTP-vastauksessa komennon tulosta. Hyökkääjä käyttää erilaisia ​​tekniikoita, kuten aikaviivettä ja tulosteiden reititystä hyödyntääkseen tätä haavoittuvuutta.

Kuvittele, että etsit verkkosivustoa ja URL-osoitteen "/?search=id"-arvo muuttuu jokaisen haun yhteydessä. Tunnusarvo tässä voi olla käyttäjäsivu, tuotekuvan osoite tai mikä tahansa sivuston sivu. Hyökkääjä voi saada erilaisia ​​tuloksia muuttamalla id-arvoa. Se on vaikea tehdä manuaalisesti, mutta niitä on työkaluja, kuten Burp Suite tätä varten. Myöhemmin hyökkääjä havaitsee sivulla oudon: saatetaan palauttaa id-arvon, joka, vaikka se ei näyttänytkään tuloksia, sivuston vastaus oli 200, mikä osoittaa, että kaikki on hyvin. Tällaisessa tapauksessa hyökkääjä voisi käyttää sokea komento-injektiota.

Aikaviiveen kaltainen tekniikka on erityisen hyödyllinen. Koska avautuva sivu on tyhjä, et saa vastausta, mutta saatat silti pystyä keräämään tiedot siitä, mitä tietokantaan on tallennettu, perustuvat aikaviiveisiin, jotka lataavat sivun vain, jos tietty merkki on esittää. Tämä on liian aikaa vievää manuaaliseksi prosessiksi, mutta monet työkalut voivat automatisoida hyökkäyksen.

Esimerkki hyökkäysskenaario

Tarkastellaan kaikkea yllä olevaa esimerkin kautta. Kuvittele, että sinulla on ostossovellus, jonka avulla käyttäjä voi nähdä, onko tuotteita varastossa. Käytämme alla olevan kaltaista URL-osoitetta päästäksesi kaikkiin näihin tietoihin:

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

Kuvittele, että tuote- ja kauppatunnukset välitetään argumentteina komentotulkkikomennolle, kuten "stockstat.pl 245 38", koska sovelluksen on kysyttävä vanhoja tietueita. Jos kehittäjä ei ryhdy toimiin komentojen lisäyksiä vastaan, hyökkääjä voi lähettää syötteen suorittaakseen halutun komennon:

& kaiku tämä_haitallinen_komento &

Jos tämä merkintä menee productID-parametriin, sovelluksen suorittama komento on:

stockstat.pl & kaiku tämä_haitallinen_komento & 38

Kaiku-komento on hyödyllinen menetelmä komentojen lisäysten havaitsemiseen sekä sen varmistamiseen, että annettu merkkijono näkyy tulosteessa. "&"-merkki on a shell-komentojen erotin, joten suoritetaan kolme erillistä komentoa peräkkäin. Tämän seurauksena käyttäjälle palautettu tulos on:

Virhe -tuotetunnusta ei löydy
tämä_haitallinen_komento
38: komento ei löydetty

Tässä "stockstat.pl"-tiedosto suoritti komennon ilman odottamiaan argumentteja ja palautti siksi virheilmoituksen. Sitten hyökkääjän antama kaikukomento juoksi ja hyökkääjä näki näytöllä kirjoittamansa ilmeen. Alkuperäinen argumentti "38" suoritettiin virheitä aiheuttavana komennona.

Kuinka suojautua OS-komento-injektioilta

Vaikka komento-injektio on voimakas ja haitallinen hyökkäysvektori, sen välttämiseksi on joitain temppuja. Käyttöjärjestelmän komentojen lisäyshyökkäysten taustalla on tiettyjen käyttöjärjestelmän komentojen suorittaminen sovelluksen avulla. Sinun täytyy estää tämän tapahtumasta. On joitakin huomioitavia asioita:

  1. Sinun on estettävä ketään, jolla on pääsy sovellukseen, pystymästä suorittamaan koodia.
  2. Sinun tulisi estää ketään, jolla on pääsy sovellukseen, tekemästä pyyntöjä palvelimelle syntaktisten lausekkeiden avulla.
  3. Sinun on salattava ilmaukset, joita kuka tahansa, jolla on käyttöoikeus, pyytää.

Käydään läpi jokainen kohde yksitellen. Hyvä ratkaisu ensimmäiseen ongelmaan on käytä sallittujen listan menetelmää estääksesi ketään sovelluskerroksen saavuttavaa suorittamasta tiettyjä koodeja tai pyyntöjä. Kukaan, jota et tunnista, ei voi suorittaa koodia.

Ratkaisu toiseen on olla hyväksymättä joitain komentoissa käytettyjä tekstilausekkeita. Käyttäjä voi syöttää vain numeerisia arvoja. Käytä tätä yhdessä whitelist-menetelmän kanssa, niin saat paljon turvallisemman järjestelmän.

Kolmas kohta koskee syntaktisten parametrien, kuten syötetyn merkin ja välilyöntien, salausta. Tämän seurauksena sallittujen luetteloiden lisäämismenetelmän, tulojen syntaktisen tarkistuksen ja syötteiden salauksen pitäisi suojata sinua käyttöjärjestelmän komentojen lisäämiseltä.

Injektiohyökkäykset kehittyvät joka päivä

On olemassa monia injektiomenetelmiä erilaisilla hyökkäystekniikoilla, kuten käyttöjärjestelmäkomento, SQL, SSI ja XPath. Ei ole helppoa yrittää estää jokaista niistä. Muista, että kaikki nämä hyökkäykset kehittyvät joka päivä ja hyödyntävät pieniä haavoittuvuuksia, jotka kehittäjät ovat jättäneet huomiotta. Siksi on tärkeää, että pysyt aina ajan tasalla ja seuraat tarkasti kyberturvallisuuden maailman tämänhetkistä kehitystä.