WebScarab je projekt skupiny The Open Web Application Security Project (OWASP), což je světová nezisková organizace zabývající se bezpečností webových aplikací. Konzultantem a hlavním vývojářem je Rogan Dawes. Je vázán licencí GNU General Public License v2.

Slouží k analyzování bezpečnosti webových aplikací. Nástroj funguje jako záchytné proxy, zachytává komunikaci mezi uživatelem a serverem, čímž dává uživateli možnost čtení, upravování nebo tvoření nových požadavků. Je napsán v programovacím jazyku Java jako framework pro pluginy, které na něm běží a umožňují analyzovat požadavky nebo odpovědi v různých směrech.

Práce v nástroji WebScarab nemusí být z hlediska méně znalého uživatele zrovna nejpříjemnější, jelikož nenabízí příliš intuitivní prostředí a někdy není úplně lehké se v něm zorientovat. Ovšem stejná organizace, která vytvořila WebScarab, pracuje na projektu WebScarab NG. Ten je v podstatě přepisem WebScarabu do uživatelsky přehlednější formy, ale zatím disponuje pouze omezenými možnostmi.

Základní nastavení editovat

Nastavení plného rozhraní editovat

Po prvním spuštění programu je zobrazeno omezené rozhraní, které zahrnuje pouze dva panely. Prvním je panel Summary a druhý Intercept, které umožňují pouze omezenou analýzu. Pro přejití k plné verzi programu stačí zaškrtnout Use full-featured interface. Pro aplikaci tohoto nastavení je třeba program znovu spustit. Touto malou změnou se nám program výrazně změní a dostaneme přístup pluginům s rozmanitějšími možnostmi analýzy.

Konfigurace spojení s prohlížečem editovat

Pro získávání komunikace mezi prohlížečem a serverem je třeba v prohlížeči nastavit proxy server a správný port, na kterém WebScarab naslouchá prohlížeči. Musíme mít zaštknuto Ruční konfigurace proxy serverů, do pole http proxy: napíšeme localhost a jako Port nastavíme 8008. Toto je základní nastavení WebScarabu. Ještě musíme zkontrolovat, jestli v poli Nepoužívat pro nemáme uveden výše zmíněný localhost.

Pluginy nástroje Web Scarab editovat

Summary editovat

Tento panel je dostupný jak v omezeném, tak i v plném rozhraní programu. Jeho hlavní úlohou je zobrazení zachycené komunikace mezi serverem a prohlížečem. V horní části panelu vidíme stromovou strukturu webových stránek, které jsme v prohlížeči po dobu sezení zobrazovali. K jednotlivým položkám jsou ještě zobrazeny doplňující informace:

  • Methods – typ požadavku odpovědi
  • Status – kódy odpovědí
  • Posible Injection – možnost provedení injection
  • Set-Cookie – upozornění, že v tomto požadavku se vytváří cookie
  • Comments – tento požadavek obsahuje komentáře
  • Scripts – tento požadavek obsahuje skripty

V dolní části panelu vidíme jednotlivé tříděné požadavky, kde každému je přiřazeno ID dle jeho vytvoření. Jsou zde zobrazeny i požadavky, které byly námi vytvořeny z jiných části nástroje a doplňkové informace k nim:

  • ID – unikátní označení konverzace
  • Date – datum vytvoření
  • Host – z jaké internetové stránky pochází
  • Path – cesta k částem webové aplikace
  • Parameters – parametr, který je předáván
  • Origin – údaj kde byla konverzace vytvořena (Proxy, Fuzzer, Spider, …)
  • XSS – možnou náchylnost požadavku na cross site scripting
  • CRLF – možnost náchylnosti požadavku na CRLF injection
  • Set Cookie – zobrazení nově nastavené cookie
  • Cookie – zobrazení cookie, která již existuje

Po dvojkliku na libovolný požadavek se nám zobrazí okno s možnostmi prohlížení a modifikace konverzace. Pod pravým tlačítkem myši máme možnost poslat požadavek do Fuzzeru, nebo zobrazit skripty případně komentáře v této konverzaci.

Manual request editovat

