BurpSuite Proxy patrí medzi štandardy používané pri penetračnom testovaní webových aplikácii. Aj keď je tento nástroj veľmi dobrý, stane sa, že nedisponuje funkcionalitou, ktorú momentálne potrebujete. Našťastie je ju možné rozširovať formou pluginov.
Už neraz sa nám stalo, že sme potrebovali špecifickú funkcionalitu, ktorú bolo veľmi nepraktické vykonávať manuálne - napr. podpisovanie požiadaviek. Ďalšia pomerne často žiadaná funkcionalita je vykonanie niekoľkých požiadaviek pred alebo po vykonaní špecifickej akcie používateľa. Typickým príkladom je prihlásenie používateľa a obnovenie session cookie, vyžiadanie si CSRF tokenu alebo vyplnenie viackrokových formulárov. Čiastočne túto funkcionalitu poskytuje Burp Macro, avšak v obmedzenej podobe (napríklad neumožňuje upravovať HTTP hlavičky). Preto sme sa rozhodli vytvoriť plugin, ktorý by túto rozšírenú funkcionalitu poskytoval.
Plugin je dostupný priamo Bapp Store vrátane zdrojových kódov na GitHube. Je vydaný pod MIT licenciou.
Hlavná funkcionalita je nasledovná: Plugin umožňuje nadefinovať sériu požiadaviek, ktoré sa vykonajú pred každou požiadavkou/akciou používateľa z jednotlivých nástrojov Burpu ako sú Proxy, Repeater, Scanner, Intruder, Sequencer alebo Spider. Tieto požiadavky je možné vykonávať zakaždým alebo len v pravidelných časových intervaloch. Plugin umožňuje aj reťazenie požiadaviek a modifikáciu jednotlivých požiadaviek na základe predchádzajúcich (napr. vyžiadame si CSRF token, jeho hodnotu vezmeme z odpovede a nastavíme ju ako novú HTTP hlavičku pre nasledujúcu požiadavku).
Funkcionalita popísaná v bodoch:
Výhody oproti Burp Macro:
Po nainštalovaní do Burpu sa pridá nová záložka s názvom Extended Macro a do kontextového menu sa pridá nová položka s názvom „Send to ExtendedMacro“. ExtendedMacro obsahuje tri hlavné komponenty s názvami:
V tejto záložke sa nachádza hlavná funkcionalita pluginu. Je tu viditeľný zoznam všetkých požiadaviek a operácií, ktoré sa majú vykonať (aké dáta extrahovať/nahradiť). Ľavá strana umožňuje konfiguráciu pre extrakciu dát – „Extraction message list“. Pravá strana umožňuje konfigurovať kam a ako sa extrahované dáta vložia – „Replace message list“.
Extraction message list
Sem sa pridávajú všetky požiadavky, ktoré si želáme vykonávať. Poradie vykonávania je dané poradím požiadaviek v zozname, vykonávajú sa zhora nadol. Po kliknutí pravým tlačidlom myši sa zobrazí kontextové menu, pomocou ktorého môžeme požiadavky mazať alebo meniť ich poradie.
Po kliknutí na požiadavku sa načíta jej obsah do záložiek „Request“ a „Response“. Následne vieme označiť dáta, ktoré chceme extrahovať z odpovedi a kliknutím na tlačidlo „From selection“ v „Extraction configuraion“ sa automaticky vytvorí pravidlo pre extrakciu. Nakoniec nastavíme iba názov a klikneme na „Add“. V zozname sa zobrazí nové pravidlo.
Replace message list
Táto záložka zobrazuje požiadavky a pravidlá definujúce kde a čo sa má nahradiť alebo pridať z extrahovaných dát. Najskôr je potrebné mať vytvorené pravidlo pre extrakciu, ktoré môžeme následne použiť. Dáta je možné vložiť buď pre aktuálne označenú požiadavku alebo na poslednú (vykonanú používateľom).
Záložka Logger zaznamenáva všetky požiadavky, ktoré boli spracované pluginom. Slúži to najmä pre účely ladenia.
Umožňuje nastavenie pluginu. Môžeme zvoliť, ktoré nástroje budú spracované pluginom (Repeater, Scanner, Spider, Intruder, Sequencer alebo Proxy). Ďalej umožňuje konfiguráciu intervalu „cachovania“ extrahovaných dát.