Sec24 – Cross Site Request Forgery

Av: Oscar Andersson, Sec24, 2013-01-06

OBS:  Följande guide är för utbildningssyfte enbart och får absolut inte användas för olagliga ändamål.

Denna guide utgår ifrån att du har satt upp en DVWA – Damn Vulnerable Web Application och nu är ansluten till denna. Vet du inte hur du gör är det bara att följa denna guide. Sätta upp en testmiljö.

När du väl är inloggad börjar du med att trycka på fliken DVWA Security. Här kan du välja vilken säkerhetsnivå hemsidan ska ha. I den här introduktionsguiden sätter vi säkerhetsnivån till low och trycker på submit.

Gå nu in i fliken CSRF och byt lösenordet till något valfritt och tryck på change. Jag valde test123. 

CSRF 4

Om det lyckades ska det stå “Password Changed” under knappen.

Notera nu vad som händer i URL-fönstret.

CSRF 1

 

Det är password_new=test123&password_conf=test123 som är intressant för oss. Det här är klassisk implementering av osäker kod då det dels skickas som HTTP, inte HTTPS, vilket innebär att en hackare kan läsa informationen i klartext. Vårt standardtest kontrollerar detta och flaggar fel som “User credentials are sent in clear text“. Finns mer att läsa under Säkerhetsbrister. Hackaren kan även manipulera URL-strängen via adressfältet eller via curl som vi ska visa nedan. 

Vi börjar med adressfältet då det är det enklaste. Det enda du behöver göra är att byta ut test123 mot ett nytt lösenord. Jag väljer att byta ut lösenordet till control.

Blir enligt följande:

password_new=control&password_conf=control

Full URL:

http://192.168.1.57/dvwa/vulnerabilities/csrf/?password_new=control&password_conf=control&Change=Change#

Tryck sedan enter och logga ut för att se att det fungerade.

Om du gjort rätt så går det att logga in med de nya uppgifterna. Spara länken du använde för att byta lösenord så ska vi nu gå igenom hur en hackare kan använda sig av programmet curl för att uppnå samma resultat.

Kontrollera att security i DVWA fortfarande är low och gå sedan in på XSS reflected. För att läsa mer om Cross-site scripting (XSS) klicka här. Under rubriken XSS Reflected finns där även en guide. Självklart testar vårt standardtest även mot detta.

Skriv in följande script i rutan, använd Firefox:

<script>alert(document.cookie)</script>

CSRF 2

 

Skriv upp hela outputen. I mitt fall: security=low; PHPSESSID=u5685vfhauvj701ub0spug5tp5

Öppna nu upp notepad eller liknande textredigerare på datorn.

Klistra in följande text:

curl –cookie “” –location “”

Klistra nu in cookies mellan citationstecken efter –cookie och klistra in URL-en vi sparat mellan citationstecken efter –location.

Min kod ser ut enligt följande:

curl –cookie “security=low; PHPSESSID=u5685vfhauvj701ub0spug5tp5” –location “http://192.168.1.57/dvwa/vulnerabilities/csrf/?password_new=control&password_conf=control&Change=Change#”

CSRF 3

Byt nu ut password till något nytt. Jag byter det nu till abc123.

curl –cookie “security=low; PHPSESSID=u5685vfhauvj701ub0spug5tp5” –location “http://192.168.1.57/dvwa/vulnerabilities/csrf/?password_new=abc123&password_conf=abc123&Change=Change#”

Om du använder Backtrack kan du köra Curl direkt från terminalen men använder du Windows eller ett annat operativsystem finns programmet att hämta här.

Använder du Windowsversionen ska du spara ner zip-filen och unzippa den på valfri plats. Öppna därefter upp cmd som administratör. I Windows 7 gör du detta genom att högerklicka och välja “Kör som administratör”.

Använd sedan cd för att navigera till mappen där curl.exe finns.

I mitt fall blev kommandona:

G:

cd curl

Vill du sedan hacka i fräsig grön färg så skriver du color A följt av cls för att dölja spåren. 

Kopiera nu in koden i CMD fönstret och kör kommandot.

CSRF 5

Om allt går vägen ser du nu koden för hemsidan. Högerklicka i CMD fönstret och välj Sök.

Här skriver vi in “Password Changed” som det stod när vi ändrade lösenordet första gången.

CSRF 6

Hittar vi password changed i texten loggar vi ut och testar med lösenordet vi specificerade. Om allt gått vägen kan du nu logga in som admin med det lösenordet. Använder du Linux kan du köra följande kommando:

curl –cookie “security=low; PHPSESSID=u5685vfhauvj701ub0spug5tp5” –location “http://192.168.1.57/dvwa/vulnerabilities/csrf/?password_new=abc123&password_conf=abc123&Change=Change#” | grep “Password Changed” | tee curl.txt