Burp Suite k penetračnímu testování (1.díl – Modul Proxy)

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 26.6.2014
Hodnocení/Hlasovalo: 1/18

Při penetračních testech nebo při webhackingu je často potřeba zachytit HTTP komunikaci probíhající mezi browserem a webovým serverem. Tuto komunikaci můžeme chtít například upravit ještě před tím, než je odeslána na webový server, nebo použít jednotlivé requesty v následných testech. Využití modulu Proxy z multiplatformního a rozhodně všestranného nástroje Burp Suite bude tou nejlepší volbou.

Burp SuiteNástroj Burp Suite je napsán v Javě, díky čemuž je možné jej provozovat téměř na libovolném operačním systému. Aplikace se skládá z několika modulů, které dohromady tvoří velice všestranný a užitečný nástroj pro penetrační testování. V tomto seriálu se postupně naučíme s jednotlivými moduly pracovat, tak abychom je byli schopni během testů efektivně využívat. Je vhodné na tomto místě zmínit také skutečnost, že je Burp Suite dostupný ve dvou verzích: Free Edition, která je dostupná zdarma a Professional Edition, která je placená a cena licencí u ní není rozhodně levnou záležitostí. Je ovšem potřeba si říci, že pro valnou většinu úkolů si vystačíme s Free edicí, která má oproti placené verzi znepřístupněny pouze některé volby a nenajdeme v ní modul Scanner schopný vykonat většinu automatických testů na nás.

Modul Proxy

V tomto díle se zaměříme na pravděpodobně nejdůležitější z modulů, kterým je Proxy. Tento modul umožňuje pozastavovat a upravovat všechny requesty, které odesílá náš prohlížeč na webový server. K tomu, aby bylo možné tento nástroj využívat, si ale budeme muset nejprve správně nastavit volby sítě ve svém webovém prohlížeči. Začněme ale pěkně od začátku:

Nastavení prohlížeče

Aby byl Burp Suite schopen zachytávat komunikaci webového prohlížeče, musíme svůj browser nastavit tak, aby ke své komunikaci využíval proxy na konkrétní adrese a portu. To, na jakém portu Burp Suite naslouchá, můžete ovlivnit po jeho spuštění na kartě Proxy/Options. Defaultně je zde nastaven port 8080, a pokud se vám tato hodnota nebije s komunikací jiných aplikací, není nutné ji měnit.

Ve svém webovém prohlížeči následně nastavíme stejné hodnoty, tedy adresu HTTP proxy: 127.0.0.1 a Port: 8080. Kde tuto volbu najdete v prohlížeči Firefox, ukazuje následující screenshot:

Burp Suite můžete spustit také na jiném stroji, než na kterém spouštíte webový prohlížeč, což najde využití například ve chvíli, kdy web procházíte z virtuálního počítače. V tom případě v browseru nastavíte místo adresy 127.0.0.1 IP adresu počítače, na kterém je Burp Suite skutečně spuštěn.

Pokud si budete přát zachytávat také HTTPS komunikaci, pak je nutné v prohlížeči nastavit stejné hodnoty i pro SSL. Více o šifrované komunikaci si povíme níže v textu věnovaném konfiguračním nabídkám modulu Proxy.

Poznámka: Ve chvíli, kdy Burp Suite vypnete, nebude možné používat webový prohlížeč k surfování po internetu, dokud i v něm použití proxy serveru v nastavení opět nevypnete. Abyste se vyhnuli poněkud zdlouhavému postupu při povolování a zakazování použití proxy serveru doporučuji vám použití některého doplňku prohlížeče, který vám do menu přidá přepínač, jímž použití proxy serveru nastavíte jediným kliknutím. Osobně pro tuto činnost využívám ve Firefoxu doplněk Swap Proxy.

Celý postup nastavení, si můžete prohlédnout v následujícím videu:


Intercept: Pozastavujeme a měníme odchozí requesty

Když nyní budeme chtít navštívit nějakou webovou stránku (například kliknutím na odkaz), neměla by se nám požadovaná stránka načíst. Je to proto, že intercept modulu proxy v Burp Suite náš požadavek zastavil a nepředal jej dál webovému serveru. Nyní je tedy na nás, abychom se rozhodli, co s tímto požadavkem budeme chtít udělat. Přepneme se tedy do Burp Suite, kde uvidíme barevně zvýrazněné záložky Proxy a (nacházíme-li se v modulu Proxy) také záložku Intercept.

Klikneme-li na záložku Intercept, uvidíme ve spodní části obrazovky obsah našeho požadavku, který si můžeme prohlédnout a případně upravit v různých zobrazeních na jednotlivých záložkách:

