42
Webbsäkerhet för IT-tekniker VT2013 Johan Leitet johan.leitet.se

Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Webbsäkerhet för IT-tekniker VT2013

Johan Leitet

johan.leitet.se

Page 2: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Dagens agenda

• Klient/server-arkitektur, attackvektorer

• HTTPS

• Attackvektorer, klientsida

- Cross-site-scripting

- Session-hijacking

- CSRF

- Vikten av validering

- Phishing

- Privacy

• Attackvektorer, serversida

- SQL-injections

- Lösenordshantering

- SPAM

Page 3: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Klient-/serverarkitekturen

Webbserver Klient

Page 4: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Serverarkitekturen, Attackvektorer

Webbserver

Databas

Externa servrar

Page 5: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Klientarkitekturen, Attackvektorer

Plugin Fysisk

säkerhet

Övriga risker:

Page 6: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

HTTPS

:80

:443

???

Hela HTTP-

meddelandet

krypteras

Hallå Kalle! Läget?

%€SD€236! 3&"#4 6€"

Page 7: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Symmetrisk kryptering

"Ett hemligt meddelande"

"Ett hemligt meddelande"

"SF%&##__fgd)(=09643774"

Kryptering

Sessionsnyckel

Dekryptering

Sessionsnyckel

Page 8: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Asymmetrisk kryptering

"Ett hemligt meddelande"

"Ett hemligt meddelande"

"LK/%ds135/&#12€GNBGD"

Kryptering

Publik nyckel

Dekryptering

Privat nyckel

Page 9: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

HTTPS, flöde

Anrop, https, :443,

random:#€%RFDG

Certifikat med publik nyckel,

random:€#€TFX1

Sessionsnyckel krypterad med publik nyckel

Meddelande krypterat med sessionsnyckel

Meddelande krypterat med sessionsnyckel

...

Page 10: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

HTTPS

Page 11: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Klientsideattacker

Klient • XSS

• Session hijacking

• CSRF

• Privacy attacker

• Click-jacking

• Phishing

• Attacker riktade mot

tredjepartsprogramvara

• ...

Page 12: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Klientsideskript (javascript)

Skriven kod som talar om för

webbläsaren vad den ska göra.

Idag: Uteslutande JavaScript

Hade förr ryktet om sig att vara

enkelt och ”inte ett riktigt

programmeringsspråk”

AJAX

Dynamiskt förändra en webbsida

Reagera på händelser

Kontrollera data innan den skickas till servern

Lagra data lokalt på klienten

Information om klienten

Geolocation

Drag and Drop

Ljud/Video-kontroll

Canvas

Page 13: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Eventuella problem

• Koden är publik

• ”Utvecklare” som förlitar sig på klientsidans kod

- Vid validering

- Vid inloggningsförfarande

- För att stoppa användaren från att genomföra handlingar

• Ajax-applikationer ökar angreppsytan

• Nya API:er/ökad komplexitet ökar angreppsytan (HTML5)

• Luckor i webbläsarimplementationen

• Denial-of-Service-problem (DOS-attack)

• Cross-site Scripting (XSS)

Page 14: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

XSS – Cross Site Scripting

XSS går i korthet ut på att en attackerare får sin JavaScript-kod att komma ifrån en

av användaren betrodd server.

Page 15: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

XSS

text = text.replace(/</g, ”&lt;”).replace(/>/g, ”&gt;”);

Page 16: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

XSS

• Persistent XSS

• Ickepersistent XSS

Din sökning efter "Kalle Anka" resulterade inte i något resultat.

Page 17: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Cookies

Cookies (kakor) är små textmeddelanden som sparas på klienten vid besök på

webbsidor som väljer att skapa och spara cookies.

Det är bara den sajt som skapat cookien som kan läsa ut information från denna.

Page 18: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Sessioner

Sessioner används för att webbservern ska kunna ”minnas” dig som användare.

Sessions-idn sparas ofta som

kakor på klienten för att

servern ska kunna hålla reda

på besökarna av sidan.

Page 19: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Session hijacking

sessionID = a12d sessionID = a12d

Page 20: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Vikten av validering/filtrering

Det stora problemet vid session hijacking-attacken i demot är att formuläret är oskyddat. Inskickad data

valideras inte och utdata filtreras inte.

Validate input, filter output!

Page 21: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

http://www.val.se/val/val2010/statistik/index.html#handskrivna

Page 22: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Samy is my hero

<div id=mycode style="BACKGROUND: url('java

script:eval(document.all.mycode.expr)')" expr="var

B=String.fromCharCode(34);var

