Zpět na seznam článků     Číst komentáře (2)     Verze pro tisk

Burp Suite k penetračnímu testování (3.díl - Modul Intruder)

Autor: .cCuMiNn.   
5.8.2014

Jednou z největších devíz nástroje Burp Suite je bezesporu právě Intruder, který penetračnímu testerovi ušetří dlouhé hodiny nezáživné rutinní práce při odhalování hesel, souborů, nebo třeba obsazených ID konkrétního obsahu.


Burp SuiteTéměř každý, kdo se pokoušel proniknout do tajů hackingu, se dříve či později setkal s guessingem, nebo-li s útoky proti přihlašovacím formulářům, jejímž cílem bylo prolomit hrubou silou (brute force) nebo slovníkovým útokem (dictionary attack) hesla uživatelů. Postupem času testeři přišli také na to, že by nebylo špatné zkoušet hrubou silou nebo pomocí slovníku odhadnout i umístění a jména různých souborů a skriptů uložených na serveru, na které nevedou žádnou odkazy. Setkat jste se ale mohli i s případy, kdy aplikace používá jedinečné ID například pro zobrazení profilu uživatele nebo k adresování souborů. Číselná řada ovšem může být děravá a hledat, které ID je obsazeno a které je volné, by bylo pro manuální procházení skutečně nadlidským úkolem.

No a právě ke všem výše uvedeným činnostem (ale nejenom k nim) se výborně hodí právě modul Intruder nástroje Burp Suite, se kterým se v tomto dílu seznámíme. Hned v úvodu se ale sluší zmínit, že právě Intruder je ve free verzi nástroje Burp Suite významně omezen a to na kadenci, se kterou odesílá jednotlivé požadavky. Pokud tedy budete potřebovat využít plné rychlosti Intruderu, abyste měli možnost odesílat stovky requestů za sekundu, budete se muset poohlédnout po placené professional verzi.

Využití intruderu pro guessing

Vertikální nebo horizontální guessing, aneb odesílání různých hesel pro jedno uživatelské jméno, nebo zkoušení jednoho hesla pro všechny uživatele, je základní praktickou dovedností nejednoho začínajícího útočníka. My se ovšem s guessingem nebudeme seznamovat proto, abychom jako zlí hoši pronikali do cizích účtů, ale proto, že guessing je současně také jednou ze základních technik používaných během penetračního testování. V následujících odstavcích se proto podíváme na jednotlivé typy útoků testující sílu uživatelských hesel s využitím nástroje Burp Suite.

Sklízíme uživatelská jména

Pokud netestujeme přítomnost slabého hesla pouze u jednoho konkrétního uživatele, jehož login je nám znám (např. admin), je dobré si nejprve připravit seznam loginů, které jsou v aplikaci zaregistrovány. Možnost vytáhnout z aplikace slovníkovým útokem nebo hrubou silou uživatelská jména je poměrně častou logickou chybou webových aplikací. Jako příklad zranitelného místa uvedu například registrační formulář, který nám svědomitě oznámí, zda je dané jméno volné nebo obsazené. Podobně se chovají také formuláře určené k zaslání zapomenutého hesla, které nám v případě, že si přejeme zaslat heslo k neexistujícímu loginu, oznámí, že námi zadané jméno nebylo v databázi nalezeno. Pojďme tedy před samotným guessingem využít Intruder nejprve ke sklizni uživatelských jmen.

Jako vždy nebudeme zkoušet nic na cizí webové aplikaci, ale raději si vše vyzkoušíme na našem již dobře známém pískovišti, kterým se pro nás stane náš Hackme webmail. Přejdeme-li na stránku registrace nového uživatelského účtu a vyzkoušíme zaregistrovat účet s loginem „admin“ dostane se nám odpovědi „Zadaný login je již použitý“. Toto místo tedy bude pro sklizeň loginů ideální.


Spustíme si tedy náš starý známý Burp Suite a nastavíme webový prohlížeč tak, aby všechny požadavky proudily přes něj. Není potřeba, abychom požadavky zastavovali interceptem a proto tuto volbu v modulu Proxy deaktivujeme. Následně odešleme vyplněný registrační formulář a půjdeme se podívat do historie komunikace, zda se náš požadavek správně zaznamenal. Najdeme request směřující na adresu /user/send_registration.php, a již důvěrně známým postupem přes kontextové menu jej odešleme do Intruderu (Sent to Intruder).