V tomto pluginu máme přístup ke všem požadavkům, které byly WebScarabem zachyceny nebo vytvořeny. Tyto požadavky zde můžeme měnit, nebo vytvářet nové.

V poli Previous Requests vybereme požadavek, který je následně zobrazen v okně Request. Máme zde na výběr jeho parsovanou formu, kde jsou jednotlivé položky tříděny, nebo takzvanou surovou formu. Obě formy můžeme libovolně měnit. Pokud máme vybraný požadavek a stiskneme tlačítko Fetch Response, tak se v okně Response zobrazí odpověď na daný požadavek, který je možno zobrazit též v parsované nebo surové formě. Parsovaná forma má možnosti zobrazit výsledek HTML, XML, textovou nebo hexadecimální formou.

Dále zde máme tlačítka Get Cookies a Update CookieJar. První zmiňované najde cookie patřící k požadavku z databáze Shared Cookies a přidá ji k požadavku. Tlačítko Update CookieJar prohledá odpověď pro případ, že je v odpovědi nastavována cookie, a přidá ji do databáze Shared Cookies.

Spider editovat

Spider automaticky prochází konverzaci a vyhledává odkazy, které ještě nebyly navštíveny. Tyto odkazy ukládá stromovou strukturou do okna, odkud je můžeme vyvolat pro bližší analýzu. Plugin má možnost filtrovat prohlížené odkazy, pro snadnější zpracovávání. Filtrování zajišťují řádky Allowed Domains, kde regulárními výrazy definujeme, jaké odkazy chceme prohlížet, a Fobidden Paths pro případ nechtěných odkazů.

Vyvolávat můžeme buďto celé stromy pomocí tlačítka Fetch Tree, nebo pouze jednotlivé části přes tlačítko Fetch Selection. Ke každé takto vyvolané části se nám utvoří odpověď od serveru a je zařazena v panelu Summary k dalšímu zpracování.

XSS/CRLF editovat

Plugin testující zranitelnosti vůči XSS a CRLF útokům. V horní tabulce jsou požadavky, u kterých byla detekována zranitelnost na XSS nebo CRLF útoky. Ke každému záznamu jsou poskytovány podrobnější informace jako v panelu Summary.

Tlačítkem Edit Test Strings vyvoláme okno, kde můžeme editovat řetězce pro XSS a CRLF testování. Řetězce nastavujeme pro XSS i CRLF zvlášť. Tlačítkem Check plugin začne odesílat potenciálně zranitelné požadavky s testovacím řetězcem. Odpovědi na tyto požadavky kontroluje na výskyt testovacího řetězce. Pokud se řetězec v odpovědi vyskytuje, je tento požadavek označen jako zranitelný a zařazen do spodní tabulky.

Ve verzi 20080814-0000 není tento plugin plně funkční. V některých případech špatně vyhodnocuje zranitelnost, nebo způsobuje zaseknutí programu.

Session ID Analysis editovat

Plugin analyzující vytváření session ID, aneb jak těžké je pro útočníka odhadnout další hodnotu session ID. Analýza probíhá tak, že sesbíráme několik vzorků session ID a porovnáváme jejich hodnoty. Plugin je rozdělen do tří částí Collection, Analysis a Visualisation.

První část Collection slouží pro výběr session ID, které budeme analyzovat. V políčku Previous Requests vybereme požadavek, z kterého budeme session ID sbírat. Tlačítkem Test zjistíme, jestli byla session správně nalezena, a do pole Samples nastavíme, kolik vzorků budeme analyzovat. Tlačítko Fetch následně získá vzorky dle zadaných parametrů.

V části Analysis máme přístup k informacím o sesbíraných vzorkách jednotlivých session identifikátorů. V políčku Session Identifier vybereme identifikátor, který chceme zobrazit. Následně jsou jednotlivé session ID vypsány v tabulce s údaji o datu vytvoření, hodnotě, hodnotě přepočítané pouze na číslo a rozdílu přepočítaných hodnot dvou po sobě jdoucích session ID. Máme zde ještě k dispozici údaj o nejmenší hodnotě, největší hodnotě a jejich rozsahu. Tyto údaje můžeme tlačítkem Clear úplně smazat, případně tlačítkem Export uložit do textového souboru.

