Sicurezza delle applicazioni web: protocollo HTTP

Documenti analoghi
Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

Attacchi Web - Introduzione alla sicurezza nelle applicazioni Web

Tito Flagella - Il protocollo HTTP

Web applications security: HTTP protocol

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

Ipertesto (testo + link a risorse)

Il protocollo HTTP. Caratteristiche del protocollo HTTP. Versioni del protocollo. Due tipologie di messaggi:

Programmazione in Rete

Applicazioni e protocolli a livello applicazione

Web e HTTP. path name. host name Realizzato da Roberto Savino.

WWW = URL + HTTP + HTML

Architetture Web Protocolli di Comunicazione

Web (1) Internet. Elementi di Sicurezza e Privatezza Lezione 9 Web Security (1) Chiara Braghin. chiara.braghin@unimi.it! 20/11/12. browser.

Applicazioni di rete 1

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 2

Assignment (1) - Varie

Elementi di Sicurezza e Privatezza Laboratorio 6 - Vulnerabilità di applicazioni Web (1) Chiara Braghin chiara.braghin@unimi.it!

Corso di Applicazioni Telematiche

Architetture Applicative Il Web

Architetture Applicative Il Web

Servizi di rete e web. Prof. Maurizio Naldi A.A. 2015/16

Tecnologie Web T Il protocollo HTTP

WWW = URL + HTTP + HTML

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

L'HyperText Transfer Protocol (HTTP)

Elementi di Sicurezza e Privatezza Lezione 12 Web Security

Il protocollo HTTP e HTTPS

Elementi di Sicurezza e Privatezza Lezione 11 Web Security. Chiara Braghin. Sicurezza Web?

Architettura dell Informazione

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Appunti di Sistemi A cura del prof. ing. Mario Catalano. Internet e il Web

Caratteristiche del protocollo HTTP. Il protocollo HTTP. Messaggi HTTP. Versioni del protocollo. Valeria Cardellini Università di Roma Tor Vergata

Lo strato di applicazione in Internet

Livello applicazione: protocollo HTTP, cookie, web cache

Introduzione. Java HTTP. G. Prencipe

PROTOCOLLI APPLICATIVI PER INTERNET

url uniform resource locator

Il Protocollo HTTP e la programmazione di estensioni Web

Metodologie Informatiche Applicate al Turismo

Protocolli applicativi basati su TCP/IP

Mantenimento dello stato

Protocolli applicativi: FTP

Telematica II 7. Introduzione ai protocolli applicativi

Applicazioni e protocolli a livello applicazione

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Capitolo 2 - parte 2. Corso Reti ed Applicazioni Mauro Campanella

Protocolli di strato applicazione

Lucidi a cura di Andrea Colombari, Carlo Drioli e Barbara Oliboni. Lezione 4

Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, Pisa

D B M G Il linguaggio HTML

Stack protocolli TCP/IP

@2011 Politecnico di Torino 1

Protocollo HTTP. Alessandro Sorato

Fondamenti di Internet e Reti

Informatica per Umanisti Antonio Lieto. Parte IV Le reti informatiche, Internet e il Web (Come colleghiamo i computer?)

Real Time Streaming Protocol. Akshat Sikarwar - Columbia University Traduzione e adattamento di Massimo De Santo, Università di Salerno

Web e Server-side Computing: Richiami sulla tecnologia Web e FORM HTML

World Wide Web. Web e Server-side Computing: Richiami sulla tecnologia Web e FORM HTML. Il Successo del Web. Protocolli di accesso

Protocolli strato applicazione in Internet

Protocolli per il Web. Impianti Informatici. Protocolli applicativi

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Il documento HTML. Funzionamento del Web. Messaggio HTTP

Metodologie Informatiche Applicate al Turismo

World Wide Web. Prof. Filippo Lanubile

Mezzi trasmissivi. Twisted Pair (TP) Due cavi di rame isolati ed intrecciati

Database & WWW. Basi di dati Architetture e linee di evoluzione P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone

Reti di Calcolatori:

GRUPPO DOMANDE N. 1. Quesito n. 1 Descrivere sinteticamente le finalità e le modalità d uso dei seguenti comandi UNIX / LINUX: LS, KILL, PS.

Livello applicativo. Obiettivi specifici: Protocolli specifici: Obiettivi generali:

Il protocollo HTTP. Corso di Applicazioni Telematiche. A.A Lezione n.2 Prof. Roberto Canonico