Mezi záložkami v horní části nástroje Burp Suite vyhledáme tu s označením Intruder a jediným kliknutím na ni se přesuneme na zatím neznámé místo. Nezoufejte však. Až dočtete tento článek, budete se cítit jako doma už i zde.

Pod hlavními záložkami jednotlivých modulů se podobně jako v repeateru nachází ouška karet označená 1x, 2x, 3x, atd. v závislosti na tom, kolik požadavků jste si do Intruderu odeslali. Pomocí těchto záložek se mezi jednotlivými požadavky můžete přepínat, případně je křížkem za číslem můžete uzavřít, pokud je již nebudete potřebovat.

Ještě níže se pak nachází záložky pojmenované Target, Position, Payloads a Options, které pro nás budou dnes velice důležité.

  • Target – Karta Attack target má víceméně intuitivní význam. Obsahuje adresu našeho cíle, port a možnost použití HTTPS protokolu. Pokud nechceme měnit náš cíl, nevidím důvod, proč zde cokoliv pozměňovat. Pokud byste na této kartě nějaké změny přeci jen provedli, nezapomeňte udělat stejné úpravy také v HTTP hlavičkách na kartě Positions.
  • Positions – Na kartě Payload Position se on nás očekává, že určíme typ útoku a zvolíme místa v requestu, na která bude Intruder vkládat požadované hodnoty. Intruder v našem požadavku na kartě Positions sám automaticky zvolil vhodná místa pro injekci hodnot. Tato místa obalil znaky paragrafu § a barevně nám je zvýraznil. Protože si budeme chtít sami zvolit proměnnou, jejíž hodnoty budeme testovat, klikneme v pravé části na tlačítko Clear §. Následně myší označíme hodnotu proměnné login (v našem případě „admin“) a klikneme na tlačítko Add §. Tím jsme vybrali místo, na které nám intruder bude automaticky vkládat jména ze slovníku, čímž bude zjišťovat, zda je konkrétní login v aplikaci registrován, nebo ne.

    Na kartě Position nesmíme zapomenout vybrat také typ útoku (Attack type). K dispozici máme:
    • Sniper – Tento typ útoku očekává, že v HTTP requestu označíme pouze jedno jediné místo, na které bude Intruder vkládat konkrétní hodnoty. Při každém requestu je tedy otestována jediná hodnota jediného parametru. V praxi se tento typ útoku využívá například tehdy, pokud zkoušíme různá hesla pro jeden konkrétní login, nebo jako v tomto našem případě testujeme, zda se konkrétní login v databázi již vyskytuje.
    • Battering ram – Podobně jako u typu Snipper i zde se s každým požadavkem mění jen jeden payload. Na rozdíl od výše uvedeného jej ale můžeme vkládat na více míst v requestu současně. To znamená, že pokud v kódu označíme dvě místa pomocí znaků §, bude na obě tato místa při odeslání requestu vložena intruderem stejná hodnota. V praxi se tento typ může hodit například tam, kde požadavek obsahuje měnící se hodnotu na více místech současně, nebo při testování zda uživatelé nepoužívají stejné heslo jako login.
    • Pitchfork – Během testu je možné v HTTP requestu zvolit více (až 8) míst, na která budou vkládany payloady z různých zdrojů. Pokud bychom měli označeny dvě místa (např. jméno a heslo) a zvolíme následně dva slovníky (jeden se jmény a druhý s hesly), pak budou během testu odesílány požadavky vždy s prvním záznamem z obou slovníků, následně se druhým, atd. Příklad: login1 : heslo1, login2 : heslo2, login3 : heslo3, loginx : heslox.
    • Cluster bomb – I při tomto typu útoku je možné označit v requestu až 8 míst pro vkládání payloadu. Oproti typu Pitchfork se zde ovšem testují všechny možné kombinace. Využití je tedy právě například při hledání správné kombinace uživatelského jména a hesla. Příklad: login1 : heslo1, login2 : heslo1, login3 : heslo1, login1 : heslo2, login2 : heslo2, login3 : heslo2, login1 : heslo3, login2 : heslo3, login3 : heslo3.
  • Payloads - Pokud jsme na předchozí kartě řádně označili místa hodnot, na které chceme intruderem vkládat požadovaný payload, a zvolili jsme vhodný typ útoku, je nyní na čase určit, jaké hodnoty se budou na zvolená místa vlastně vkládat. Tato nastavení najdeme na kartě Payloads.

    V případě, že jsme na předchozí kartě označili více míst pro vkládání payloadu (s čím souvisí také zvolení útoku typu Pitchfork, nebo Cluster bomb), pak máme pod rozevíracím polem Payload set na výběr z tolika možností, kolik míst jsme v requestu označili. Pokaždé, když zvolíme z tohoto rozbalovacího seznamu některou z hodnot (1, 2, 3, …), znamená to, že nastavujeme vlastnosti payloadu, který se bude vkládat na místo odpovídající jeho pořadí v requestu. Příklad: Pokud bychom v requestu označili dvě místa pro jméno a heslo (v tomto pořadí v requestu), pak bychom na kartě Payloads v seznamu Payload set vybrali nejprve jedničku a nastavili, jaký payload se bude vkládat na místo loginu. Následně bychom ze seznamu vybrali dvojku a nastavili typ payloadu pro heslo. Pokud by to stále nebylo úplně jasné, vše ukáži později také ve vloženém videu.

    Máme-li vybrán odpovídající záznam ze seznamu Payload set (v našem případě pro sklízení uživatelských loginů s typem útoku Snipper máme k dispozici pouze jedničku), můžeme přejít k dalšímu rozbalovacímu seznamu Payload type, ze kterého vybereme požadovaný typ payloadu. Opět máme k dispozici širokou škálu variant.
    • Payloads Options [xxxxx] – obsah této sekce se mění v závislosti na vybraném typu payloadu takto:
      • Simple list – Zvolíme-li tento typ payloadu, je na nás, abychom tabulku naplnili požadovanými řetězci, které chceme otestovat. Ručně si tak můžeme vytvořit jednoduchý slovník. Tuto volbu použijeme pravděpodobně ve chvílích, kdy se budeme snažit otestovat pouze pár řetězcových hodnot. Například 5 nejpoužívanějších hesel.
      • Runtime file> – Umožňuje testovat vstupy ze slovníku uloženého v textovém souboru. Každý záznam přitom musí být umístěn na samostatném řádku.
      • Custom iterator – Velice užitečná pomůcka, která umožňuje sestavit slovník řetězců přesně podle představ testera. Řekněme, že máme evidenční čísla zaměstnanců ve tvaru AA25-3AV, AA04-6ER, AA88-3AB, atd. Volba Custom iterator nám umožní seskládat si slovník všech řetězců, které odpovídají tomuto tvaru. Volbou Position zvolíme pozici znaku v řetězci a do seznamu níže vložíme všechny znaky, které se na této pozici mohou nacházet. Takto můžeme vyplnit až 8 různých pozic. Za každou pozicí může také následovat oddělovač, který nadefinujeme v poli Separator for position x. V našem případě bychom na první pozici uvedli AA (všimněte si, že může být použito víceznakové spojení, a nemusí tedy jít vždy jen o jednotlivé znaky), na druhou, třetí a čtvrtou pozici bychom vložili číslice 0-9 s tím, že za třetí pozicí by následoval oddělovač mínus. Na pátou až šestou pozici bychom potom vložili znaky velké abecedy A-Z.
      • Character substitution – Jednotlivé znaky řetězců, kterými můžeme naplnit seznam, mohou být pomocí substituce přeměněny na jiné znaky. Hodit se to může například v případech, kdy víme, že cíl často používá místo znaku A čtyřku, místo znaku E trojku a místo znaku O nulu.
      • Case modification – Tato volba umožňuje u jednotlivých vstupů ze seznamu měnit velikost použitých písmen.
      • Recursive grep – Tato volba umožňuje získat následující payload vždy z odpovědi na předchozí dotaz. Regulérní výrazy použité pro extrakci obsahu z odpovědi se definují na kartě Options v sekci Grep - Exract.
      • Illegal Unicode - Tento typ paylodu může být použit pro generování nepovolené reprezentace Unicode znaků.
      • Character blocks – Tato volba umožňuje testovat vstup aplikace na různě dlouhé řetězce. Zvolíme znak nebo řetězec, ze kterého se má výsledný blok skládat, zadáme počáteční a koncovou délku řetězce a velikost zvětšení délky při každém odeslání.
      • Numbers – Velice užitečná vlastnost umožňující například procházení záznamů podle jejich jedinečného id. Zvolíme požadovaný rozsah a krok, číselnou soustavu, zda se má jednat o celá nebo o desetinná čísla, případně další upřesňující volby, a můžeme začít testovat.
      • Dates – Pokud jsou na vstupu očekávána data, opět máme možnost zvolit počáteční a koncové datum, krok, a formát.
      • Brute forcer – Nemáme-li jinou možnost, než se pokusit o prolomení hrubou silou, nabízí nám Intruder vlastní brute forcer. Stačí si jen nadefinovat požadované znaky a minimální/maximální délku testovaných řetězců.
      • Null payloads – Tento typ payloadu použijeme, pokud potřebujeme odeslat několik požadavků s prázdnou hodnotou. Ke kolika odesláním dojde, závisí na hodnotě, kterou uvedeme v jediném dostupném vstupním poli.
      • Character frobber – Postupně prochází jednotlivé znaky vstupního řetězce a posouvá je v ASCII tabulce o jednu úroveň výše. Užitečné například ve chvíli, kdy potřebujeme zjistit, která část hodnoty vstupního řetězce má vliv na reakci aplikace, a změny kterých částí se na jejím chování neprojevují. Pokud ponecháme zvolenu možnost Base value of payload position bude se test provádět s označeným řetězcem původního požadavku, případně můžeme v poli Specific string definovat vlastní testovací řetězec. Příklad: Pokud byla původní hodnota řetězce „admin“, budou se postupně provádět testy s řetězci bdmin, aemin, adnin, admjn, admio.
      • Bit flipper - tato volba umožňuje v řetězci překlápět zvolené bity u jednotlivých znaků.
      • Username generator – Přidáme-li do seznamu uživatelské jméno, například ve formě „jméno příjmení“, nebo v podobě e-mailové adresy, budou se testovat všemožné varianty osekání a spojování jména. Příklad: Po zadání jména „Roman Kummel“ se budou testovat například kombinace jako RKummel, r.kummel, RomanK, roman, apd.
      • ECB block shuffler – Tato volba umožňuje zamíchat bloky textu šifrového pomocí ECB.
      • Extension-generated – Umožňuje uživateli napojit Burp Suite na externí generátor z doplňků, který musí být v Burp Suite správně zaregistrován.
      • Copy other payload – Pokud jsme v requestu označili více míst pro testování, můžeme na ně použít stejný payload. Jednodušší by samozřejmě bylo použít útok typu Battering ram, ale představte si případ, kdy na jedno místo potřebujete vkládat například login ve formě prostého textu, a současně na jiné místo ten stejný login zašifrovaný pomocí base64. Právě v takovém případě využijeme tuto volbu, kdy do pole Copy from position vypíšeme pořadí payloadu v požadavku, jehož hodnotu chceme přebírat a v oblasti Payload processing k němu přidáme požadované šifrování.
    • Payload processing – Po zvolení požadovaného typu payloadu zde máme k dispozici ještě další doplňující volby pro úpravu payloadu před jeho použitím. K jednotlivým řetězcům můžeme například přidávat prefix nebo postfix, můžeme stanovit, zda se mají před použitím řetězce zašifrovat nebo zahešovat, otočit pořadí znaků v řetězci, apd.
    • Payload Encoding – poslední sekce dostupná na kartě Payloads určuje, pro které znaky se má v požadavcích použít URL kódování.
  • Burp SuiteOptions - V tuto chvíli tedy již máme zvoleno místo v HTTP požadavku, na které budeme vkládat payload, a máme také zvolen vhodný typ tohoto payloadu. Pro náš účel jsme zvolili Runtime file a vybrali na disku soubor se slovníkem často používaných loginů. Nyní nám zbývá už jen naučit Intruder automaticky rozpoznat, zda je uživatelské jméno obsazené nebo volné, což provedeme hned na další kartě Options.
    • Request Headers – V této sekci máme k dispozici dvě volby, které bychom měli ponechat zatržené
      • Update Content-Length header – zajistí přepočet hodnoty délky těla požadavku v HTTP hlavičce, pokud dojde změnou payloadu ke změně její velikosti.
      • Set Connection: close – Informuje server, aby za každou odpovědí ihned ukončil spojení.
    • Request Engine – Velice důležitá sekce, ve které můžeme ovlivnit rychlost celého Intruderu. Jak jsem ale psal již na samém začátku tohoto textu, je právě Intruder ve free verzi nástroje Burp Suite v těchto možnostech značně omezen. V případě, že bychom měli k dispozici verzi Professional, měli bychom na tomto místě možnost nastavit:
      • Number of threads - počet souběžných vláken, která dokáží práci Intruderu značně urychlit.
      • Number of retries on network failure – počet chyb v řadě, které se mohou při spojení vyskytnout, než dojde k ukončení testu.
      • Pause before retry (milliseconds) – Zde můžete nastavit délku časové prodlevy mezi jednotlivými pokusy v případě, že ve spojení dojde k chybě.
      • Throttle (milliseconds) – Usměrňování rychlosti požadavků. Můžete si zde nastavit čas pauzy mezi jednotlivými requesty, který může být buď fixní, nebo se může lineárně zvětšovat s každým požadavkem. Usměrnění rychlosti je vhodné použít v případech, kdy by náš test mohl způsobit DoS, nebo v případech, kdy ochranné mechanismy aplikace umožňují uživatelům odeslat na server jen určitý počet požadavků v určitém čase.
      • Start time – Test můžeme spustit ihned, nebo na tomto místě můžeme naplánovat jeho odložený start.
    • Attack Results – V této sekci můžeme nastavit některé další možnosti chování Intruderu během útoku.
      • Store requests – Všechny odchozí požadavky budou ukládány do dočasného souboru, takže si je budeme moci v případě potřeby prohlédnout v plném znění.
      • Store responses – Stejně jako předchozí volba, slouží i tato k ukládáni komunikce během testu. Konkrétně tato možnost umožňuje ukládat všechny odpovědi serveru.
      • Make unmodified baseline requestu – Tato volba po Intruderu požaduje, aby před započetím testu vynuloval všechny ukazatele payloadů a jako první požadavek v řadě #0 odeslal prázdné hodnoty payloadu, což poskytne základní odpověď serveru, proti které bude možné porovnávat následující requesty.
      • Use denial-of-service mode – Zaškrtnutím této volby přepneme Intruder do módu testující náchylnost serveru vůči DoS na aplikační vrstvě. Intruder bude odesílat požadavky, přesně tak, jak jsme si již popsali, ale nebude čekat na odpověď. Místo toho po odeslání každého požadavku okamžitě ukončí TCP spojení a ihned odesílá další request.
      • Store full payloads – Zaškrtnutí této volby je nutné, pokud budeme chtít během útoku provádět některé akce, například měnit nastavení grep nebo měnit obsah payloadů. Tato možnost ovšem spotřebovává další paměť.
    • Grep – Match – Jak si ukážeme později po spuštění útoku, mohou být jednotlivé odpovědi serveru označeny příznakem, zda splňují námi zadané podmínky, nebo ne. A právě tato sekce je tím místem, kde si tyto podmínky můžeme nadefinovat. Budeme-li chtít označování jednotlivých odpovědí použít, povolíme ji volbou Flag result items with responses matching these expressions.
      Do tabulky následně umístíme v závislosti na zvolené volbě pod tabulkou Simple string / Regex buďto konkrétní řetězce, jejichž výskyt v odpovědích ověřujeme, nebo regulární výrazy.
      • Case sensitive match – určuje, zda při porovnávání řetězců hraje roli velikost písmen.
      • Exclude HTTP headers – vypíná hledání řetězců v HTTP odpovědích serveru. Pokud tedy očekáváme, že se změna chování serveru v závislosti na vstupu bude promítat v některé z těchto hlaviček, musíme tuto volbu odškrtnout.
      Pro náš praktický příklad se sklízením uživatelských jmen využijeme skutečnosti, že po zadání obsazeného loginu stránka zobrazuje informaci „Zadaný login je již použitý“. Tato informace dobře poslouží pro naše rozlišení. Proto tabulku vyčistíme kliknutím na tlačítko Clear a do seznamu vložíme jediný záznam, kterým bude řetězec „login je“. Vyhneme se použití znaků s diakritikou, protože s tou má Burp Suite problémy, a my bychom české znaky museli složitě kódovat.
    • Grep – Extract – Tento velice užitečný nástroj vám umožní extrahovat z webové stránky libovolná data, která se mění v závislosti na odeslaném payloadu. Jako příklad uvedu aplikaci, která jako parametr přebírá id uživatele a v reakci na tento požadavek zobrazí webovou stránku, která obsahuje uživatelské jméno odpovídající danému id. Sklizeň uživatelských jmen bude v tomto případě hračkou, a protože je to pěkný příklad využití Intruderu, tak si tento postup později také ukážeme.
      Požadujeme-li extrakci určitých dat z webové stránky, jednoduše v této sekci zaškrtneme volbu Extract the following items from responses a klikneme na tlačítko Add. Zobrazí se nám další nabídka, ve které uvedeme statický text, který se nachází, před požadovaným místem k extrakci (start after extraction) a statický text, který se nachází za ním (End at delimiter). Zvolit můžeme ale také pozici prvního znaku řetězce v odpovědi (Start at offset) a fixní délku extrahovaného řetězce (End at fixed length), případně kombinaci uvedených možností. Druhou variantou, jak lze požadovaná data v odpovědi zacílit, je použití regulárních výrazů.

      K vysvětlení nám zbývají ještě dvě volby nepopsané volby a jedno tlačítko:
      • Exclude HTTP headers – zaškrtnutím této volby vypustíme HTTP prohledávané hlavičky. Pokud se tedy data určená k extrakci nachází v oblasti těchto hlaviček, musíme volbu ponechat odškrtnutou.
      • Update config based on selection bellow – jednoduchý nástroj pro usnadnění konfigurace extrakčních pravidel. Pokud máme tuto volbu zaškrtnutou, stačí v oblasti, která zobrazuje responsi serveru označit požadovaný řetězec k extrakci a nástroj nám již automaticky vyplní všechna potřebná pole.
      • Refretch response – Stiskem tohoto tlačítka můžeme vyzkoušet načíst opětovně kód stránky, abychom si ověřili, že je požadované místo správně označeno.
      Máme-li zaměřena místa pro extrakci a extrakci jsme povolili, bude pro každou extrahovanou oblast přidán do výsledků testů nový sloupec, který bude obsahovat právě extrahovaná data.
    • Grep – Payloads – Tato oblast je určena nastavením pro testování reflektovaného zobrazení payloadu v odpovědi serveru.
      • Search responses for payload string – Zapíná vyhledávání payloadu v reakci serveru. Užitečné to může být například ve chvíli, kdy testujeme aplikaci na reflektované XSS. Pokud máme pro payload uveden seznam řetězců testujících XSS, můžeme tímto způsobem otestovat, zda se náš vstup přímo promítá i na výstupu. Zapnutí volby přidá do výsledků testování nový sloupec s informací o (ne)úspěšném vyhledání.
      • Case sensitive match – Nastavení, zda musí souhlasit velikost písmen v payloadu a v odpovědi.
      • Exclude HTTP headers – Vyloučí z prohledávané oblasti HTTP response hlavičky.
      • Match against pre-URL-encoded payloads – Pokud odesíláme některé znaky kódované pomocí URL kódování, je pravděpodobné, že budou na straně serveru dekódovány a zobrazeny přímo. Aby mohl být zakódovaný řetězec z payloadu nalezen v dekódované podobě v odpovědi, musí být tato volba zaškrtnuta.
    • Redirections - Poslední ze sekcí určuje, jak se bude Intruder chovat v případě, kdy server vrací status pro přesměrování na jinou URL adresu.
      • Follow redirections - Můžeme zde tedy nastavit, zda přesměrování následovat, nebo ne, a v případě že ano, tak zda kamkoliv, nebo jen v rámci stejné domény, nebo v rámci domén, které jsme si vložili do scope.
      • Proccess cookies in redirection - Důležitá volba, kterou ovlivníme, zda se při redirektu bude odesílat také cookies, které jsme společně se žádostí o přesměrování obdrželi. Na tuto volbu je potřeba myslet, testujeme-li přihlašovací formuláře.

