Az injekciós támadások a hackerek egyik legáltalánosabb módja a rendszerek megtámadásának, mivel ez lehetővé teszi számukra számos parancs és kód egyszerű futtatását. Az operációs rendszer parancsinjekciója az egyik ilyen injekciós támadás, amellyel tisztában kell lennie. Ez kihasznál egy biztonsági rést, amelyet a rendszer-, adatbázis- és webalkalmazás-adminisztrátoroknak nagyon komolyan kell venniük.
Tehát mi az az OS parancsinjektáló támadás?
Az OS Command Injection definíciója
Az operációs rendszer parancsinjekciója lehetővé teszi a rosszindulatú támadók számára, hogy bármilyen parancsot lefuttassanak egy sebezhető operációs rendszer, program, alkalmazás, adatbázis vagy beépülő modul kihasználásával. Ez akkor fordul elő, ha az alkalmazások nem tudják megfelelően érvényesíteni és megtisztítani azokat a paramétereket, amelyeket a shell függvények hívásakor használnak, mint pl.
rendszer() vagy végrehajt() rendszerparancsok végrehajtásához.Az OS parancsinjektálás észlelésének és kihasználásának jobb megértése érdekében érdemes ezt a kérdést három fő kategóriában megvizsgálni.
1. Közvetlen parancsos befecskendezés
Tekintsük ezt a támadó szemszögéből. A kibertámadás felfedezi, hogy egy alkalmazás egy adott rendszerparancsot futtat; beírják a rosszindulatú parancsot a várt argumentumok részeként. Az alkalmazás ezután végrehajtja az eredeti parancsot, majd a rosszindulatú parancsot.
A támadó különféle módszereket alkalmaz egy ilyen sérülékenység megtalálására. Ez ellen a legegyszerűbb módszer, ha az operációs rendszert mindig naprakészen tartjuk; ezt egy hozzáértő informatikai csapattal együttműködve teheti meg. Kerülje el az összes olyan alkalmazást és programot, amely a rendszer sebezhetőségét okozhatja, mivel a támadó közvetlenül szúrhat be kódot, és a kár kiszámíthatatlan.
2. Közvetett parancsinjekció
Közvetett parancsinjektálás esetén a támadó nem ír be közvetlenül kódot vagy parancsot a rendszerbe. Ehhez egy sebezhető alkalmazást vagy programot használnak a rendszerben. A biztonsági rés hidat hoz létre a támadó és az operációs rendszer között. Ezt a kommunikációt kihasználva a támadó rosszindulatú kódokat és parancsokat kíván futtatni a célponton.
A támadó egy sor tesztet hajt végre a biztonsági rés azonosítására, és felfedezi, hogy a szoftver külső forrásból, például fájlból vagy környezeti változóból származó adatokat használ a rendszerparancsok meghívásához. A támadó ezután módosítja a külső forrás tartalmát, így az most rosszindulatú parancsot tartalmaz. Ezt azután az eredeti alkalmazás utasításaival együtt hajtja végre.
A fő különbség a közvetlen és a közvetett parancsbevitel között az, hogy a támadó egy alkalmazást használ az operációs rendszerrel való kommunikációhoz. De nincs valódi különbség a két injekciós forma által okozott károk között, ezért mindkettőt kezelni kell. Ezért gondoskodnia kell arról, hogy a hálózatban lévő programok megbízhatóak és szükségesek legyenek. Ne tartson eszközén olyan alkalmazásokat, amelyekben nem bízik.
3. Blind Command Injekció
Az operációs rendszer parancsbefecskendezésének egy másik típusa a vak parancsinjektálás. Ez azt jelenti, hogy az alkalmazás nem ad vissza semmilyen kimenetet a parancsból a HTTP-válaszban. A támadó különböző technikákat, például késleltetést és kimeneti útválasztást alkalmaz a biztonsági rés kihasználására.
Képzelje el, hogy egy webhelyet keres, és az URL-ben szereplő „/?search=id” érték minden kereséssel változik. Az id érték itt lehet egy felhasználói oldal, egy termékfotó címe vagy a webhely bármely oldala. A támadó különböző eredményeket érhet el az id érték megváltoztatásával. Nehéz kézzel csinálni, de vannak olyan eszközöket, mint a Burp Suite ezért. Később a támadó furcsaságot fedez fel az oldalon: előfordulhat, hogy egy id értéket ad vissza, amely bár nem mutatott eredményt, a A weboldal válasza 200 volt, ami azt jelzi, hogy minden rendben van. Ilyen esetben a támadó vak parancsinjekciót alkalmazhat.
Különösen hasznos az olyan technika, mint az időkésleltetés. Mivel a megnyíló oldal üres lesz, nem fog kapni választ, de előfordulhat, hogy továbbra is összegyűjtheti információk az adatbázisban tárolt időkésések alapján, amelyek csak akkor töltik be az oldalt, ha egy bizonyos karakter az ajándék. Ez túl időigényes ahhoz, hogy manuális legyen, de rengeteg eszköz képes automatizálni a támadást.
Egy példa támadási forgatókönyv
Tekintsük át a fentieket egy példán keresztül. Képzelje el, hogy van egy bevásárlóalkalmazása, amely lehetővé teszi a felhasználó számára, hogy megnézze, vannak-e készleten a termékek. Használjunk az alábbihoz hasonló URL-t az összes információ eléréséhez:
example_unsafe_store.com/stockStatus? productID=245&storeID=
Képzelje el, hogy a termék- és üzletazonosítókat argumentumként adja át egy shell-parancsnak, például "stockstat.pl 245 38", mivel az alkalmazásnak le kell kérdeznie a régi rekordokat. Ha a fejlesztő nem tesz lépéseket a parancsinjektálás ellen, a támadó bemenetet küldhet a kívánt parancs végrehajtásához:
& visszhang ez_a_káros_parancs és
Ha ez a bejegyzés a productID paraméterbe kerül, az alkalmazás által végrehajtott parancs a következő lesz:
stockstat.pl & visszhang ez_a_káros_parancs és 38
Az echo parancs hasznos módszer a parancsinjektálás észlelésére, valamint annak biztosítására, hogy az adott karakterlánc megjelenjen a kimenetben. Az "&" karakter a shell parancs elválasztó, tehát három külön parancs kerül végrehajtásra, egymás után. Ennek eredményeként a felhasználónak visszaküldött kimenet a következő lesz:
Hiba -termékazonosító nem található
ez_a_káros_parancs
38: parancs nem található
Itt a "stockstat.pl" fájl a várt argumentumok nélkül hajtotta végre a parancsot, és ezért hibaüzenetet adott vissza. Ezután a támadó által beadott visszhang parancs futott, és a támadó látta a képernyőn az általa beírt kifejezést. Az eredeti „38” argumentum hibát okozó parancsként futott.
Hogyan védekezzünk az operációs rendszer parancsinjekciói ellen
Bár a parancsinjekció erőteljes és káros támadási vektor, van néhány trükk, amellyel elkerülhető. Az operációs rendszer parancsinjektáló támadásai mögött bizonyos operációs rendszer-parancsok alkalmazással történő végrehajtása áll. Meg kell akadályoznia, hogy ez megtörténjen. Néhány kérdést meg kell fontolni:
- Meg kell akadályoznia, hogy bárki, aki hozzáférjen az alkalmazáshoz, futtasson kódot.
- Meg kell akadályoznia, hogy bárki, aki hozzáfér az alkalmazáshoz, szintaktikai kifejezésekkel kérjen a kiszolgálóhoz.
- Titkosítania kell azokat a kifejezéseket, amelyeket a hozzáféréssel rendelkező személyek kérnek.
Nézzük végig az egyes tételeket egyenként. Az első probléma jó megoldása az használja a fehérlista módszert hogy megakadályozza, hogy bárki, aki eléri az alkalmazási réteget, bizonyos kódokat vagy kéréseket futtasson. Aki nem azonosítja, az nem tud kódot futtatni.
A második megoldása az, hogy nem fogadunk el néhány parancsban használt szöveges kifejezést. A felhasználó csak számértékeket írhat be. Alkalmazza ezt a fehérlistás módszerrel együtt, és sokkal biztonságosabb rendszere lesz.
A harmadik pont a szintaktikai paraméterek, például a beírt karakter és a szóközök titkosításáról szól. Ennek eredményeként az engedélyezőlistázási módszer, a bemenetek szintaktikai ellenőrzése és a bemenetek titkosítása megóvja Önt az operációs rendszer parancsinjektálásától.
Az injekciós támadások mindennaposak
Számos befecskendezési módszer létezik különböző támadási technikákkal, például OS parancs, SQL, SSI és XPath. Nem könnyű megpróbálni mindegyiket megakadályozni. Ne feledje, hogy ezek a támadások minden nap fejlődnek, és kihasználják a fejlesztők figyelmen kívül hagyott apró sebezhetőségeit. Éppen ezért létfontosságú, hogy mindig naprakész legyen, és szorosan kövesse a kiberbiztonság világának aktuális fejleményeit.