Poslední část Visualisation slouží k zobrazení údajů session identifikátoru vybraného v Analysis, kde na ose x máme čas vytvoření a na ose y hodnotu session ID. Takto vytvořený graf nám dá lepší přehled o tom, jak jsou hodnoty session ID vytvářeny.

Fuzzer editovat

Plugin pro testování parametrů webových aplikací na různé vstupy. Hlavní výhodou tohoto pluginu je možnost používání velkého množství vstupních dat ze souboru, bez nutnosti přímého zadávání. Tímto získáváme rychleji přehled o možných problémech s XSS, injection, krádeže session ID a podobně.

V horní části panelu můžeme sami vytvořit zcela nový požadavek, případně z panelu Summary přednastavit výchozí přes pravé tlačítko myši a možnost Use as fuzz template. Takto naimportovaný požadavek můžeme ještě dle libosti dále poupravit.

Níže je tabulka Parameters pro nastavování parametrů, které mají být testovány. Parametry mohou být vytvořeny zcela nové, nebo v případě používání požadavku z panelu Summary pouze modifikovány. V této tabulce se vyskytují tyto sloupce

  • Location – umístění parametru (path, fragment, query, cookie, body)
  • Name – název parametru
  • Type – typ parametru
  • Value – výchozí hodnota
  • Priority – priorita kombinování
  • Fuzz source – zdroj vstupních hodnot

Jako typ parametru je nutno volit String. Autor sám v tomto případě už netuší, proč je tam tento sloupec uveden. Výchozí hodnota je použita pouze v případě, že není určen zdroj vstupních hodnot. Priorita kombinování určuje, zda budou testované vstupy vkládány popořadě (první s prvním, druhý s druhým, …) čehož docílíme nastavením stejné priority. Pokud nastavíme prioritu u parametrů jinou, tak docílíme testování typu každý s každým. Zdroj vstupních hodnot vytvoříme v tabulce, kterou vyvoláme tlačítkem Sources. V poli Description přiřadíme název skupině vstupních dat, která poté určíme buďto regulárním výrazem do pole RegEx nebo přímo ze souboru v poli File. Takto můžeme vytvořit i více položek Fuzz Sources a ty poté přiřazujeme parametrům.

V případě že máme hotový výběr požadavku i správně nastavené parametry pro testování, tak můžeme vše spustit tlačítkem Start. Plugin začne vytvářet požadavky dle šablony a odesílat je na server. Jednotlivé odpovědi jsou shromažďovány ve spodní tabulce pro bližší analýzu. Proces tvoření odpovědí může být kdykoli přerušen tlačítkem Stop.

Fragments editovat

Tento plugin pasivně prochází HTML odpovědi, kde vyhledává komentáře a skripty. Ty potom třídí a tím dává možnost k jejich bližšímu prozkoumání.

V rozbalovacím seznamu vybereme, jestli chceme zobrazovat skripty nebo komentáře. Výběr je následně zobrazen v okně pod rozbalovacím seznamem. Po označení libovolného skriptu nebo komentáře je v dolním okně uveden zdroj, odkud tento záznam pochází. Pokud se stejný skript nebo komentář vyskytuje ve více zdrojích, jsou uvedeny oba.

Compare editovat

Plugin sloužící pro porovnávání právě dvou odpovědí mezi sebou. Snadno tak můžeme zjistit, jak se odpovědi od sebe liší. Plugin sám barevně zvýrazňuje odlišnost kódu. Bílou barvou jsou označeny shodné části. Zelenou barvou jsou označeny části, které v této odpovědi jsou, ale ve druhé ne. Žlutou barvou jsou naopak označeny části, které v této odpovědi chybí. Žlutě jsou označeny části, kde v obou odpovědích je kus kódu, ale rozdílný. Rozbalovací seznam v horní části okna slouží k vybrání odpovědi, s kterou budeme porovnávat. Okno pod seznamem slouží k vybrání odpovědi, kterou budeme porovnávat vůči vybrané v seznamu. Následně jsou obě odpovědi zobrazeny v dvou oknech vedle sebe. Nalevo je zobrazena odpověď vybraná z rozbalovacího seznamu a vpravo je zobrazena z okna pod ním.

Externí odkazy editovat