Pokud jsme v požadavku provedli požadované změny, nebo v něm žádné změny dělat nechceme, klikneme na tlačítko Forward, kterým finální podobu požadavku definitivně odešleme na stranu serveru.

Pokud se rozhodneme, že daný požadavek nechceme na server odeslat, ale chceme jej namísto toho z komunikace vyhodit, použijeme k tomu tlačítko Drop. Pokud ve frontě zachyceným požadavků žádný další pozastavený request nečekal, měla by spodní část obrazovky zůstat prázdná. Pokud však ve frontě čekal další pozastavený požadavek, opět můžeme provést jeho úpravu a tlačítkem Forward jej předat na webový server, nebo jej tlačítkem Drop zahodit.

Nechceme-li žádné další požadavky pozastavovat, využijeme k tomu tlačítko Intercept is on, čímž pozastavování deaktivujeme. I tak ale budou všechny požadavky browseru přesměrovávány přes Burp Suite a my si je budeme moci prohlížet v historii komunikace.

Poznámka: Pokud bychom zachytávání vypnuli přímo zakázáním použití proxy serveru v prohlížeči (např. doplňkem Swap Proxy), pak by Burp Suite naší komunikaci nezaznamenával, protože by přes něj vůbec neproudila.

Opětovné pozastavování requestů spustíme stejným tlačítkem, které tentokrát zobrazuje stav Intercept is off.

Actions

Posledním tlačítkem na stránce Proxy/Intercept je Action, které ukrývá nabídku mnoha činností, které můžeme s requestem také vykonat. Pojďme si přiblížit nejdůležitější z nich:

Burp Suite

Vpravo od tlačítka Action najdete ještě jedno vstupní pole, do kterého si můžete vložit vlastní poznámku ke zpracovávanému requestu, nebo odpovědi, a můžete si zde také vybrat pro request i určitou barvu, kterou se označí řádek v historii.

Intercept: Pozastavujeme a měníme odpovědi serveru

Jak jsme si uvedli při popisu volby Do intercept, kterou jsme mohli zvolit během zpracování requestu, umožňuje nám Burp Suite měnit obsah nejenom odchozích requestů, ale příchozích odpovědí. Jakmile dojde k pozastavení odpovědi serveru, změní se v Interceptu některé nabídky. Ze záložek možného způsobu zobrazení například ubyde karta Params, a naopak přibydou jiné záložky podle typu vráceného obsahu, jejichž význam je následující:

Z menu dostupného kliknutím na tlačítko Action vypadne při zpracovávání odpovědi pochopitelně volba Do intercept, a volba Don‘t intercept request se změní na Don‘t intercept response.

History

Vedle Interceptu, který slouží k pozastavování a úpravě obsahu komunikace před jejím reálným předáním cílovému systému, najdete v modulu Proxy další z důležitých funkcí, kterou je historie (karta HTTP history). Na této záložce si můžete prohlédnout seznam všech requestů/responsí, které proudily mezi vaším prohlížečem a webovým serverem v době, kdy jste v něm měli použití proxy serveru nastaveno.

Pojďme si stručně popsat rozložení obrazovky při prohlížení historie:

Rozbalovací menu nad jednotlivými záznamy

Pokud nad konkrétním záznamem v seznamu requestů kliknete pravým tlačítkem myši, vyvoláte kontextové menu obsahující kromě jiných následující volby:

Burp Suite

WebSocket history

Další ze záložek dostupných v novějších verzích Burp Suite je WebSocket History. Na této kartě můžeme prohlížet komunikaci předávanou pomocí HTML5 technologie WebSocket.

Options

Poslední karta dostupná v modulu Proxy je, jak její titulek napovídá, věnovaná různým definicím a nastavením používaným v tomto modulu.

Proxy Listeners

S touto nabídkou jsme se seznámili již v úvodních částech tohoto článku, kdy jsme nastavovali samotnou komunikaci mezi prohlížečem a nástrojem Burp Suite. Na tomto místě definujeme, na jakých portech a na kterých lokálně dostupných adresách bude Burp Suite naslouchat příchozí komunikaci. U jednotlivých záznamů lze nastavit také přeposílání requestů na jiné hosty nebo porty.

Můžeme zde také importovat/exportovat certifikáty, které bude Burp Suite používat při zachytávání SSL komunikace. V případě, že nepoužijeme žádné vlastní certifikáty, bude Burp Suite používat implicitní certifikáty a webový prohlížeč bude při zahájení šifrovaného spojení zobrazovat upozornění na neplatný certifikát pro konkrétní doménu. To nás ale nemusí příliš trápit. Bude stačit, když použití těchto certifikátů odsouhlasíme.

