OWASP ZAP - příručka pro začínající uživatele Přehled ZAP je snadno použitelný nástroj pro penetrační testování. Slouží k vyhledávání zranitelností webových aplikací. ZAP je určen lidem se širokou škálou bezpečnostních zkušeností a je ideální jak pro vývojáře a funkční testery, kteří s penetračními testy začínají, tak pro zkušené bezpečnostní profesionály. ZAP poskytuje automatizované skenery a sadu nástrojů, které vám umožní nalézt slabá místa v zabezpečení. ZAP byste měli používat pouze k útoku na aplikace, ke kterým máte oprávnění k testování. Jestliže se obáváte použít ZAP, pak přes horní nástrojovou lištu se přepněte do modu Bezpečný režim ( Safe mode ): to výrazně redukuje funkce ZAP, ale zabráníte tak případným škodám. ZAP si můžete stáhnout z https://code.google.com/p/zaproxy/ ZAP běží na OS Windows, Linux a Mac OS: pouze vyžaduje Java 7. Uživatelské rozhraní Standardní zobrazení ZAP: Menu nejvyšší úrovně, které umožňuje přístup k mnoha automatizovaným a manuálním nástrojům. Panel nástrojů nejvyšší úrovně, který obsahuje tlačítka pro běžně používané funkce. Okno stromu na levé straně, které zobrazuje stromy stránek a skriptů. Okno pracovního prostoru na pravé horní straně, které umožňuje zobrazovat a upravovat požadavky, odpovědi a skripty. Informační okno pod oknem pracovního prostoru, které zobrazuje údaje o automatizovaných a manuálních nástrojích. Zápatí, které zobrazuje souhrn nalezených záznamů a status základních automatizovaných nástrojů. Pro účely snížení složitosti UI je možné mnoho funkcí ZAP zobrazit pouze přes kontextové menu pravým tlačítkem myši. V různých částech ZAP přes pravé tlačítko lze získat menu: pro uzly stromu stránek a skriptů, na tabulkách zobrazených v informačních kartách a na pracovní ploše karet. Některé nabídky jsou zobrazeny pouze v případě, že je zvýrazněn text - například "Fuzz..." menu je zobrazeno pouze v případě kliknutí pravým tlačítkem na zvýrazněný řetězec v záložce Request. Když teprve začínáte se ZAP pracovat, stojí za to kliknout pravým tlačítkem kamkoli, abyste si zvykli na UI. Všechna menu jsou dostupná také pomocí klávesových zkratek. Výchozí zkratky jsou definovány pro velkou část menu, ale všechny jsou k dispozici v menu Nástroje / Možnosti.... Dokonce můžete vytvářet a tisknout off-line taháky pro klávesové zkratky, které jste konfigurovali v Keyboard Options. Rychlý start - útok Nejrychlejším způsobem jak začít používat ZAP je na kartě Quick Start. To vám umožní zadat jednu URL adresu, na kterou ZAP zaútočí. ZAP využije spider k procházení aplikace, aby automaticky
pasivně skenoval všechny objevené stránky. Pak bude používat aktivní skener k útoku na všechny stránky. Je to užitečné k provedení prvního posouzení, ale má to některé nevýhody. Zaprvé ZAP nebude zpracovávat žádnou autentizaci, což znamená, že nebude objevovat žádné stránky, které jsou chráněné přihlašovací stránkou. Za druhé budete mít mnohem menší kontrolu nad fázi zkoumání a napadení. Je to sice rychlý způsob jak začít, ale ZAP nabízí mnohem více, než jen tohle. Pavouci ZAP může útočit pouze na stránky aplikace, které mu jsou známy, což znamená, že nějakým způsobem musíte prozkoumat vaše aplikace. Karta Quick Start používá tradičního pavouka, který objevuje spojení tak, že zkoumá HTML v odpovědích aplikace. Pavouka můžete pustit samostatně prostřednictvím karty Spider nebo v pravém menu klikněte na útok. Spider je sice velmi rychlý, ale není vždy účinný při zkoumání AJAX aplikací, které generují odkazy pomocí JavaScriptu. Pro AJAX aplikace je vhodnější použít AJAX Spider. Tento spider zkoumá aplikaci vyvoláním prohlížeče a následně sleduje odkazy, které byly vytvořeny. AJAX Spider je pomalejší než tradiční spider, navíc nemůže být použit v jakémkoli prostředí. Proxy vašeho prohlížeče Spidery sice jsou efektivním způsobem zkoumání aplikace, ale v ideálním případě by měly být kombinovány s manuálním zkoumáním. Spidery do formulářů vloží pouze základní výchozí údaje. Uživatel může zadat relevantnější informace. Například formulář "Nový uživatel" požaduje uživatelské jméno a vložení hodnoty (např. "AAA") vyvolá chybovou zprávu, protože za uživatelské jméno by měla být zadána platná e-mailová adresa. Žádný ze spiderů nemůže reagovat na tyto informace, pouze člověk může reagovat na podobné chyby a dodat platné uživatelské jméno, a tím ověřit více funkcionalit aplikace. Abyste mohli aplikaci prozkoumat manuálně, měli byste nastavit proxy prohlížeče s nástrojem ZAP. Používáte-li nejnovější verzi Firefox, pak nejjednodušším způsobem, jak toho dosáhnout, je pomocí tlačítka Plug-n-Hack v kartě Quick Start (pro použití tlačítka Plug-n-Hack je zapotřebí, aby byl Firefox v počítači používán jako defaultní prohlížeč, jinak je nutné URL přenést manuálně). Ve všech moderních prohlížečích můžete také ručně nastavit používání ZAP jako proxy. Pro více informací viz nápověda ZAP nebo dokumentace prohlížeče. Aktivní a pasivní skenování ZAP pasivně skenuje všechny dotazy a odpovědi (zjištěné pavouky nebo přes proxy (prohlížeč)). Pasivní skenování v žádném případě nemění odpovědi, a proto jde o bezpečné skenování. Skenování se provádí ve vlákně na pozadí, aby se zajistilo, že nebude zpomalováno zkoumání požadavku. Pasivní skenování je dobré pro nalezení omezeného počtu potenciálně slabých míst, jakými jsou např. chybějící HTTP hlavičky, které souvisí s bezpečností. To může být efektivní způsob jak získat představu o stavu bezpečnosti v dané webové aplikaci a jak získat indicie k tomu, na co se více zaměřit při manuálním testování. Aktivní skenování se pokouší nalézt potenciální zranitelnosti pomocí známých útoků na vybrané cíle. Vzhledem k tomu, že se jedná o aktivní skenování, mělo by být používáno pouze na aplikace, u nichž máte oprávnění k testování. Aktivní skenování může být spuštěno prostřednictvím záložky Active Scan nebo přes pravé tlačítko menu Attack.
ZAP má velmi jemnou kontrolu pro aktivní i pasivní pravidla skenování. To vám umožní ZAP naladit pro efektivnější hledání zranitelností a zamezení falešných poplachů. Všechny potenciální zranitelnosti jsou zobrazeny v záložce Alerts. V menu Reports můžete generovat HTML a XML reporty, které obsahují všechny zjištěné zranitelnosti. Změna požadavků a odpovědí ZAP je záchytný proxy server, což znamená, že můžete měnit požadavky a odpovědi za běhu. Všechna data, která prochází skrze ZAP lze měnit, včetně HTTP, HTTPS, WebSockets či posmessage provozu. Pro kontrolu bodů přerušení (HTTP brak points) během provozu se používají následující tlačítka z panelu nástrojů: Přerušení všech požadavků - když je aktivní, ikona zčervená Přerušení všech odpovědí - když je aktivní, ikona zčervená Odeslat a krok k dalšímu požadavku nebo odpovědi Odeslat a pokračovat k dalšímu bodu přerušení Odmítnout požadavek nebo odpověď Přidání vlastního HTTP bodu přerušení Zachycené zprávy se zobrazují v záložce přerušení a je možné je před odesláním změnit. Vlastními body přerušení je možné zachytit zprávy na základě zadaných kritérií - to může být užitečné, pokud se jedná o aplikaci, která produkuje mnoho požadavků. Také můžete body přerušení spustit z Proxy Scripts. Použití ZAP v kontinuální integraci ZAP je ideálním nástrojem pro testování bezpečnosti v prostředí kontinuální integrace (CI). ZAP můžete spustit z příkazového řádku pomocí "-daemon" a pak jej kontrolovat pomocí vestavěného REST API. ZAP podporuje HTML rozhraní API, které můžete použít k jeho prozkoumání - stačí proxy vašeho prohlížeče se ZAP a navštívit http://zap/ nebo vybrat menu Nástroje / Prohlížet API. Tržiště (Manage Add-ons) Při druhém spuštění se ZAP bude ptát, jestli chcete, aby byly aktualizace kontrolovány automaticky. To je sice doporučeno, ale můžete si vybrat, že je budete kontrolovat manuálně. ZAP se skládá ze sady základních prvků, u nichž je možné provést update jen pomocí úplných ZAP vydání. Nicméně mnoho funkcí je implementováno jako přídavné a mohou být aktualizovány samostatně bez nutnosti aktualizace ZAP vydání. K dispozici je také široká škála doplňků, které nejsou zahrnuty ve výchozím nastavení, ale mohou být staženy a nainstalovány uvnitř ZAP. Tyto doplňky mohou přidávat nové malé prvky nebo nové větší funkce. Doplňkům je přiřazen jeden z následujících stavů: Vydání (Release) znamená, že jsou vysoce kvalitní a vhodné k použití pro daný účel. Beta znamená, že jsou přiměřené kvality, ale mohou být neúplné nebo jsou zapotřebí další testy. Alpha znamená, že jsou v raném stádiu vývoje
Nejnovější verze všech oficiálních ZAP doplňků jsou k dispozici prostřednictvím ZAP tržiště, k němuž je možné dostat se přes menu Nápověda / Kontrola aktualizací... nebo přes tlačítko Správa doplňků. Mnoho doplňků může být instalováno dynamicky. Ty jsou k dispozici pro použití bez nutnosti restartování ZAP. ZAP můžete nastavit tak, aby vás upozornil, když jsou k dispozici aktualizace doplňků ve stavu Vydání, Beta nebo Alfa. Ukládání ZAP relace ZAP relaci si můžete uložit tak, že všechny zaznamenané údaje jsou vám k dispozici později. ZAP totiž ukládá všechny zprávy v dočasné databázi v souborovém úložišti, ale tato databáze je smazána při zastavení ZAP. Pokud chcete relaci uložit, doporučujeme před spuštěním testu nastavit Přetrvávající relaci. Tím dojde ke kopírování z dočasné databáze do trvalé. Více informací ZAP obsahuje kontextovou nápovědu obsahující informace o všech dostupných funkcích, která je dostupná přes klávesu F1, menu Help / OWASP ZAP Uživatelská příručka nebo někdy pomocí tlačítka na panelu nástrojů: Na stránkách ZAP Google Code (http://code.google.com/p/zaproxy) najdete výuková videa, konferenční videa a wiki s množstvím informací. K dispozici jsou také on-line skupiny, k nimž se můžete připojit a zeptat se na ZAP: o http://groups.google.com/group/zaproxy-users - skupina uživatelů zabývající se otázkami používání ZAP o http://groups.google.com/group/zaproxy-develop - skupina developer zabývající se otázkami zlepšení ZAP Všechny tyto informační zdroje jsou přístupné přes menu ZAP Online. Na Twitteru můžete ZAP sledovat prostřednictvím @zaproxy. Autentizace Existuje řada způsobů autentizace a aplikaci je vhodné otestovat nejen z pohledu nepřihlášeného, ale i přihlášeného uživatele. Velmi dobrý přehled k autentizaci uvádí video: https://www.youtube.com/watch?v=cr4gw-cpzoa Jeden z možných způsobů autentizace je následující: ZAP / Options [obrázek. 1] Local Proxy zkontrolovat, zda odpovídá údajům, které chceme použít. Popřípadě přepsat podle našich požadavků. [obrázek. 2] OK [obrázek. 2] Firefox / Tools / Options / Advanced / Networky / Settings [obrázek. 3] Manual Proxy configuration nastavid ve shodě s nastavením v ZAP [obrázek. 3] OK [obrázek. 3] Firefox zadat URL aplikace DVWA http://localhost/dvwa/login.php [obrázek. 4] Přihlásit se do DVWA ZAP vlevo nahoře si všimnout, že komunikace nám proudí přes proxy (projevuje se i na jiných místech ZAP) [obrázek. 5] Ve spodní části ZAP / History / rozkliknout jeden požadavek [obrázek. 6]
V horní části vpravo / Request / podívat se, jaké cookies (resp. sessions) aplikace používá a toto (v případě DVWA se jedná o security a PHPSESSID v jiných aplikacích se může jednat o jiné) zkontrolovat, jestli jsou uvedeny v [obrázek. 6]: ZAP / Options HTTP Sessions. Pokud zjištěné hodnoty security a PHPSESSID nejsou v seznamu uvedeny, je nutné je tam zadat (pro autentizaci je důležitá PHPSESSID ): Add / vyplnit token, nastavit Enabled / Add. [obrázek. 7], [obrázek. 8] ZAP / Show All Tabs (zobrazí všechny taby ve spodní části) [obrázek. 9] ZAP / mezi taby klik na http Sessions / pravým tlačítkem nad PHPSESSID / Set as Active. [obrázek. 10], [obrázek. 11] Nyní lze spustit test s autentizovaným uživatelem: ZAP / vlevo nahoře vybrat URL / nad ní pravým tlačítkem myši / Attack / vybrat položku, kterou potřebujeme [obrázek. 12] Obrázek 1 Obrázek 2
Obrázek 3 Obrázek 4
Obrázek 5 Obrázek 6
Obrázek 7 Obrázek 8
Obrázek 9 Obrázek 10
Obrázek 11 Obrázek 12