Pár splněných testů. A celá databáze byla venku.
Případová studie jednoho pentestu, který udělal junior. A přesto se dostal až do databáze.
Existuje jeden moment, který si žádný majitel firmy nechce nikdy zažít. Je to chvíle, kdy se kompletní databáze jeho klientů objeví na černém trhu. Není to jen technický incident. Je to konec důvěry, kterou firma budovala roky. A v některých případech je to konec firmy samotné.
Tahle případová studie je o tom, jak blízko k tomuhle momentu byla jedna velmi úspěšná česká společnost. A o tom, že stačilo splnit jen pár testů z Penterep PWASV checklistu, aby se ukázalo, jak tenká je hranice mezi běžným provozem a katastrofou.
Pentest jsem dělal já. A na rovinu, jsem junior.
Junior, který prodává to, čemu chce sám rozumět
Začnu upřímně, protože jinak to nemá smysl. V Penterepu nejsem senior pentester. Jsem obchodník. Mojí prací je prodávat Penterep firmám, které svoji bezpečnost myslí vážně. A právě proto jsem chtěl jít hlouběji. Nedokážu dobře prodávat něco, čemu sám nerozumím do hloubky.
Za sebou mám dvě školení v GOPAS a rekvalifikační kurz akreditovaný MŠMT od Kyberakademie. To ze mě nedělá seniorního specialistu na ofenzivní bezpečnost. Co ze mě ale dělá nebezpečného člověka pro špatně zabezpečenou aplikaci, je metodika. Konkrétně Penterep PWASV checklist, který obsahuje stovky testů poskládaných tak, aby vás vedly krok za krokem.
Nemusíte mít deset let zkušeností na to, abyste odhalili zranitelnost, která firmu položí.
Potřebujete strukturu, nástroje a checklist, kterému můžete věřit. Útočník na druhé straně totiž taky nemusí být génius. Stačí mu trpělivost a pár otevřených dveří.
Kdo byl klient a proč šlo o všechno
Klienta nechám záměrně anonymního. Jde o velmi úspěšnou obchodní společnost, která úzce spolupracuje s jedním ze tří velkých českých mobilních operátorů.
To je důležitý detail. Tahle firma totiž u sebe nedrží jen vlastní data. Drží data, která jsou citlivá pro její obchodní strategii, a zároveň drží data citlivá pro samotného operátora a jeho klienty. Únik takové databáze by nezasáhl jednu firmu. Zasáhl by celý řetězec.
Druhá varianta je ještě nepříjemnější. Útočník data nezveřejní, ale řekne si o výkupné. A firma se ocitne v situaci, kdy platí, nebo přichází o všechno.
Tahle firma se naštěstí rozhodla svoji bezpečnost prověřit dřív, než to za ni udělá někdo jiný. A i když to vzali formou juniorního pentestera, ukázalo se, že na výsledek to nemělo žádný vliv.
Jak se z průzkumu stala kompletní databáze
Teď to nejdůležitější. Nebudu tu rozepisovat celý report ani všechny nalezené zranitelnosti. Checklist PWASV jich pokrývá stovky a tohle není místo na technickou dokumentaci. Chci ukázat jen tu hlavní linku. Tu, která vedla od prvního pohledu na aplikaci až ke kompletní databázi.
A je to děsivě krátká cesta.
1. Recon: objevení informačního systému tam, kde neměl být
Všechno začalo mapováním. V recon fázi jsem podle checklistu procházel subdomény klienta a narazil na jednu, na které běžel interní informační systém společnosti, jejich CRM. Něco, co rozhodně nemělo být takhle dostupné.
2. Recon: automatický webcrawling přímo z platformy
Pokračoval jsem dál. Pro mapování aplikace jsem použil nástroj PTTOOLS, který volám přímo z Penterep platformy. Není potřeba nic instalovat ani skládat dohromady vlastní skripty. Crawling odhalil cestu, kterou by tam nikdo nečekal. Adresář /adminer, tedy webové rozhraní pro správu databáze.
3. Obejití ochrany a získání přihlašovacích údajů
Adminer byl na první pohled chráněný omezením na localhost. Jenže tahle ochrana se dala obejít pomocí hlavičky X-Forwarded-For, čímž aplikace uvěřila, že požadavek přichází zevnitř. A tady se to zlomilo. Při dalším průzkumu jsem narazil na zapnutý Tracy Debugger. To je vývojářský nástroj, který v produkčním prostředí nemá co dělat, protože odhaluje vnitřnosti aplikace. Z jeho výpisu šlo vytáhnout přihlašovací údaje k databázi přímo z DI Containeru.
4. Přihlášení do databáze
V tu chvíli už to byla formalita. S platnými přihlašovacími údaji jsem se přihlásil přes adminer i phpMyAdmin. Obojí jsem mimochodem našel dřív, během webcrawlingu. Cesta byla otevřená a já stál uvnitř kompletní databáze.
Co bylo uvnitř a proč to mění všechno
Tady už nešlo jen o seznam klientů. V databázi byly i API klíče a další citlivé údaje, přes které by útok mohl pokračovat dál, do navazujících systémů a služeb. Jeden nález vedl k druhému. Přesně tak, jak to funguje při skutečném útoku.
A teď si to shrňme z pohledu útočníka. Pár jednoduchých kroků. Mapování, jeden zapomenutý debugger, jedna obejitá ochrana. A výsledkem je kompletní databáze, API klíče a přístup, který stačí na zničení obchodní firmy nebo na velmi drahé výkupné.
Nebyl to sofistikovaný útok. Nepotřeboval jsem zero day ani týdny práce. Potřeboval jsem checklist a trpělivost.
Co si z toho má odnést vaše firma
Tahle případová studie má jeden hlavní vzkaz. Mezi vámi a kompletním únikem dat často nestojí složitá obrana, ale jen pár nedopatření, na která se snadno zapomene. Zapnutý debugger v produkci. Administrační rozhraní, o kterém nikdo neví. Subdoména, která měla být dávno vypnutá.
A druhý vzkaz je možná ještě důležitější. K tomu, aby vám tohle někdo našel dřív než útočník, nepotřebujete najmout celý seniorní tým. Potřebujete metodiku, která nic nevynechá. Tohle všechno jsem našel jako junior a stačila mi k tomu jen hrstka testů z checklistu PWASV. A ten obsahuje stovky dalších, které jsme tady ani neotevřeli.
Testovat se prostě musí. A pravidelně
Z téhle případovky plyne jedna nepříjemná pravda.
Bezpečnost není stav, ale proces.
To, že je aplikace v pořádku dnes, neznamená nic o tom, jak na tom bude po příštím nasazení nové verze. Stačí jeden zapomenutý debugger, jedna nová subdoména, jedna změna konfigurace a otevřou se dveře, které tu včera nebyly. Proto se testovat nedá jednorázově. Musí se testovat opakovaně a pravidelně.
A přesně tady přichází Penterep. Díky platformě a checklistu PWASV nemusíte u každého testu spoléhat na drahý externí tým a čekat týdny na termín. Testování můžete řešit sami interně, nebo ho zvládne váš stávající dodavatel. Tak jako tak je díky Penterepu celý proces efektivnější, levnější a kvalitnější. Efektivnější, protože vás metodika vede krok za krokem a nic nevynecháte. Levnější, protože nemusíte za každý test platit plnou cenu seniorní zakázky. A kvalitnější, protože i junior s Penterepem doručí výsledek, který má skutečnou hodnotu. Ostatně tahle případová studie je toho důkazem.
Nečekejte, až vám slabinu najde někdo jiný. Začněte testovat pravidelně a začněte s Penterep.
Ozvěte se nám na Penterep.com a domluvíme se, jak testování nastavit u vás.




