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

Il Protocollo HTTP e la programmazione di estensioni Web

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

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

Architetture Web Protocolli di Comunicazione

Protocolli applicativi: FTP

appunti delle lezioni Architetture client/server: applicazioni client

Protocollo HTTP. Alessandro Sorato

PROTOCOLLI APPLICATIVI PER INTERNET

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

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

Protocolli per il Web. Impianti Informatici. Protocolli applicativi

Programmazione in Rete

Architetture Applicative Il Web

Lezione 1 Introduzione

Elementi di Sicurezza e Privatezza Lezione 12 Web Security

Il protocollo HTTP e HTTPS

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

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

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

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

OSOR. Applicazioni di Rete

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Protocolli applicativi basati su TCP/IP

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

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

Hackathon Developers User Guide

Applicazioni e protocolli a livello applicazione

La sicurezza nel Web

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER

Stack protocolli TCP/IP

Posta Elettronica e Web

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

Telematica II 12. Esercitazione/Laboratorio 4

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

HTTP adaptation layer per generico protocollo di scambio dati

Introduzione alle applicazioni di rete

9 Febbraio 2015 Modulo 2

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

Internet Architettura del www

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

Connessione di reti private ad Internet. Fulvio Risso

Sicurezza dei sistemi e delle reti 1. Lezione VI: IPsec. IPsec. La suite TCP/IP. Mattia Monga. a.a. 2014/15

Inizializzazione degli Host. BOOTP e DHCP

Dal protocollo IP ai livelli superiori

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Tito Flagella - Il protocollo HTTP

Architettura client-server

SMS-Bulk Gateway interfaccia HTTP

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Corso LAMP. Linux Apache Mysql Php

Protezione delle informazioni in SMart esolutions

PHP e Structured Query Language

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Approfondimento di Marco Mulas

Cenni di programmazione distribuita in C++ Mauro Piccolo

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

Ipertesto. Reti e Web. Ipertesto. Ipertesto. Ipertestualità e multimedialità

La rete Internet. Percorso di Preparazione agli Studi di Ingegneria. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

SETEFI. Marco Cantarini, Daniele Maccauro, Domenico Marzolla. 19 Aprile 2012

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

Servizi web in LabVIEW

Master Quiz. Matteo Zignani. 18 agosto 2014

Il Protocollo HTTP e il WWW

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

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Il Web-Service SDMX dell ISTAT

Транскрипт:

Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Sicurezza delle applicazioni web: protocollo HTTP Alessandro Reina <ale@security.dico.unimi.it> Aristide Fattori<joystick@security.dico.unimi.it> A.A. 2011 2012 Alessandro Reina Protocollo HTTP A.A. 2011 2012 1 / 1

Architettura infrastruttura web web browser page request server response spawn new worker web server spawn new worker interpreter HTML script query DB Alessandro Reina Protocollo HTTP A.A. 2011 2012 2 / 1

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 Protocollo HTTP A.A. 2011 2012 3 / 1

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 Protocollo HTTP A.A. 2011 2012 4 / 1

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 Protocollo HTTP A.A. 2011 2012 4 / 1

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 Protocollo HTTP A.A. 2011 2012 4 / 1

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 Protocollo HTTP A.A. 2011 2012 5 / 1

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 Protocollo HTTP A.A. 2011 2012 6 / 1

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 Protocollo HTTP A.A. 2011 2012 7 / 1

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 Protocollo HTTP A.A. 2011 2012 8 / 1

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 Protocollo HTTP A.A. 2011 2012 9 / 1

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 Protocollo HTTP A.A. 2011 2012 10 / 1

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 Protocollo HTTP A.A. 2011 2012 10 / 1

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 Protocollo HTTP A.A. 2011 2012 11 / 1

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 Protocollo HTTP A.A. 2011 2012 12 / 1

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 Protocollo HTTP A.A. 2011 2012 12 / 1

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 Protocollo HTTP A.A. 2011 2012 13 / 1

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 Protocollo HTTP A.A. 2011 2012 13 / 1

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 Protocollo HTTP A.A. 2011 2012 14 / 1

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 Protocollo HTTP A.A. 2011 2012 15 / 1

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 Protocollo HTTP A.A. 2011 2012 16 / 1

Sessioni: sicurezza Session hijacking Alessandro Reina Protocollo HTTP A.A. 2011 2012 17 / 1

Sessioni: sicurezza Session fixation Alessandro Reina Protocollo HTTP A.A. 2011 2012 18 / 1

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 Protocollo HTTP A.A. 2011 2012 19 / 1

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 Protocollo HTTP A.A. 2011 2012 20 / 1

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/ proxpy - http://code.google.com/p/proxpy/ Burp - http://portswigger.net/burp/ Paros - http://www.parosproxy.org/ Alessandro Reina Protocollo HTTP A.A. 2011 2012 21 / 1

Configurazione Proxy Http Firefox/IceWeasel Alessandro Reina Protocollo HTTP A.A. 2011 2012 22 / 1

Configurazione Proxy Http Firefox/IceWeasel Alessandro Reina Protocollo HTTP A.A. 2011 2012 23 / 1

Burp - ProxyHttp Firefox/IceWeasel Alessandro Reina Protocollo HTTP A.A. 2011 2012 24 / 1

Burp - ProxyHttp Firefox/IceWeasel Alessandro Reina Protocollo HTTP A.A. 2011 2012 25 / 1