Po té, co jsme úspěšně nastavili všechny požadované hodnoty, nastal ten správný čas spustit samotný test. K tomu nás slouží volba Start attack dostupná po kliknutí na položku Intruder v hlavním menu aplikace nad záložkami karet jednotlivých modulů.


Pokud jsme vše správně nastavili, měli bychom v případě free verze obdržet pouze upozornění na skutečnost, že je Intruder ve free verzi omezen a pak už můžeme v novém okně sledovat průběh samotného testu.

Video zachycující celý postup pro sklizeň uživatelských jmen


Sklizeň uživatelských jmen na základě uživatelského id

Jak jsem slíbil v odstavci věnovaném Grep – Extract, je s použitím Intruderu velice snadné vyextrahovat z obsahu stránky uživatelská jména na základě jejich id (trpí-li samozřejmě webová aplikace tímto typem logické zranitelnosti). Jedním ze známých cílů pro tuto extrakci je například redakční systém Wordpress, který je v tomto směru ukecaný dostatečně.

Pomocí Google dorks je možné nalézt několik milionů Word Pressů, které nám seznam svých uživatelů poměrně ochotně nabídnou:

https://www.google.cz/?gws_rd=ssl#q=%22inurl:\%3Fauthor%3D1%22+intitle:admin

No a nyní již k samotnému postupu, který už nebudu popisovat písemně, ale jen prostřednictvím následujícího videa.


