Burp Suite – WebApp Security Tester
Burp Suite – WebApp Security Tester
Burp Suite is een grafische (GUI) applicatie welke primair gebruikt wordt voor het testen van webapplicaties. Burp Suite wordt ook wel geschreven en afgekort als “Burp” of “Burp Suite” en is ontwikkeld door PortSwigger Security. Burp Suite bestaat uit meerdere applicaties zoals een scanner, proxy, spider etc. Maar Burp Suite komt ook in 2 varianten, namelijk een gratis (community) en een betaalde (professional) variant. De community editie van Burp Suite beschikt alleen over de basis functionaliteiten t.o.v. de professional edition. In deze post behandelen we de community versie welke o.a. al default geïnstalleerd is in Kali Linux.
De community editie is vooral interessant voor het in kaart brengen van de web-applicatie. Je kunt gebruik maken van o.a. de volgende Burp tools in de community edition:
- Geavanceerde application-aware crawler
- Gedetailleerde scope-based configuratie zodat je nauwkeurig en precies te werk kunt gaan
- Custom “not-found” web responses detective waarmee false-positives voorkomen kunnen worden
- Tree-based weergave waarin alle gevonden content weergegeven wordt.
- Burp Suite (Man-in-the-middle) proxy waarmee je al het browse verkeer kunt onderscheppen
- Een aantal “handmatige” test ttools zoals de http message editor, sessie token analyse, sitemap compare tool en nog veel meer.
- BApp Store waarin kant-en-klare Burp Suite extenties te vinden zijn welke ontwikkeld zijn door de Burp Suite community
- Burp Suit API zodat Burp Suite met andere tools kan samenwerken
De professionele variante van Burp Suite kost ongeveer 330 euro per jaar maar daar krijg je dan wel een hele hoop extra’s voor zoals:
- Automatisch crawlen en scannen van meer dan 100 veelvoorkomende web vulnerabilities
- Ondersteuning voor verschillende “attack insertion points” bij aanvragen zoals parameters, cookies, headers etc.
- Geavanceerde handmatige scan opties
- Geavanceerde scan logica en verwerking zoals analyse van statische code, out-of-band technieken, IAST en ondersteuning van de nieuwste technieken zoals JSON, REST, AJAX etc.
- Vulnerabilities sitemap, vulnerability advise etc.
- Burp Intruder voor de automatisering van “custom” aanvallen waarmee de snelheid en doeltreffendheid van handmatige tests verhoogd wordt zoals het plaatsen van payloads, toepassen van “fuzzing”, gebruik maken van interne woordlijsten etc.
- Nog meer “manual testing” tools
- De mogelijkheid om HTML rapportages te maken of om gevonden vulnerabilities te exporteren naar XML
Het grootste verschil tussen de community en professional editie is dat de professionele editie van Burp Suite de gebruiker meer toegang geeft om automatische test uit te voeren. Bij de community editie mist er nogal wat functionaliteit en richt zich voornamelijk op “handmatige” tests. Wat mij betreft is de community versie dan ook meer een demo voor de professionele versie. Maar ja, iedereen moet centjes verdienen toch?
Hieronder beschrijf ik de Burp Suite tools waar de community versie (soms gedeeltelijk) mee uitgerust is. De professionele editie is eveneens uitgerust met de Burp Intruder welke het mogelijk maakt om automatisch web-applicaties aan te vallen en de Burp Scanner welke automatisch kan scannen op veelvoorkomende web-applicatie vulnerabilities. Neem daarbij ook mee dat de professionele variant de mogelijkheid heeft om projecten op te slaan en te herstellen, te zoeken binnen projecten, taken kan plannen en periodieke updates krijgt.
Maar genoeg over alle extra’s van de professionele versie. Nu gaan we door met de community versie. Dit zijn alle Burp Suite onderdelen waar je toegang toe hebt in deze community editie:
Burp Proxy
De Burp Proxy stelt je in staat om een proxyserver te starten waardoor al het verkeer tussen punt A en B via de proxy gaat en dus tot in detail geanalyseerd kan worden. Burp Suite maakt het zelf mogelijk om een ontvangen bericht te modificeren alvorens deze weer doorgestuurd wordt.
Burp Spider
De Burp Spider crawlt de website en brengt elke pagina en elk sub-onderdeel in kaart. De spider wordt vaak als aanvulling gebruikt op het handmatige mapping proces.
Burp Repeater
De Burp Repeater maakt het mogelijk om stress-tests uit te voeren. Web-applicaties kunnen gevoelig zijn voor stress-tests. Het kan zijn dat deze tijdens grote aanvragen zoveel moeten verwerken dat ze onderuit gaan of dat de beveiliging in het geding komt waardoor je tijdens een stress-test de webapplicatie in komt via een methode die normaliter afgevangen wordt.
Burp Sequencer
De Burp Sequencer is een tool voor het analyseren van de “quality of randomness” in een steekproef van gegevens. Het kan worden gebruikt om de sessietokens of andere belangrijke data-items die feitelijk “onvoorspelbaar” moeten zijn, te testen. Denk dan aan anti-CSRF tokens, tokens voor wachtwoordherstel, enz.
Burp Decoder
De Burp Decoder is een tool voor het transformeren van gecodeerde gegevens (in zijn canonieke vorm), of voor het transformeren van onbewerkte gegevens in verschillende gecodeerde en gehashte vormen. De Burp Decoder is in staat om op intelligente wijze verschillende coderingsformaten te herkennen met behulp van heuristische technieken.
Burp Comparer
De Burp Comparer is een tool 2 soorten data met elkaar te vergelijken.
Hey mooie aan Burp Suite is de integratie van alle tools. Alle Burp tools werken namelijk naadloos samen. Zo kun je data van de ene tool naar de andere tool sturen om deze weer te gebruiken. Daarnaast is de functionaliteit flink uit te breiden d.m.v. de BApp Store extenties en de Burp API.
Door de vele functionaliteiten van Burp Suite is het geen gemakkelijke tool. Als je exact weet wat je doet zoals ervaren WebApp testers dan is Burp Suite een eitje. Als je net begint dan is het zaak je goed in te leven en bij elke stap je opties te bekijken en te testen. Er is ook veel informatie terug te vinden op de Burp Suite website welke ik zeker aanraad om te lezen.
Zoals al gezegd, Burp Suite (community edition) is default aanwezig binnen Kali Linux. Burp Suite is echter ook te krijgen als Windows (x64) binary of als JAR file. Burp Suite is namelijk geschreven in Java en daarom ontzettend makkelijk te installeren. Zorg data Java geïnstalleerd is (“java -version” commando in de Windows command prompt) en dubbelklik de JAR file. Je kunt de JAR file ook oproepen via de command-line wat diverse voordelen heeft. Je hebt via de command-line meer controle over de uitvoering van de applicatie. Zo kun je bijvoorbeeld opgeven hoeveel geheugen je wilt toekennen aan het uitvoeren van Burp Suite. Om 2GB toe te wijzen gebruik je bijvoorbeeld -mx flag.
java -jar -mx2G /pad/naar/burp.jar |
Op Windows en OSX kun je ook de EXE gebruiken welke aangemaakt wordt. Op Linux is er geen EXE en moet je om .exe aan te maken eerst een .sh bestand uitvoeren:
sh Burp_Suite_community_linux_v1_7_33.sh |
Nu kun je Burp Suite altijd gemakkelijk starten. Als dat voor elkaar is wordt het tijd om de interface te bekijken.
Burp Suite Interface
Als je Burp Suite voor de eerste keer start moet je uiteraard akkoord gaan met een legal disclaimer / licentie overeenkomst. Als er updates zijn zal Burp Suite hier een melding van doen. Aan te raden is om altijd te werken met de meest recente versie. Het updaten van een nieuwe Burp Suite versie is identiek aan een nieuwe installatie. De applicatie update zichzelf dus niet.
Tijdens het starten van Burp Suite zal je gevraagd worden of je het project op wilt slaan of niet. Kies je voor een “Temporary Project” dan zal alle data in het geheugen opgeslagen worden. Deze data is weg zodra Burp Suite afgesloten wordt. Je kunt ook een project aanmaken om alle data op te slaan en uiteraard kun je er ook voor kiezen om een bestaand project te openen. Let op: de community versie geeft je alleen de mogelijkheid om een temporary project aan te maken. Je kunt hier dus geen data opslaan op de schijf.
Vervolgens kun je een configuratiebestand laden of Burp Suite starten met de default configuratie.
Als dit allemaal klaar is start Burp Suite. De interface ziet er als volgt uit:
De interface kunnen we grofweg verdelen in 7 onderdelen, te weten:
- 1. Het hoofdmenu
Het hoofdmenu geeft je toegang tot de Burp Suite opties. Hier kun je dus de layout van Burp Suite configureren en kun je instellen hoe Burp Suite te werk moet gaan. - 2. De toolbar
De toolbar geeft je snel toegang tot alle Burp Suite tools zoals de Proxy, Spider en Repeater. Ook heb je toegang tot alle “professional” tools maar deze zullen niet of slechts gedeeltelijk werken. Er zijn ook tabbladen voor de “target” waar de meeste resultaten getoond worden, voor opties, project opties en voor alerts. Via de toolbar heb je snel toegang tot de meeste tools. - 3. Workplace switcher
De workplace switcher is niet op alle tabbladen aanwezig maar wel van toepassing binnen veel tools en overzichten. De workplace switcher zorgt ervoor dat het hoofdscherm (main window) waar alle resultaten te zien zijn geswitched wordt naar een andere weergave. Vaak zal de workplace switcher je helpen wisselen tussen diverse tool-specifieke instellingen. - 4. Tree-based sitemap
Binnen de target tool, site map sectie is de linker kolom de “sitemap” welke weergegeven wordt als een boomstructuur. Via deze kolom navigeer je door alle gevonden assets. - 5. Detail window
Het detail window geeft meer informatie en mogelijkheden weer over de assets die geselecteerd zijn in de linker sitemap. - 6. Response / Request switcher
Deze switcher is alleen aanwezig op het “target” tabblad maar er zijn andere tabbladen met soortelijke switchers. Deze switchers geven je de mogelijkheid om delen van het hoofdvenster te wisselen in een andere weergave. Deze switcher wisselt dus tussen de details van de aanvraag (request) en de terugkoppeling (response) van de asset welke geselecteerd is in het “detail window”. - 7. Response / Request details
Deze weergave geeft inzichtelijk de details van de aanvragen (requests) en terugkoppelingen (responses).
Burp Suite Instellingen
Zoals al gezegd kent ieder tabblad (iedere tool) zijn eigen indeling en instellingen. Voordat we gaan werken met Burp Suite is het goed om alvast een aantal instellingen goed te zetten en op te slaan als configuratiebestand zodat deze settings bij een volgens project ingelezen kunnen worden. Het configuratiebestand voorkomt dat we elke keer alle settings opnieuw moeten optimaliseren. De volgende settings zou ik alvast goed instellen:
Laten we eerst eens een kijkje nemen naar de display settings (weergave instellingen). Deze instellingen bepalen hoe de resultaten er op het scherm uitzien. De display settings vindt je onder de “User Options” tab en vervolgens de “Display” tab. Hier kunnen we het lettertype en het formaat van de letters aanpassen. Ook kunnen dit aanpassen voor de “HTTP Message” displays. Vervolgens kunnen we instellen welke character sets er gebruikt moeten worden en of HTML rendering (zodat HTML gereconstrueerd wordt) aan moet staan. Ik verander hier meestal weinig. Dit zijn mijn settings:
Vervolgens wordt er onder “Project Options” – “Sessions” ingesteld hoe Burp Suite de zogenaamde “Cookie Jar” update. Default wordt de Cookie Jar geupdate door de Proxy en Spider tool te monitoren. Ik voeg hier altijd graag de “Scanner” tool aan toe:
Vervolgens vinden we de “logging” opties onder het “Misc” tabblad. Deze zet ik altijd aan voor de Proxy (afhankelijk van het project soms voor meer of voor alle tools):
Om te beginnen is dit alles. De overige opties zijn wat mij betreft prima en dus zijn we nu “good-to-go”.
Wil je zelf meer opties maken en deze opslaan in een configuratiebestand. Dit configuratie bestand kun je opslaan en later weer inlezen via het hoofdmenu – Burp – User Options / Project Options – Save User / Project Options.
Burp Suite Voorbeeld
Dan komt alles neer op het gebruik van de tool. Burp Suite kan ingezet worden voor legio testen en vele soorten “aanvallen”. Het is essentieel om te weten wat je doet en wat een bepaalde aanval inhoudt en welke opties je hierbij kunt instellen en gebruiken. We hebben het in deze blog nog niet veel over webapp testing gehad (dat gaat zeker nog veranderen).
In dit voorbeeld gaan we gebruik maken van de Burp Suite Proxy. Bij het starten van Burp Suite wordt de proxy listener al gestart. De proxy luistert standaard op poort 8080. Het ip adres van de Burp Suite proxy is 192.168.178.170. Laten we nu de browser (Google Chrome) van de host eerst instellen op de proxy te gebruiken. Ga naar opties – Systeem – Proxyinstellingen openen. Google Chome gebruikt de Internet Explorer instellingen. Klik nu op LAN-Instellingen en vul de proxy server in:
De proxy luistert echter alleen nog op zijn local adres (127.0.0.1) maar moet ook luisteren op 192.168.178.170. Om dit in te stellen voegen we een Proxy Listener toe via de Proxy – Options tab om te luisteren naar de juiste interface:
De proxy is nu actief en functioneert voor HTTP aanvragen. Laten we ervoor zorgen dat hij ook functioneert voor HTTPS aanvragen.
Om dit te doen navigeren we op de host naar de Burp Suite host http://192.168.178.170:8080 alwaar we het certificaat kunnen downloaden:
Als we het certificaat gedownload hebben (dat kan overigen ook in Burp Suite via de Proxy options – Import / Export CA certificate) dan kunnen we deze inlezen. Deze lezen we in bij de “Trusted Root CA” store ofwel in het Nederlands, de “Vertrouwde Basiscertificeringsinstanties”.
Nadat het certificaat geïmporteerd is kunnen we ook prima HTTPS sites benaderen zonder nare meldingen via de Burp Suite proxy.
Het kan zijn dat er additionele stappen nodig zijn om alle browsers meteen te laten werken. In Firefox zal het certificaat geïmporteerd moeten worden in de certificate manager van Firefox omdat deze niet samenwerkt met de Windows CA store.
Let op: als het niet werkt controleer dan of “Intercept” wel uit staat. Als deze setting nog aan staat dan kun je elke actie bewerken alvorens je deze weer doorstuurt. De browser pauzeert dan omdat deze wacht op een actie. Als je deze actie niet gaat maken hou je dus een wit browserscherm welke blijft laden.
Nu de proxy functioneert kunnen we aan de slag met het hacken van een login authenticatieformulier. We hacken dit authenticatieformulier door het afvuren van een aantal payloads.
We proberen dit in mijn testomgeving waarbij we een WordPress authenticatieformulier proberen te exploiten.
Laten we eerst de WordPress backend openen en vervolgens onder de Burp Suite proxy settings de “Intercept” optie aanzetten waardoor we elke aanvraag kunnen zien en eventueel modificeren.
Als we goed kijken kunnen we de login request zien. Nu we de login request hebben sturen we deze vanuit Intercept door naar de Burp Intruder.
De Burp Intruder zal het IP adres en het poortnummer achterhalen uit de Intercept data. Als Burp Intruder de gegevens fout verzameld heeft kun je deze altijd aanpassen.
Op de “Positions” tab gaan we velden selecteren die we nodig hebben voor het kraken. Burp Intruder zal zelf een voorstel doen maar aangezien we de posities zelf willen bepalen gebruiken we de “clear” button en selecteren we de gebruikersnaam en het wachtwoord.
Een belangrijke vervolgstap is het selecteren van de juiste attack type. We kunnen kiezen voor de volgende soorten attack types:
- Sniper – Een enkele set van payloads waarbij elke payload op elke positie wordt toegepast.
- Cluster Bomb – Meerdere payload setjes. Voor elke positie zijn er verschillende payload setjes te configureren.
- Pitch Fork – Meerdere payload setjes waarbij er ook verschillende payload setjes per positie te configureren zijn. Burp Suite zal elke payload set tegelijkertijd doorlopen.
- Battering Ram – Een enkele set van payloads welke op elke positie uitgevoerd wordt.
Wij kiezen voor het gemak voor de “cluster bomb” en selecteren vervolgens het gebruikersnaam en het wachtwoord veld (met de “Add” button).
Nu moeten we voor elke positie een payload set selecteren (tabblad “Payloads”). We hebben 2 posities en moeten dus ook 2 payloads setjes maken. Laten we bij payload set nummer 1 een woordenlijst toevoegen (simple list) waarin veelgebruikte gebruikersnamen staan zoals: admin, administrator, beheerder, gast, guest, temp, sysadmin, sys, root, login en logon.
Bij de 2e payload set selecteren we een lijst met wachtwoorden. Je kunt hier kiezen voor een default wachtwoordenlijst of je kunt er zelf een samenstellen. De Kali woordenlijst is te vinden in “/usr/share/wordlist/rockyou.txt”.
Zoals je in bovenstaande afbeelding ziet zullen er 157.788.312 combinaties geprobeerd worden. Dit hele proces zal dan ook een hele tijd duren. Voor deze post heb ik slechts 9 wachtwoorden gebruikt wat resulteert in 99 mogelijkheden.
Tenslotte gaan we naar de “opties” tab waar we moeten controleren dat onder “Attack Results” de opties “store requests” en “store responses” aangevinkt staan zodat we de statussen kunnen vergelijken van de verschillende login attempts.
We zijn klaar om de aanval uit te voeren. We gaan in het hoofdmenu naar “intruder” en kiezen voor “Start attack”.
Als de aanval klaar is kunnen we de resultaten vergelijken. We moeten 1 kolom goed in de gaten houden, namelijk de “Length” kolom. Alle errors zullen eenzelfde message retourneren en zijn juist daarom allemaal even groot. De “succesfull login” retourmessage zal andere content bevatten en daarom een ander formaat hebben. Onderstaande afbeelding laat zien dat de combinatie “sysadmin” met het wachtwoord “hallo” de juiste combinatie was.
Conclusie
Hopelijk heb ik je in deze post kunnen laten zien dat Burp Suite een zeer krachtige applicatie is voor het testen van webapplicaties. In deze post hebben we het randje van de ijsberg laten zien, maar de mogelijkheden met Burp Suite zijn legio. Burp Suite is niet voor niets een van de meest gebruikte applicatie om WebApp security te testen. Het enige nadeel is dat het volldige potentieel van de applicatie pas echt tot zijn recht komt in de professional versie en die versie is jaarlijks aardig prijzig en feitelijk alleen toereikend voor de security tester die regelmatig webapp security test.
Later gaan we zeker kijken naar andere functionaliteiten van Burp Suite. Voor nu hoop ik dat je deze post interessant genoeg gevonden hebt om mij een like’je te geven of om deze post te delen. Schrijven vind ik leuk maar ik vind het nog veel leuker als jullie ook laten zien dat jullie mijn posts leuk vinden.
Hartelijk dank!