Přinášíme další článek, ve kterém představujeme zjištění z našich penetračních testů. V minulém článku jsme popsali časté nedostatky e-shopů v autorizaci a autentizaci. Tentokrát představíme problémy, které souvisí s nesprávnou konfigurací infrastruktury.
Aby mohl e-shop správně fungovat a zákazník mohl nakoupit, musí být obchod dostupný na internetu. To znamená, že potřebuje mít přidělené své místo na serveru.
Nesprávná implementace v infrastruktuře ohrožuje celý e-shop
E-shop je zpravidla spojený s nějakou databází, kde se ukládají údaje zákazníků, informace o produktech, objednávky a podobně. Ta běží na databázovém serveru. Podobných komponent může být v infrastruktuře i vícero v závislosti na komplexnosti integrace s dalšími aplikacemi. Uvedené jsou ale součástí prakticky každého e-shopu.
Každá taková komponenta představuje při nesprávné implementaci riziko i pro samotnou aplikaci, platí to také pro jejich vzájemné propojení. V případě e-shopů se často setkáváme s řešením, kdy aplikace běží na pronajaté, sdílené infrastruktuře, spolu s jinými aplikacemi dalších vlastníků. V takovém případě často chybí potřebné zabezpečení. Aplikace mohou postrádat bezpečnostní záplaty a obsahovat závažné chyby.
Útočník se tak může k předmětné aplikaci dostat prostřednictvím jiné na stejném serveru. Není vyloučené, že se útočník bude snažit k aplikaci přistoupit "legitimní" cestou (tedy požádá o přístup ve vzdálené infrastruktuře). Spektrum útoků, které lze takto provést, je obrovské.
Útočník může zneužít zranitelnost komponenty
Prvním typem útoku, který často nemusí vyžadovat znalost pokročilých technik hackingu, je zneužití známé zranitelnosti. Cílem může být cokoli: webový server, framework, použitá knihovna a tak podobně. Všechny tyto komponenty vyvíjejí lidé, kteří čas od času samozřejmě také chybují.
Proto se řada lidí zaměřuje na odhalení těchto chyb a jejich zveřejnění. Vývojáři komponent tak mohou chyby opravit a vydat příslušné záplaty. Tyto záplaty však mohou také obsahovat chyby a celý proces tak začíná nanovo.
Útočníkovi stačí zjistit, jakou verzi komponenty e-shop používá a najít známé zranitelnosti (jejich popis často obsahuje informace, jak je zneužít). Veřejných databází známých zranitelností je mnoho, neznámější je www.cvedetails.com.
Pro ilustraci: webový server Apache ve verzi 2.4 obsahuje následující známé zranitelnosti.
Spektrum zranitelností je velké, od získání uložených informací (například osobní údaje klientů nebo obchodních informací provozovatele), před útoky na klienta, server, útoky typu denial-of-service až po možnost spuštění vlastního kódu na serveru.
Pozor na připojené služby a administrátorské rozhraní
Není ovšem vyloučené, že server poskytuje (někdy záměrně, někdy ne) také jiné služby, které mohou být vstupním bodem pro kompromitaci. V případě, že to tak je, znovu nastupuje možnost uskutečnění útoku na známou zranitelnost nebo na jejich nesprávnou konfigurací. Tyto služby vůbec nemusí přímo souviset s e-shopy, jako příklad můžeme uvést službu SMB (slouží ke sdílení souborů v síti).
Má-li špatnou konfiguraci, může útočníkovi poskytnout informace o cíli (detailní verzi komponent, seznam uživatelů, dokonce i obsah úložišť). V konkrétní verzi však obsahuje závažnou chybu EternalBlue, díky níž bylo možné kompromitovat server na úrovni nejvyššího oprávnění.
Obdobným způsobem jsme se setkali například s jinou děravou aplikací, která používala nestandardní port a na kterou často vývojáři zapomínají, případně sloužící k testovacím účelům. Problémové mohou být různé zálohy databází a podobně.
Častou chybou, které se v souvislosti s e-shopy vyskytuje, je veřejná dostupnost rozhraní pro administrátory. Prostřednictvím tohoto rozhraní je možné přistupovat ke konfiguraci na aplikační vrstvě, k databázím a podobně. Tato rozhraní jsou povětšinou dostupná přes jednoduše uhodnutelnou URL, například /admin, /administrator, /wpadmin a podobně.
Často bývají tyto URL uvedené v souboru robots.txt, který se využívá na upozornění vyhledávačů (jako je Google či Seznam), že si této adresy nemají všímat. V případě, že je toto rozhraní dostupné veřejně, je možné na něj útočit a zneužít chyby autentizace a v případě úspěchu může dojít k úplné kompromitaci aplikace.
Chyby v komunikaci e-shopu se zákazníkem
Na závěr ještě uveďme chybu, která souvisí s konfigurací webového serveru. Zákazník komunikuje s aplikací prostřednictvím prohlížeče, kde jsou na pozadí odesílané požadavky na server (requesty). Běžné webové aplikace si standardně vystačí se dvěma typy: GET (získání informací) a POST (odeslání dat od uživatele na server). Existují však i jiné, které v případě nesprávné konfigurace v kontextu webové aplikace mohou způsobit závažné problémy.
Metoda PUT slouží rovněž k nahrávání souborů na server. V případě, že je dostupná a aplikace nemá správně nastavená práva, může útočník jejím prostřednictvím nahrát na server soubor obsahující škodlivý kód. Druhou potenciálně nebezpečnou metodou je DELETE. Jak název napovídá, slouží k mazání souborů. Opět v případě nesprávné konfigurace umožní útočníkovi smazat na serveru soubory, v krajním případě i celou aplikaci. Možnost smazání souboru .htaccess, který přiřazuje přístupy k aplikaci, může představovat cestu, jak aplikaci zcela kompromitovat.
Jedním z úkolů testerů je včas objevit zmíněné, ale i nové nedostatky, které potenciální útočníci mohou zneužít, a zabránit tak případným větším škodám. Naštěstí jsou chyby v konfiguraci jen malou skupinou, kterou zneužít lze.