Navigazione automatica e rilevazione di errori in applicazioni web



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

19. LA PROGRAMMAZIONE LATO SERVER

TeamPortal. Servizi integrati con ambienti Gestionali

sito web sito Internet

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

Programmazione Web. Laboratorio 4: PHP e MySQL

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Risultati dell esame degli oggetti scaricati da BackDoor.Flashback sui Mac infetti

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

AJAX e altre applicazioni di Javascript. Luca Fabbri

Database e reti. Piero Gallo Pasquale Sirsi

Siti interattivi e dinamici. in poche pagine

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

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

Volumi di riferimento

Application Assessment Applicazione ARCO

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

Una metodologia di progettazione di applicazioni web centrate sui dati

Esercizi di JavaScript

Dispensa di database Access

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

TeamPortal. Infrastruttura

ITI M. FARADAY Programmazione modulare a.s

Lezione 9. Applicazioni tradizionali

Progettazione Web Applicazioni client-server

Obiettivo dell esercitazione

1 Copyright ChateXpert

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

Software Servizi Web UOGA

SPORTELLO UNICO DELLE ATTIVITÀ PRODUTTIVE MANUALE OPERATIVO FUNZIONI DI PAGAMENTO ONLINE. Versione 05

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript

Guida all utilizzo di Moodle per gli studenti

Kroll Ontrack Servizi RDR Guida rapida

Progetto di Ingegneria del Software 2. SWIMv2

GERARCHIE RICORSIVE - SQL SERVER 2008

Il linguaggio HTML - Parte 3

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Application Server per sviluppare applicazioni Java Enterprise

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Indice PARTE PRIMA L INIZIO 1

Sistemi per la gestione di database: MySQL ( )

Guida Rapida all uso del License Manager di ROCKEY4Smart (V )

Progetti Strategici - Guida alla compilazione Online

SWIM v2 Design Document

Corso di PHP. Prerequisiti. 1 - Introduzione

Benvenuti. Luca Biffi, Direttore Tecnico di Achab Achab techjam Archive Server for MDaemon

Manuale d uso della libreria Volta Log

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Gestione di un magazzino: sviluppo di un applicazione web-database

Capitolo 4 Pianificazione e Sviluppo di Web Part

Università Politecnica delle Marche. Progetto Didattico

Manuale Knowledge Base

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

DBMS e Linguaggi di programmazione nell'era di Internet

MANUALE D USO MANUALE D USO

ESERCITAZIONE Semplice creazione di un sito Internet

1) GESTIONE DELLE POSTAZIONI REMOTE

Benvenuti. Luca Biffi, Supporto Tecnico Achab

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

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

Installazione di Moodle. Preparato per: Gruppo A, Piattaforma di E - Learning Preparato da: Cinzia Compagnone, Vittorio Saettone

Dexma Newsletter System

Manuale Utente. Data : 01/02/2011 Versione : 1.0

Scenari esemplificativi di utilizzo delle Mailing List

Guida Operativa. ArchiviaOL

MANUALE D USO DELLA PIATTAFORMA ITCMS

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

INGEGNERIA DEL SOFTWARE

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

XML e PHP. Gestire XML con PHP. Appendice

Esercitazione 8. Basi di dati e web

SINTESI. Comunicazioni Obbligatorie [COB] Import massivo XML. ver. 1.0 del (ver. COB )

Manuale Servizio NEWSLETTER

Protocolli e architetture per WIS

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

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

OpenVAS - Open Source Vulnerability Scanner

Application Assessment Applicazione ARCO

Guida di Pro Spam Remove

EXPLOit Content Management Data Base per documenti SGML/XML

Lezioni di Laboratorio sui Data Base

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Presentazione Data Base

Approfondimenti. Il controllo di SQL Injection nelle pagine ASP e ASP.NET. U.A. 5 - Database in rete con le pagine ASP e ASP.

Firma Digitale Remota

Transcript:

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 la realizzazione di un bot per la navigazione automatica e la rilevazione di errori in applicazioni web; Introduzione: L'applicazione e il Sequence Diagram SQL-Injection Cross-Site scripting XSS Architettura: Test Crawling Rilevazione SQL-Injection MD5 DataBase Error Check ( DOM ) Analisi Document Object Model Rilevazione XSS Conclusioni Fabio Quarti, Federico Villa 2