Dal protocollo IP ai livelli superiori

Applicazioni Web 2013/14

Progettazione Siti Web: Web

Laboratorio di Basi di Dati

Prova in itinere Esempio d esame 1

INFORMATICA DISTRIBUITA. lez 6 World Wide Web (cont)

Session Management. Corrado Aaron Visaggio Sicurezza delle Reti e dei Sistemi Software A.A. 2012/2013. Session Management 1

SMS-Bulk Gateway interfaccia HTTP

Programma del Corso. Laboratorio

Difesa perimetrale di una rete

Luca Tesei. Laboratorio di Sviluppo Web: Le Basi. Modulo IFTS. Fermo 31/03, 03/04, 07/ Prof. Luca Tesei Università di Camerino 1

Livello applicazione: protocollo HTTP

Applicazioni Web 2014/15

ORGANIZZAZIONE DI SISTEMI OPERATIVI E RETI

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Applicazioni Web, HTTP e REST. Matteo Vaccari Milano XP User Group, 3 ottobre 2007

Esercitazione 8. Basi di dati e web

appunti delle lezioni Architetture client/server: applicazioni client

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Internet Architettura del www

Protocolli di applicazione

Posta Elettronica e Web

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Esempi di applicazioni internet. WEB Trasferimento File Posta Elettronica Sistema dei nomi di dominio (DNS)

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

Protocolli strato applicazione in Internet

Transcript:

Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2010/2011 Sicurezza delle applicazioni web: protocollo HTTP Alessandro Reina, Aristide Fattori 05 Maggio 2011 Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 1 / 26

Sommario 1 Introduzione 2 Introduzione al protocollo HTTP 3 Sessioni HTTP 4 Analisi e manipolazione di traffico HTTP 5 Configurazione Proxy Http Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 2 / 26

Sommario 1 Introduzione 2 Introduzione al protocollo HTTP 3 Sessioni HTTP 4 Analisi e manipolazione di traffico HTTP 5 Configurazione Proxy Http Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 2 / 26

Sommario 1 Introduzione 2 Introduzione al protocollo HTTP 3 Sessioni HTTP 4 Analisi e manipolazione di traffico HTTP 5 Configurazione Proxy Http Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 2 / 26

Sommario 1 Introduzione 2 Introduzione al protocollo HTTP 3 Sessioni HTTP 4 Analisi e manipolazione di traffico HTTP 5 Configurazione Proxy Http Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 2 / 26

Sommario 1 Introduzione 2 Introduzione al protocollo HTTP 3 Sessioni HTTP 4 Analisi e manipolazione di traffico HTTP 5 Configurazione Proxy Http Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 2 / 26

Architettura infrastruttura web web browser page request server response spawn new worker web server spawn new worker interpreter HTML script query DB Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 3 / 26

HTTP: HyperText Transfer Protocol elemento fondamentale su cui si basa il Web protocollo di livello applicazione usato per trasferire dati tra client ed web server protocollo text-based, stateless in uso le versioni 1.0 (RFC 1945) e 1.1 (RFC 2616) incapsulato all interno di connessioni TCP, di default su porta 80 obiettivo originale: trasmissione di documenti ed elementi multimediali oggi utilizzato anche per trasportare altre informazioni (e.g, SOAP) Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 4 / 26

Richiesta pagina http://www.example.com/test.html browser DNS server web server A? www.example.com A 123.45.67.89 GET /index.html HTTP/1.1 HTTP/1.1 200 OK Client server DNS il browser interroga un server DNS per ottenere l indirizzo IP del server web Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 5 / 26

Richiesta pagina http://www.example.com/test.html browser DNS server web server A? www.example.com A 123.45.67.89 GET /index.html HTTP/1.1 HTTP/1.1 200 OK Client server web il browser si collega alla porta TCP 80 del server e invia una richiesta HTTP Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 5 / 26

Richiesta pagina http://www.example.com/test.html browser DNS server web server A? www.example.com A 123.45.67.89 GET /index.html HTTP/1.1 HTTP/1.1 200 OK Client server web il server web processa la richiesta ricevuta e restituisce una riposta (e.g., la pagina HTML) Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 5 / 26