Testujeme sílu hesel

V tuto chvíli byste již měli být schopni sami otestovat sílu hesel jednotlivých uživatelů našeho testovacího webmailu, které jsme pomocí postupu uvedeného dříve z aplikace vydolovali. Pro jistotu pouze připomenu různé varianty útoků, které můžete při testování hesel použít.

Dictionary Attack (slovníkový útok)

Burp SuiteTento typ útoku na prolomení hesel se snaží najít heslo ve slovníku (souboru s konkrétními řetězci). Pokud tedy uživatelé používají jako své heslo běžná slova, nebo jména, bude jejich odhalení s využitím vhodného slovníku poměrně snadnou záležitostí. Na našem serveru naleznete některé slovníky v sekci download.

Brute Force Attack (útok hrubou silou)

Burp SuiteÚtok hrubou silou se používá ve chvílích, kdy heslem není běžné slovo a slovníkové metody tak selhávají. Má-li však uživatel nastaveno příliš krátké heslo, nebo známe znaky, ze kterých se heslo skládá, můžeme se pokusit o jeho prolomení touto metodou, která zkouší použít všechny možné kombinace zvolených znaků. V případě velkého keyspace je ovšem použití této metody časově natolik náročné, že prolomení hesla není realizovatelné v rozumném čase.