L'Applicazione Cos è?: È un bot automatico, in grado di navigare autonomamente lungo un percorso di una Applicazione Web fino ad una pagina Target. E' facilmente scriptabile, e riceve input tramite semplici file XML Una volta ottenuto il codice della pagina Target, è in grado di individuare se si sono verificate SQL- Injection o Cross Site Scripting Perchè?: E' un ausilio per gli sviluppatori di Applicazioni Web E' progettata per essere richiamata da tool di analisi statica del codice, che spesso producono un numero molto elevato di falsi positivi Come?: Confronta il codice della pagina Target ottenuta con il parametro da validare, con il codice della medesima pagina ottenuto con un set più o meno vasto di dati validi Fabio Quarti, Federico Villa 3

Sequence Diagram L applicazione naviga una volta per ogni valore corretto e una volta per il valore potenzialmente invalido Al ternime della navigazione confronta la pagina potenzialmente invalida con le pagine sicuramente valide, sfruttando le tecniche che vedremo in seguito. Fabio Quarti, Federico Villa 4

SQL-Injection Cos è?: È un errore che consente ad un aggressore di inviare comandi SQL sfruttando un campo di input di un applicazione web Si verifica quando un campo di input non è correttamente validato e viene sfruttato per costruire una query Esempio: Immaginiamo la query: select * from Users where Login= +stringa_login+ and Password= +stringa_password+ Immaginiamo di riuscire ad immettere, tramite un campo di input non controllato, il valore di stringa_login lupin ; -- otteniamo la seguente query: select * from Users where Login= lupin ; --and Password= +stringa_password+ A seguito di questa query è possibile ottenere l autenticazione sul sistema remoto senza immettere alcuna password ma conoscendo solo il nome utente. Prevenzione: Parsing dei caratteri speciali Eliminazione degli errori SQL Validazione tutti i dati in ingresso Fabio Quarti, Federico Villa 5

Cross-Site Scripting XSS Cos è?: È un errore che consente ad un aggressore di inserire codice di scripting sfruttando un campo di input di un applicazione web Consente di effettuare: cookie theft, session hijack e accesso alle informazioni riservate Tipi: Stored: il codice maligno è permanentemente immagazzinato nel server e viene inviato a tutti i client che si connettono, che poi lo eseguono ne browser. Reflected: il codice viene inviato al client tramite messaggi di errore o esiti di ricerche, perché considera lo script come proveniente da un sito sicuro Esempio: Immaginiamo di inserire in un guestbook o in un forum il seguente codice: <script>location= http://www.polimi.it/ </script> Otteniamo il reindirizzamento sul sito del Politecnico. Prevenzione: Verificare l input e bandire lo scripting Fabio Quarti, Federico Villa 6

Architettura: Crawling Come funziona: La navigazione avviene in modo lineare; il percorso che il bot deve seguire è specificato in un file xml Sfruttiamo la libreria HTTP Unit sviluppata per Java Struttura XML: <?xml version="1.0"?> <percorso> <pagina URL='index.html' nomeform='' method=""/> <pagina URL='/formcp/index.html' nomeform='login' method="" usename="false" Name=""> <attributo nome='username' valore='tesi' ischeckbox='false' checkboxstate='false' istest='false' /> <attributo nome='chiave' valore='tesi' ischeckbox='false' checkboxstate='false' istest='false' /> </pagina> </percorso> Specifichiamo l indirizzo della pagina, il nome del form che deve essere riempito, il valore degli attributi, il tipo degli attributi e se il campo è l input in cui effettuare l injection Fabio Quarti, Federico Villa 7

Architettura: Error Detection Come funziona: La rilevazione degli errori avviene confrontando il codice HTML della pagina ottenuta dai dati invalidi con il codice delle pagine ottenute sfruttando il set di dati validi forniti dal chiamante. E' realizzata tramite tre controlli in cascata Controlli: MD5 Rilevazione Errori DataBase ( DOM ) Confronto Alberi Document Object Model Fabio Quarti, Federico Villa 8