Intercept Client Requests

I o této nabídce již padla výše v textu zmínka. Záznamy uvedené v této tabulce se starají o filtrování pozastavovaných requestů. Všechny requesty, které si přejeme pozastavovat pomocí Interceptu musí odpovídat právě zde uvedeným pravidlům. Ve chvíli, kdy požadavek odpovídat nebude, nedojde ani k jeho pozastavení.

Použití pravidel je podmíněno zaškrtnutím volby Intercept requests based on the following rules. Pokud tuto volbu odškrtneme, nebudou uvedená pravidla použita. Stejně tak je možné zapínat/vypínat konkrétní pravidla zaškrtnutím volby Enabled u každého z nich.

Volba Automaticlly update Content-Lenght header when the request is edited je velice důležitá a měli bychom ji vždy nechat zatrženou. Pokud provedeme jakoukoliv změnu v těle POST požadavku, Burp Suite spočítá jeho novou délku a upraví na základě ní hodnotu v HTTP hlavičce Content-Lenght. Bez zaškrtnutí této volby by Webový server zůstal viset při čekání na další data, pokud bychom jich odeslali méně, než uvádí tato hlavička, nebo by je v případě našeho rozšíření nezpracoval všechny.

Intercept Server Responses

Volba definující pravidla pro pozastavování příchozích odpovědí od serveru. Nastavení je obdobné jako u Intercept Client Requests.

Intercept WebSockets Messages

Dvě jednoduché volby, které určují, zda má Intercept pozastavovat zprávy předávané prostřednictvím technologie WebSocket z browseru na server, respektive ze serveru prohlížeči.

Response modification

Volby, které určují některé automatické úpravy v HTTP odpovědích před tím, než jsou předány ke zpracování prohlížeči.

Match and Replace

Tato sekce může být poměrně užitečná, pokud si budeme přát automatické nahrazování některých výrazů v requestech nebo v odopovědích. Na základě regulárních výrazů můžeme nahradit libovolný obsah kdekoliv v hlavičkách, nebo v tělech požadavků/odpovědí. Přednastaveny jsou například regulární výrazy pro automatickou změnu User-agenta, cookies, apd.

SSL Pass Trough

Na tomto místě můžeme definovat cíle, u kterých nemá docházet pro SSL komunikaci k zachytávání komunikace. Můžeme se tím vyvarovat chybovým hlášením ze strany klienta, případně jejímu plnému odmítnutí. Komunikace mezi browserem a zde uvedenými cíly bude probíhat napřímo a nebude tedy zaznamenána ani historii.

Miscellaneous

V této oblasti najdeme různá další nastavení, jimiž můžeme ovlivnit chování modulu Proxy při předávání komunikace.

Podrobnější nápovědu k jednotlivým volbám lze vždy vyvolat kliknutím na ikonu s otazníkem, kterou najdete u každá sekce.

Web interface Burp Suite

Není-li v nastavení vypnuto webové rozhraní nástroje Burp Suite, můžete se přímo z prohlížeče dostat na toto webové rozhrání zadáním adresy http://burp. Nejdůležitější součástí tohoto rozhraní je zcela jistě historie, ze které můžete pomocí odkazů velice jednoduše opakovat odeslání jednotlivých requestů.

Ukázka práce s Burp Suite

Práce s modulem Proxy v nástroji Burp Suite je intuitivní a velice jednoduchá. Pro jistotu ale dodávám ještě krátké video zachycující základní operace. Pokud by nebylo ani tak vše jasné, rád zodpovím vaše dotazy v komentářích.


Využití Burp Suite pro zachytávání cizí komunikace

Ač není Burp Suite primárně určen pro toto použití, je to jedna z možných variant využití modulu Proxy. Pokud by kdokoliv rozchodil Burp Suite na počítači s veřejnou IP adresou (případně by použil přesměrování portů, nebo pokud by se oběť nacházela ve stejné lokální síti) a podařilo by se mu nastavit v prohlížeči své oběti proxy server na svou IP adresu, pak by mohl Burp Suite bez problémů využít také k odposlechu a úpravě cizí komunikace.

No a pokud se ptáte, jak se dá proxy v cizím počítači nastavit, tak existuje několik možností:


BTW: Už víte, proč není rozumné se přes free web proxy servery připojovat za účelem zvýšení své anonymity? :)