A=String.fromCharCode(39);function g(){var C;try{var

D=document.body.createTextRange();C=D.htmlText}catch(e){}if

(C){return C}else …

Page 23: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

White listing vs. Black listing

Black listing-filter:

/^[^´”]$/

Undvik att ersätta farliga

tecken. Det finns alltid vägar

runt detta.

Validera all indata och filtrera utdata!

White listing-filter:

/^[0-9A-ZÅÄÖa-zåäö_]$/

Tala explicit om vilka tecken

som får anges. Mycket bättre

Validering av indata på klienten spelar ingen roll. Detta

måste göras på servern.

Filtrering av utdata kan man eventuellt tänka sig göra

på klienten.

Page 24: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

CSRF – Cross-Site Request Forgery

Få användaren att göra något på en annan site utan att veta om det.

• Ändra admininställningar på sin blogg

• Inloggad mot din router?

• Boka resor

• Påverka e-handlares "Rekommenderat för dig"

• Påverka sökhistoriken

• ....

Page 25: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Klientvalidering / Servervalidering

KLIENT SERVER

skicka

Ett klientskript

validerar

FEL!

OK Servern validerar

OK

Behandla data

Page 26: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Privacy

https://panopticlick.eff.org/

Page 27: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Phishing

Webbmailanvandare

Ditt konto har blivit matt. For att ateraktivera ditt konto maste du

aktivera ditt konto pa adressen

http://lnuaktivera.fulsite.com/?key=12f45sd543

Halsningar

Administratoren

Page 28: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Serverattacker

• SQL-injections

• (D)DoS-attacker

• ....

Webbserver

Page 29: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

SQL-injections

Page 30: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

SQL-injections

select * from users where username=’’; drop table users; ’

select * from users where username=’INMATAT VÄRDE’

Hur undvika?

1) Använd inte inline-SQL. Använd istället:

• Lagrade procedurer

• Parametriserade frågor

2) Om du måste använda inline-SQL. Validera, validera, validera

Page 31: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60
Page 32: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Egen autentisiering?

1) Behöver du ha egen inlogging?

Räcker det kanske med Facebook, Google, Twitter?

Om du måste ha inloggning:

1) Tala om för användaren hur uppgifterna hanteras!

2) Tvinga inte användaren att utforma lösenordet på ett speciellt sätt, men informera gärna om

vikten av ett starkt lösenord.

(Man kan tänka sig minsta längd, typ 6 tecken.)

3) Tillåt specialtecken och lååååånga lösenord.

4) Var noggrann vid implementationen.

Ditt lösenord

Page 33: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Lösenordshantering

Om olyckan mot förmodan är framme. Ha ryggen fri.

• Se till att bara spara hashade, saltade lösenord.

• Spara aldrig användarens lösenord så att detta

går att återge.

Page 34: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Rainbow tables (ordböcker)

Lösenord Förekomst per 92084

super123 996

hejsan 141

123456 118

111

hejhej 102

bajskorv 96

sommar 93

hemligt 69

blomma 60

bloggtoppen 60

Page 35: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Registrering

Användaren registrerar

lösenord (sommar) En slumpad salt skapas.

Exempelvis: hj234KLsd

Addera användarens

lösenord till saltet.

hj234KLsdsommar

Hasha resultatet

hj234KLsdsommar

2d86c4246f3c0eb516628bf324d6b9a

Spara hashen + saltet i

databasen

Page 36: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Inloggning

Användaren anger

användarnamn och

lösenord

Slå upp saltet som används

för användaren

Addera det lösenord

användaren angav till

saltet.

Hasha resultatet

Kontrollera om resultatet är

samma som det som står i

databasen

Page 37: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Gör världen lite säkrare

Kära webbplatsägare

Nyligen registrerade jag ett konto på er tjänst. Det verkar dock inte bättre än att ni sparat mitt

lösenord i klartext vilket gör att dessa uppgifter kan komma på vift om någon illasinnad hittar en

säkerhetslucka i ert system. Att spara lösenord på detta sätt bryter i alla avseende mot god sed och

det är definitivt något ni bör se över så fort som möjligt.

Om du som läser detta mail inte har direkt insyn i hur systemet är utvecklat så vänligen

vidarebefordra detta mail till de som har denna insyn.

Vänliga hälsningar

/ Ellen Nu

"

Page 38: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Behövs lösenord?

http://notes.xoxco.com/post/27999787765/is-it-time-for-password-less-login

Page 39: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Skydda dig själv

• Använd aldrig samma lösenord på mer än en sajt!

• Se över säkerheten på viktiga sajter så som Google, Facebook etc.

Använd tvåstegsautentiseringar.

Page 40: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

2-stegsverifiering (multifaktorverifiering)

Något man vet

Något man har

Page 41: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

SPAM

Webbsidor är en perfekt rekryteringsplats där spambots kan rekrytera mailadresser.

<a href=”mailto:[email protected]”>Mailadress till Johan</a>

Maila Johan på: johan.leitet[snabel-a här]lnu.se

Eller använd ett kontaktformulär…

[email protected]

Page 42: Webbsäkerhetcoursepress.lnu.se/kurs/natverkssakerhet/files/2013... · super123 996 hejsan 141 123456 118 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

SPAM via webbsidan

Captcha Completely Automated Public Turing test to tell Computers

and Humans Apart

Effektivt sätt att stoppa agenter från att registrera sig på

din sajt eller kommentera i din blogg.