Så kommer du igång med Burp Suite

BURPNä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:

Burp Suite free startup

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:

Burp Suite Free Edition

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.

Damn Vulnerable Web Application DVWA

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: Burp Suite Proxy settings

Och så här ser det ut i Firefox när vi ställt in enligt ovan:

Firefox Proxy Settings

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:

Burp Suite Proxy Request

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.

test123

burp http request

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:

Burp Suite intruder positions

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:

payload positions

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:

Burp Suite payload simple list

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.

Behöver Er organisation hjälp med tekniska IT-säkerhetsgranskningar såsom denna? Kontakta Triop AB

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.

XSS response

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:

XSS alert dialog

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *