Náš príbeh
Jeden z našich významných klientov nás požiadal o penetračné testy webovej aplikácie, ktorá bola nasadená už v produkčnom prostredí, a teda dostupná z internetu. Aplikáciu navyše nevyvíjal klient, ale externý dodávateľ. Bol tu kladený veľký dôraz na vykonanie testov v čo najkratšom možnom čase a zároveň, aby nebola ohrozená dostupnosť či integrita dát – vzhľadom na externého dodávateľa bolo zvýšené riziko v prípadnom zdržaní pri obnove aplikácie/dát.
Pri penetračných testoch sme objavili celý rad veľmi závažných zraniteľností. Autentizovaný bežný používateľ mohol obísť autorizačné schémy a v rámci aplikácie eskalovať svoje privilégiá na úroveň administrátora, inými slovami, obyčajný používateľ bol schopný kompletne prevziať kontrolu nad celou aplikáciou a ľubovoľne ju spravovať, vykonávať modifikácie či útočiť na ďalších používateľov aplikácie. Opísaná zraniteľnosť nebola tá najzávažnejšia, ktorá sa v aplikácii vyskytovala. Funkcionalita pre nahrávanie obrázkov umožňovala, celkom jednoduchým spôsobom, obísť nastavené reštrikcie, a nahrať prakticky ľubovoľný súbor, napr. php súbor (skriptovací jazyk, v ktorom je aplikácia implementovaná) a pomocou neho spúšťať systémové príkazy na danom aplikačnom serveri. Tento nahratý súbor bol navyše voľne dostupný aj pre neautentizovaného používateľa (teda celkom verejne). Opísaným spôsobom sme boli schopní plne kompromitovať aplikačný server.
Ďalšia veľmi kritická zraniteľnosť bola nájdená v neautentizovanej časti aplikácie, opäť voľne dostupná z internetu. Pole pre vyhľadávanie adekvátne neošetrovalo používateľské vstupy, vďaka čomu bolo možné prevolávať priamo otázky v databáze, teda jednak získať neautorizovaný prístup ku všetkým dátam, ale tiež celkom kompromitovať databázový server.
Opísané zraniteľnosti vo vysokej miere ohrozovali dobrú povesť spoločnosti vrátane možných finančných dopadov pri ďalšom zneužití klientskych dát. Navyše, vzhľadom na fakt, že je aplikácia verejne dostupná, mohol zmienené útoky vykonať (väčšinu z nich) prakticky akýkoľvek návštevník webovej aplikácie.