Controlli: MD5 Cos'è MD5: Message Digest 5 è un algoritmo di crittografia dei dati a senso unico che produce, a partire da una stringa di lunghezza arbitraria, una stringa chiamata digest, lunga 128bit composta da 32 simboli esadecimali. Due stringhe diverse, in teoria, non possono avere lo stesso MD5. E' stato rotto nel 2005. Come funziona: Alcune pagine dinamiche sono configurate per mostrare sempre la stessa pagina in caso di successo, indipendentemente dai dai dati inseriti Confrontando gli hash della pagina potenzialmente invalida con quelli delle pagine valide, è possibile individuare immediatamente parametri sicuramente validi Fabio Quarti, Federico Villa 9

Controlli: Errori DB Come funziona: Spesso, i tentativi di SQL-Injection possono generare errori nel DBMS. Altrettanto spesso, questi errori vengono mostrati a video [sempre, se si sta effettuando il debug di una applicazione] Il Bot cerca all'interno di una pagina la presenza di messaggi provenienti dal DBMS Errori DBMS: La lista degli errori SQL è un file XML, che contiene le espressioni regolari associate ad ogni messaggiio. E' facile scrivere un nuovo file contenente errori di un altro DBMS o errori custom Struttura del file: <?xml version="1.0"?> <dbms_error> <error regex= Can&apos;t create file &apos;[0-9a-za-z ]* &apos;(errno: [0-9a-zA-Z ]*) /> <error regex= Can&apos;t create table &apos;[0-9a-za-z ]* &apos;(errno: [0-9a-zA-Z ]*) /> </dbms_error> Fabio Quarti, Federico Villa 10

Controlli: DOM Cos'è Document Object Model: è una forma di rappresentazione dei documenti strutturati come modello orientato agli oggetti. E' uno standard del W3C DOM permette di associare ad una pagina xhtml ben formata un albero che rappresenta la struttura del documento Come funziona: In una applicazione, pagine simili hanno una struttura simile, ma pagine contenutisticamente molto differenti possono avere la medesima struttura Confrontando l'albero DOM della pagina ottenuta dal dato invalido con tutti i DOM degli alberi ritenuti validi, è possibile verificare se la struttura da verificare rispetti uno o più alberi validi Fabio Quarti, Federico Villa 11

Controlli: XSS Detection Come funziona: Il dato da testare è uno script. L'applicazione effettua l'injection dello script nella pagina target Verifica che la stringa sia presente in una pagina specificata, senza che il tag <script> sia stato modificato, eliminato o convertito nella corrispondente entity. E'è il controllo più facile da progettare, ma non è semplice da implementare. Infatti, lo script, una volta inserito, può trovarsi in una posizione differente dalla pagina in cui è stata effettuata l'injection. Fabio Quarti, Federico Villa 12

Test Effettuati Test Didattico: WebGoat WebGoat è un set di applicazioni volutamente insicure, preparate dall'owasp - Open Web Application Security Project, con il fine di istruire gli sviluppatori a prevenire vulnerabilità. Il bot è stato in grado di rilevare l'sql-injection e il Cross Site Scripting Test Reali - Come?: Sono stati effettuati sfruttando vulnerabilità note e exploit conosciuti. Sono state scelte applicazioni conosciute, familiari a molti utenti. Test Reali: PhpBB2: l'applicazione rileva correttamente un Cross Site Scripting avvenuto a causa del mancato controllo del campo autore nel form di ricerca dei post PhpNuke v7.8: l'applicazione rileva correttamente una SQL-Injection avvenuta a causa del mancato controllo dei parametri inviati alla query nel campo principale della ricerca Fabio Quarti, Federico Villa 13

Conclusione e sviluppi futuri Conclusioni: Corretto funzionamento applicazione Problemi con documenti non formati e Blind SQL-Injection Sviluppi futuri: Ottimizzazione codice Correzione errori di navigazione Implementazione di una differente politica di confronto DOM Fabio Quarti, Federico Villa 14

Fine Presentazione Fine Presentazione That's all, Folks! Fabio Quarti, Federico Villa 15

Politecnico di Milano Navigazione automatica e rilevazione di errori in applicazioni web: Test in Dettaglio 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 la casistica e il software con cui è stata testata l'applicazione sviluppata. Test Didattici: WebGoat SQL-Injection Cross-Site scripting XSS Test Reali: PhpBB2 e XSS in PhpBB2 PhpNuke v7.8 e SQL-Injection in PhpNuke v7.8 Conclusioni Fabio Quarti, Federico Villa 17

WebGoat Cos'è WebGoat WebGoat è un set di applicazioni volutamente insicure, preparate dall'owasp - Open Web Application Security Project, con il fine di istruire gli sviluppatori a prevenire vulnerabilità. Mette a disposizione dell'utente un finto portale bancario su cui effettuare le injection SQL e un finto guestbook su cui effettuare il Cross-Site Scripting Cos'è OWASP The Open Web Application Security Project (OWASP) is dedicated to finding and fighting the causes of insecure software. Everything here is free and open source. The OWASP Foundation is a 501c3 not-forprofit charitable organization that ensures the ongoing availability and support for our work. Participation in OWASP is free and open to all. Fabio Quarti, Federico Villa 18

SQL-Injection in Webgoat 1 Come E' possibile effettuare l'injection in un campo adibito all'autenticazione di un utente che vuole vedere i suoi numeri di carta di credito Con una banale injection è possibile forzare il sistema a mostrare tutti i numeri di carta di credito di tutti gli uenti E' sufficiente inserire, invece del nome utente di prova Smith, la stringa ( LENGTH(last_name)<100 ) OR Fabio Quarti, Federico Villa 19

SQL-Injection in Webgoat 2 Fabio Quarti, Federico Villa 20

SQL-Injection in Webgoat 3 Fabio Quarti, Federico Villa 21

Cross-Site Scripting in WG 1 Come E' possibile effettuare l'injection in un campo adibito all'inserimento di messaggi in un guestbook Il messaggio viene immediatamente mostrato, senza essere controllato La stringa utilizzata per l'injection è Avvenuto con successo!")</script> <script>javascript:alert("xss Fabio Quarti, Federico Villa 22

Cross-Site Scripting in WG 2 Fabio Quarti, Federico Villa 23

Cross-Site Scripting in WG 3 Fabio Quarti, Federico Villa 24

Cross-Site Scripting in PhpBB2 1 Cosa è: Php Bulletin Board V2 è una tra i più popolari sistemi Open Source per la gestione di forum scritti mediante il linguaggio di programmazione PHP. Come E' possibile effettuare l'injection in un campo adibito all'inserimento della query di ricerca per autore Il messaggio viene immediatamente mostrato, senza essere controllato La stringa utilizzata per l'injection è ("XSS Eseguito!")</script> <script>javascript:alert Fabio Quarti, Federico Villa 25

Cross-Site Scripting in PhpBB2 2 Fabio Quarti, Federico Villa 26

Cross-Site Scripting in PhpBB2 3 Fabio Quarti, Federico Villa 27

SQL-Injection in PhpNuke 7.8 1 Cosa è: PhpNuke, definito dall autore come il futuro del Web, è una piattaforma scritta in php che permette ad un amministratore di creare un portale per una comunità di utenti, consentendo a ciascun utente di pubblicare, modificare e commentare articoli e news. E' altamente modulare Come E' possibile effettuare l'injection in un campo adibito alla ricerca all'interno di PhpNuke Con una banale injection è possibile forzare il sistema a mostrare tutti gli hash delle password degli amministratori E' sufficiente inserire nel campo di ricerca la stringa UNION SELECT 0,user_id,username,user_password,0,0,0,0,0,0 FROM nuke_users s% ) Fabio Quarti, Federico Villa 28

SQL-Injection in PhpNuke 7.8 2 Fabio Quarti, Federico Villa 29

SQL-Injection in PhpNuke 7.8 3 Fabio Quarti, Federico Villa 30

Conclusione Conclusioni: Buoni risultati in fase di testing Problemi con documenti non formati e Blind SQL-Injection Problemi con l'esecuzione di codice JavaScript Fabio Quarti, Federico Villa 31

Fine Presentazione Fine Presentazione E l'ultimo chiuda la porta Fabio Quarti, Federico Villa 32