Richieste HTTP Struttura 1 request line (e.g., GET /index.html HTTP/1.1) 2 header (opzionali, e.g., User-Agent: Mozilla/5.0 (X11; U; Linux i686) 3 linea vuota 4 corpo del messaggio (opzionale) Note request line e header sono terminati da CRLF (carriage return + line feed: \r\n ) la linea vuota è formata da CRLF spesso le implementazioni sono piuttosto flessibili (e.g., richieste accettate anche con linee terminate dal solo LF) con HTTP 1.1 tutti gli header, tranne Host, sono opzionali Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 6 / 26

Esempio richiesta HTTP (GET) GET / HTTP/1.1 Host: securitytraps.no-ip.pl User-Agent: Mozilla/5.0... Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Proxy-Connection: keep-alive Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 7 / 26

Esempio richiesta HTTP (POST) POST /?d=pre HTTP/1.1 Host: securitytraps.no-ip.pl User-Agent: Mozilla/5.0... Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Proxy-Connection: keep-alive Referer: http://securitytraps.no-ip.pl/?d=pre Cookie: lang=en; PHPSESSID=iivcvpia24gtarfh1g3irsd471 Content-Type: application/x-www-form-urlencoded Content-Length: 29 pass=readonly%2c+sorry+%3b%3e Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 8 / 26

Risposte HTTP Struttura 1 status-line (e.g., HTTP/1.1 200 OK) 2 header (opzionali) (e.g., Server: Apache/2.2.14 (Ubuntu)) 3 linea vuota 4 corpo del messaggio (opzionale) Esempio HTTP/1.1 200 OK Date: Mon, 02 May 2011 20:19:15 GMT Server: Apache/2.2.14 (Ubuntu) X-Powered-By: PHP/5.3.2-1ubuntu4.8 Expires: Thu, 19 Nov 1981 08:52:00 GMT... Vary: Accept-Encoding Content-Type: text/html Content-Length: 3259 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"... Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 9 / 26

Passaggio parametri Metodo GET GET GET è un metodo per inviare dati usando il protocollo HTTP. Secondo la specifica del protocollo HTTP di questo metodo i dati sono preceduti dall indirizzo della pagina richiesta e un punto interrogativo. Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 10 / 26

Passaggio parametri Metodo GET l utente passa i dati all applicazione attraverso form HTML o tecnologie lato client tutto si deve tradurre in richieste HTTP Caso 1: passaggio parametri tramite form <form action="submit.php" method="get"> <input type="text" name="var1" /> <input type="hidden" name="var2" value="b" /> <input type="submit" value="invia" /> </form> Caso 2: parametri embedded nell URL <a href="submit.php?var1=a&var2=b">link</a> Richiesta corrispondente GET /submit.php?var1=a&var2=b HTTP/1.1 Host: www.example.com... Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 11 / 26

Passaggio parametri Metodo GET l utente passa i dati all applicazione attraverso form HTML o tecnologie lato client tutto si deve tradurre in richieste HTTP Caso 1: passaggio parametri tramite form <form action="submit.php" method="get"> <input type="text" name="var1" /> <input type="hidden" name="var2" value="b" /> <input type="submit" value="invia" /> </form> Caso 2: parametri embedded nell URL <a href="submit.php?var1=a&var2=b">link</a> Richiesta corrispondente GET /submit.php?var1=a&var2=b HTTP/1.1 Host: www.example.com... Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 11 / 26

Passaggio parametri Metodo POST POST POST è un metodo per inviare dati usando il protocollo HTTP. Secondo la specifica del protocollo HTTP i dati sono inviati dopo che tutti gli header sono stati inviati dal client al server. Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 12 / 26

Passaggio parametri Metodo POST Ex.1: parametri POST <form action="submit.php" method="post"> <input type="text" name="var1" /> <input type="text" name="var2" /> <input type="submit" value="invia" /> </form> POST /submit.php HTTP/1.1 Host: localhost... Content-Type: application/x-www-form-urlencoded Content-Length: 13 var1=a&var2=b Ex.2: GET + POST <form action="test.php?var3=c&var4=d" method="post"> <input type="text" name="var1" /> <input type="text" name="var2" /> <input type="submit" value="invia" /> </form> POST /test.php?var3=c&var4=d HTTP/1.1 Host: localhost... Content-Type: application/x-www-form-urlencoded Content-Length: 13 var1=a&var2=b Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 13 / 26

Passaggio parametri Metodo POST Ex.1: parametri POST <form action="submit.php" method="post"> <input type="text" name="var1" /> <input type="text" name="var2" /> <input type="submit" value="invia" /> </form> POST /submit.php HTTP/1.1 Host: localhost... Content-Type: application/x-www-form-urlencoded Content-Length: 13 var1=a&var2=b Ex.2: GET + POST <form action="test.php?var3=c&var4=d" method="post"> <input type="text" name="var1" /> <input type="text" name="var2" /> <input type="submit" value="invia" /> </form> POST /test.php?var3=c&var4=d HTTP/1.1 Host: localhost... Content-Type: application/x-www-form-urlencoded Content-Length: 13 var1=a&var2=b Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 13 / 26

Sessioni HTTP Introduzione Problema stateless: ogni richiesta è indipendente dalle precedenti le applicazioni web dinamiche richiedono il concetto di sessione come fare? Cookie Dati creati dal server e memorizzati sul client Trasmessi tra client e server utilizzando header HTTP Creazione di un cookie: Set-Cookie: param=value<crlf> Il client memorizza localmente l informazione e nelle richieste successive aggiunge: Cookie: param=value<crlf> cookie standardizzati in RFC 2109 ( HTTP State Management Mechanism ) Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 14 / 26

Sessioni HTTP Introduzione Problema stateless: ogni richiesta è indipendente dalle precedenti le applicazioni web dinamiche richiedono il concetto di sessione come fare? Cookie Dati creati dal server e memorizzati sul client Trasmessi tra client e server utilizzando header HTTP Creazione di un cookie: Set-Cookie: param=value<crlf> Il client memorizza localmente l informazione e nelle richieste successive aggiunge: Cookie: param=value<crlf> cookie standardizzati in RFC 2109 ( HTTP State Management Mechanism ) Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 14 / 26

Sessioni HTTP Una sessione permette di gestire l interazione tra client e server web (stateful). Componenti variabili di sessione (stato client-server) identificativo di sessione Caratteristiche informazioni e stato devono essere memorizzati ogni richiesta HTTP deve contenere un identificativo di sessione le sessioni devono avere un timeout Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 15 / 26

Sessioni HTTP Soluzioni il concetto di sessione è implementato dall applicazione web le informazioni di sessione devono essere passate tra client e server la trasmissione può avvenire tramite: 1 header HTTP (e.g., Cookie) 2 URL GET /page.php HTTP/1.1 Host: www.example.com... Cookie: sessionid=7456... http://www.example.com/page.php?sessionid=7456 3 payload HTTP <INPUT TYPE="hidden" NAME="sessionid" VALUE="7456"> Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 16 / 26

Sessioni: sicurezza sono un elemento critico (e.g., usate per autenticazione) rischio: bypass del sistema ti autenticazione! attacchi possibili: intercettazione SSL/TLS predizione strong pseudonumber brute force lunghezza id session fixation controllo IP, Referer; rigenerazione id;... devono essere valide per un periodo di tempo limitato! Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 17 / 26

Sessioni: sicurezza Session hijacking Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 18 / 26

Sessioni: sicurezza Session fixation Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 19 / 26

Analisi di traffico HTTP il payload HTTP è incapsulato all interno del segmento TCP (default: porta 80) comunicazione in chiaro osservazione del traffico HTTP per analisi black-box dell applicazione analisi tramite strumenti di sniffing (e.g., ngrep, tcpdump, wireshark,... ) questi strumenti non consentono l analisi di traffico TLS/SSL Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 20 / 26

Manipolazione di traffico HTTP Traffico HTTP Browser tradizionali (e.g., Firefox, Internet Explorer, wget) netcat curl... Traffico HTTPS due alternative: 1 estensioni browser (e.g., Firefox Tamper Data) 2 proxy HTTP Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 21 / 26

Proxy HTTP Un http proxy funziona come man-in-the-middle tra il browser e l applicazione target. modifica del traffico HTTP/HTTPS indipendenti dall applicazione intercettando traffico HTTPS, il browser notificherà l errore nella verifica del certificato SSL Alcuni proxy HTTP WebScarab - http://www.owasp.org/ Burp - http://portswigger.net/burp/ Paros - http://www.parosproxy.org/ Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 22 / 26

Configurazione Proxy Http Firefox/IceWeasel Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 23 / 26

Configurazione Proxy Http Firefox/IceWeasel Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 24 / 26

Burp- ProxyHttp Firefox/IceWeasel Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 25 / 26

Burp- ProxyHttp Firefox/IceWeasel Alessandro Reina, Aristide Fattori Protocollo HTTP 05 Maggio 2011 26 / 26