Horizontální Attack

Horizontální útok znamená, že budeme testovat jedno heslo (případně několik málo hesel) proti všem uživatelům. Řekněme, že jedním z nejčastějších hesel v česku bude slovo „heslo“. Vyzkoušejme tedy použít toto heslo u všech námi zjištěných uživatelských účtů.

Vertikální Attack

Při vertikálním útoku se budeme snažit prolomit heslo jednoho konkrétního uživatele (případně několika málo uživatelů). Použít při tom můžeme jednak slovníkové útoky, nebo útok hrubou silou.

Kompletní Attack

Spojením horizontálního a vertikálního útoku získáme variantu, kdy budeme testovat všechny možné hesla, na všechny uživatelské účty aplikace. Tento typ útoku bude časově velice náročný.

Všechny typy útoků byste měli být schopni s využitím intruderu z nástroje Burp Suite sami zvládnout. Pro jistotu, ale přikládám ještě jedno video, které některé z postupů zachycuje.


Závěr

Věřím, že jste se přesvědčili o skutečnosti, že modul Intruder je velice užitečným nástrojem, kterým lze otestovat snad cokoliv vás napadne. Dolování loginů a prolamování hesel bylo jen malou ukázkou z širokého spekra možností, které Intruder testerům poskytuje. Až budete příště testovat, jak se aplikace zachová, pokud obdrží určitý vstup, zkuste si na tento nástroj vzpomenout a ušetřete si tak spoustu času, který byste jinak věnovali manuálnímu otestování.


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.13/8

1  2  3  4  5    
(známkování jako ve škole)