Så kommer du igång med Burp Suite
När det gäller penetrationstest av webbtjänster så är Burp Suite mitt favoritval. Burp Suite är utvecklat i Java och kommer från företaget PortSwigger Web Security.
Runt Burp Suite så finnes det även ett helt ekosystem byggt runt plugin-ramverket. Även om det är lättast att skapa plugins i Java så går det även i andra språk såsom Python.
Det finns att ladda hem en gratis-version för test samt en betal-version som kostar runt 3000kr, och värt varenda krona om du frågar mig. Och värt att nämna att jag även använder mig av Charles Proxy, men det är när jag ska undersöka API:er.
Ladda hem Burp Suite
Surfa till https://portswigger.net/burp/downloadfree.html och ladda hem Jar-filen. När denna artikel skrivs så är senaste versionen:
burpsuite_free_v1.7.03.jar
Starta Burp
För att starta upp Burp Suite så måste du ha Java installerat. Du kan se om du har java installerat genom att köra cmd.exe eller motsvarande kommandoprompt på följande sätt:
$ java -version java version "1.8.0_71" Java(TM) SE Runtime Environment (build 1.8.0_71-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)
Om du inte har java 1.6 eller senare så kan du ladda hem Java JRE här. Sedan är det bara att skriva
$ java -jar burpsuite_free_v1.7.03.jar
Skulle du få problem med att Burp krashar eller liknande så kan du testa att öka minnesstorleken:
$ java -XX:MaxPermSize=1G -Xmx1g -Xms1g -jar burpsuite_free_v1.7.03.jar
Sedan så startar Burp förhoppningsvis upp och du får se ett dialogfönster liknande detta:
Här kan vi jobba vidare på ett tidigare projekt eller skapa ett nytt. Även om du väljer Temporary project så kan vi skapa och fortsätta projektet vid ett senare tillfälle.
Klicka på Next och sedan Start Burp när nästa fönster dyker upp. Och sedan bör du se huvudskärmen i Burp som ser ut enligt följande:
Varje flik ovan representerar olika funktioner:
- Target
- Proxy
- Spider
- Scanner
- Decoder
- Comparer
- Extender
- Intruder
- Repeater
- Sequencer
- Alerts
- Project options
- User options
De som används mestadels är Target, Proxy samt Intruder.
Identifiera brister
Nu när vi lyckats att ladda hem och starta Burp är det dags att försöka hitta vår första sårbarhet. Vi kan givetvis försöka på någon av sajterna som återfinnes på Bugcrowd eller Hackerone men det brukar inte vara helt trivialt. Därför har jag installerat Damn Vulnerable Web Application (DVWA) under XAMPP och VirtualBox.
Om du inte orkar installera VirtualBox, DVWA och XAMPP så kan du alltid använda dig av Google Gruyere.
Men innan vi börjar att identifiera brister så måste vi ställa in så vår webbläsare går via den proxy som finns inbyggt i Burp Suite.
Att ställa in en proxy i sin webbläsare fungerar lite olika beroende på vilken webbläsare det är. För att se vilka inställningar du ska göra så kan du klicka på Proxy och sedan Options i Burp Suite. Där står det under Interface:
Och så här ser det ut i Firefox när vi ställt in enligt ovan:
Nu är det lite knepigt. För observera att om vi nu försöker surfa någonstans med Firefox så kommer det inte att fungera. Och om vi går tillbaka till Burp Suite så ser vi att texten under Proxy samt Intercept ändrat färg, det betyder att det hänt något där.
Så här ser det ut när Burp Suite fångat upp en HTTP-förfrågan och väntar på att vi ska göra något:
Vi får här fyra val: Forward, Drop, Intercept is on samt Action. Under knappen Action kan vi välja att göra ytterligare saker. För vårat syfte just nu att testa några enskilda inmatningsfält så trycker vi på knappen ”Intercept is on”, för då slipper vi göra ett val på varje förfrågan. Dock så sparas ändå alla http-förfrågningar under Proxy->HTTP history.
Reflected Cross Site Scripting (XSS)
Testet vi ska utföra nu är enkelt. Vi fyller i värdet test123 i ett formulär och tittar sedan hur HTTP-förfrågan ser ut när den går iväg till servern.
Vi kan även se att test123 skickas tillbaka från servern. Så nästa steg är att använda Burp till att automatiskt testa om just name= värdet går att utnyttja.
Så nästa steg är att högerklicka och välja Send to Intruder. Då börjar texten under fliken Intruder att börja lysa orange vilket då indikerar att något hänt där, så vi klickar därmed på Intruder-fliken samt vidare på 2:an och Positions på följande sätt:
Det som nu är intressant är att vi ska undersöka vilka Payload Positions vi behöver. Vi kan alltid börja med en payload och då är det lättast att klicka på Clear § till höger. Och sedan markera texten test123 samt trycka på Add §. Då kommer det att se ut så här:
Det kan vara lätt nu att trycka på Start Attack, men det ska vi inte göra. Utan vi klickar på nästa tabb där det står Payloads, för där väljer vi nu vad vi ska skicka för värden istället för test123.
Om vi nu hade betalat för Burp Suite så hade vi fått en mängd listor färdiga med olika XSS-tester och dylikt men dessa payload-listor går lika bra att ladda hem gratis från Github och Fuzzdb-projektet (xss-rsnake.txt exempelvis) eller denna fil.
Eftersom vi just nu vet att det är en Cross site scripting-sårbarhet (XSS) vi söker efter så behöver vi således enbart XSS-payloads. Och när vi sedan laddat in payloads och rensat lite så ser det ut ungefär som följande:
Sedan är det bara att trycka på Start attack. Om du tycker att det tar lång tid så kan du klicka på Options-fliken och sedan ändra under Pause before retry, som är standard 2000ms (2 sekunder). Ställ ner den till 200ms exempelvis.
Det svåra nu är att veta om någon av våra attacker lyckats eller ej. Men det finns några knep som underlättar det arbetet. Dels så finns det plugins såsom XssValidator men vi ska nu försöka avgöra själva om attacken lyckats.
Det vi kan titta efter är några saker:
- Status – Är koden 200 eller något annat som indikerar på att vår payload gick igenom.
- Length – Om vi har en lång payload och vi får ett långt response så kan det indikera på att vår xss var lyckad.
- Filter – Denna funktion är användbar. Går även att skriva negativa sökningar
Annars så är det bara att kontrollera html-källkoden och se om vår payload finnes med ofiltrerad. Samt så kan vi högerklicka och välja Show response in browser.
Väljer vi menyvalet Show response in browser och kopierar URL:en och klistrar sedan in den i vår webbläsare som använder Burp som proxy så ser vi följande:
Bingo! Vi lyckades. Vi har i denna guide enbart tittat på ungefär 5% av all funktionalitet som återfinnes i Burp Suite. Så jag rekommenderar verkligen att testa samtliga funktioner och hur dessa kan hjälpa dig att identifiera nya säkerhetsbrister på webbsidor, appar eller API:er.