Sec24 – Cross-site scripting (XSS)

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

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

Definition av Cross-site scripting (XSS), eller webbkodsinjektion, från Wikipedia:

“Cross site scripting, XSS, är ett datorrelaterat säkerhetsproblem. Ofta handlar det om att stjäla information som annars inte visas, eller förstöra en webbsidas utseende.

Ett exempel på hur XSS kan förstöra en sidas utseende vore om ett fält där det är meningen att text ska skrivas inte är skyddat mot HTML-kod. Då kan användaren lägga in stora bilder eller ramar som tar upp plats och förstör utseendet på sidan. Även länkar till skadliga sidor kan då planteras där.

XSS kan också användas för att stjäla information från andra användare. Exempelvis kan vi tänka oss en community där man kan skicka meddelanden till varandra. Om sajten inte är skyddad mot XSS så kan användaren X skicka ett meddelande till användare Y och få honom att klicka på en länk som via javascript automatiskt skickar hemlig information om användaren Y till användaren X. Med den informationen kan exempelvis användare X logga in som användare Y och därmed förstöra.”

Cross-site scripting som utfördes på webbplatser stod för ungefär 84% av alla säkerhetshål som dokumenterades av Symantec 2007.

Cross-site scripting (XSS) brukar delas in i två huvudkategorier. XSS Persistent (XSS Stored eller lagrad) och XSS ickepersistent (XSS Reflected eller Non-persistent). Nedan följer definitioner skriva av Patrik Corneliusson, styrelsemedlem på OWASP (Open Web Application Security Project) Göteborg.

Persistent XSS handlar om att säkerhetsproblemet är lagrat på servern, exempelvis i en databas. Om vi tänker oss ett blogginlägg så körs XSS-attacken varje gång någon visar det aktuella blogginlägget. Ickepersistent XSS handlar om sådant som inte lagras på servern men där servern tar emot det inmatade värdet och skriver ut det igen på sidan utan att det hanteras och därmed öppnar för attacker, ofta genom querystrings.

Det finns även en tredje typ som är relativt okänd, kallad DOM Based XSS. DOM-XSS, eller DOMbaserad XSS handlar om värden som javascript läser och använder igen på sidan, utan att servern nödvändigtvis behöver vara inblandad. Detta gör att det är väldigt svårt för systemadministratörer att upptäcka attacker mot sajten eftersom attacken kan göras utan att någon data som verkar farlig skickas till servern. Det gör att de säkerhetsverktyg (brandväggar, IDS och IPS) man möjligen har för att stoppa attacker blir verkningslösa.

I menyn till vänster kan du nu välja antingen XSS Stored eller XSS Reflected beroende på vad du vill testa.