A fájlfeltöltő modulok az egyik leggyengébb láncszem a webes alkalmazásokban. Bármilyen elkövetett hiba, még az Ön által kicsinek tartott hiba is, azt eredményezheti, hogy a szervervezérlés közvetlenül a kibertámadó kezébe kerülhet. Emiatt a szoftverfejlesztőknek ismerniük kell a leggyakoribb hibákat és néhány támadási módot, amelyek előfordulhatnak.
Mi tehát az ügyféloldali manipuláció? Hogyan küzdhet le ez ellen, hogy webhelyei és felhasználói biztonságban legyenek?
Mi az az ügyféloldali manipuláció?
Az ügyféloldali manipuláció a webalkalmazás-támadások egészének alapfogalma. Egyszerűen fogalmazva, ez azt jelenti, hogy többé nem bízhat meg a felhasználónak küldött adatokban. Ezenkívül a kliensoldali manipuláció a biztonságos alkalmazásfejlesztés egyik alapja. Ha megvizsgálja azt a fájlfeltöltési modult, amellyel foglalkozik, és fontolóra veszi az ügyféloldali manipulációt, a nem megbízható adatok a következők:
- A feltöltött fájl neve.
- A feltöltött fájl tartalomtípusa.
Ez a két elem hol van lehetősége van engedélyezőlistára tenni szoftverfejlesztőként. A feltöltött fájl névadatai bármit tartalmazhatnak, ahol kliensoldali manipuláció található. A feltöltött fájl Content-Type adataival, még akkor is, ha a támadó .exe fájlt tölt fel, ez a fájl képként/jpegként jelenhet meg a rendszerben.
Fájlkiterjesztés és fehér lista
A fájlfeltöltési modulok fejlesztése során az első dolog, amit meg kell tenni a fájlkiterjesztés engedélyezési listája. Például egy felhasználó szeretne feltölteni egy "muo.jpeg" nevű fájlt. Győződjön meg arról, hogy a felhasználó által feltölteni kívánt fájl kiterjesztése .jpeg. Ehhez a rendszernek ellenőriznie kell a feltöltött fájlt, és meg kell vizsgálnia, hogy az egyik engedélyezett fájlkiterjesztés. Ennek megértéséhez nézze meg a következő egyszerű PHP-kódot:
$file_parts = elérési út ($fájlnév);
kapcsoló($file_parts['kiterjesztés'])
{
ügy "jpg":
szünet;ügy "denevér": // Vagy exe, dll, so, stb.
szünet;
ügy "":
ügyNULLA: // Nincs fájlkiterjesztés
szünet;
}
Ezt megteheti a fentihez hasonló kódblokk segítségével, vagy használhatja a használt keretrendszer által biztosított osztályokat és függvényeket.
Ügyeljen arra, hogy ne hozzon létre fájlkiterjesztési adatokat a fájlnév pont (.) karakter szerinti elemzésével, mert a támadó megkerülheti ezt az ellenőrzési lépést egy fájlnévvel, például "muo.jpeg.php".
Mi az a tartalomtípusú információ?
A tartalomtípus információ egy olyan információ, amelyet a HTTP-kérésben küldenek el minden egyes fájlfeltöltéskor. Az internetböngésző észleli ezt az információt, és hozzáadja az elküldött kéréshez. A támadó megpróbálhatja megváltoztatni az információkat ügyféloldali manipulálással és megkerülheti a szerveroldali ellenőrzéseket. Ebben a szakaszban a fejlesztőknek egy vezérlő mechanizmusra van szükségük a tartalomtípus információinak ellenőrzéséhez. Ez önmagában nem lesz elég; ennek ellenére fontos, hogy a fejlesztők odafigyeljenek rá.
Tegyük fel, hogy kódol egy mechanizmust a fájlkiterjesztés helyes ellenőrzésére, és csak .jpeg kiterjesztésű fájlokat fogad el. Ezen az elővigyázatossági mechanizmuson kívül ellenőrizheti a tartalomtípus információkat esetet, és csak kép/jpeg információkat tartalmazó fájlokat fogad el, ami egy extra védelmi szint ellen kibertámadások
SWF Flash-fájlok és támadási lépések
A fájlkiterjesztés és a Content-Type adatok semmit sem jelentenek a beépülő modulokat, például az Adobe Flash Playert támogató internetes böngészők számára. Bár a lejátszó támogatása már nem érhető el, továbbra is lehetséges a kapcsolódó fájlok telepítése sok rendszerre, bár a Flash továbbra is biztonsági kockázatot jelent. Egy olyan rendszerben, amely nem tette meg a megfelelő óvintézkedéseket, lehetséges egy Flash-fájl meghívása a
A cselekvéshez a fejlesztőknek ismerniük kell a kiberbűnözők útjait. Így történhet meg:
- A rosszindulatú támadó egy "image.jpeg" nevű SWF-et (Adobe Flash fájlformátum) tölt fel a cél webhelyre. A feltöltési folyamat során az engedélyezési lista ellenőrzése megerősíti, hogy a támadó által feltöltött fájl .jpeg kiterjesztésű. A tartalomtípus-ellenőrzést az ügyféloldali manipuláció megkerüli. Képzelje el, hogy ez a fájl, amelyet a fenyegetést okozó szereplő töltött fel, a „www (pont) célhely (pont) com/images/images.jpeg címre kerül”.
- Tegyük fel, hogy a támadónak van egy támadó (pont) com nevű webhelye. A támadó a webhelyen a céloldalra feltöltött image.jpeg fájlt a következővel hívja meg
- Egy ártatlan felhasználó bejelentkezik a támadó (dot) com webhelyre. Ez a webhely meghívja az SWF-fájlt a www (pont) target-site (pont) com/images/image.jpeg címen, és végrehajtja az SWF-nek adott parancsokat.
- Ezen keresztül a kibertámadó HTTP-kérési műveleteket hozhat létre a célhely (pont) com címéhez anélkül, hogy a normál felhasználók észrevennék. Ezekkel a kérésekkel a támadó az ártatlan felhasználó munkamenetét használja, és megkerüli a CSRF ellenőrzés.
A támadási forgatókönyv pontosabb megértéséhez tekintse meg a következő kódot a HTML-ben
stílus="magasság: 1px; szélesség: 1px;" adat="www.target-site.com/images/image.jpeg" típus="application/x-shockwave-flash" enablescriptaccess="mindig" flashvars="c=olvasni&u=valamit"
Az egyik legjobb megoldás a fájlfeltöltéssel feltöltött fájlok elérése a következőn keresztül egy másik aldomain. A fent említett forgatókönyv szerint a statikus fájlokat nem ugyanabból a tartományból, hanem egy másik aldomainből érheti el a következőképpen: "http (kettőspont)//file.target-site (pont) com/images/image.jpeg".
Egy másik megoldás a hozzáadás Tartalom-Diszpozíció: kötődés információkat kap a HTTP-válaszra, amikor a feltölteni kívánt fájlokhoz való hozzáférésre vonatkozó kérést kap.
Tegyen óvintézkedéseket a fájlfeltöltési biztonsági rések miatt
Bármilyen fájlfeltöltés, amelyet a felhasználók egy webhelyre végezhetnek, veszélyes, ezért a fejlesztőknek erre kell a leginkább figyelniük. Ha a támadók ilyen sebezhetőséget fedeznek fel, megnyithatnak egy shellt a webhelyen belül, és könnyen kihasználhatják a kiszolgálón található információkat. Létfontosságú a felhasználók által feltöltött összes fájl ellenőrzése, engedélyezőlistás módszerek alkalmazása, és lehetőség szerint elrejteni a feltöltött könyvtár helyét.
És természetesen számos további lépést is meg kell tennie webhelye védelme érdekében, még akkor is, ha minden javasolt óvintézkedést megtesz a fájlmodulok feltöltéséhez. A HTTP biztonsági fejlécek használata az egyik ilyen lépés.