Web applications are the most popular way for delivering services via the Internet and have become essential in our daily lives. Due to their ever growing popularity and the high value data they expose, the software industry is increasingly paying attention to the aspects concerning their protection. A vulnerability, in computer security, can be defined as a weakness in the computer system that leaves information security exposed to attacks. It can be described as a combination of three elements: the presence of a flaw in the system, the ability of the attacker to discover the flaw and the attacker’s capability to exploit the flaw. A common approach to the security testing of web applications consists in employing black-box web vulnerability scanners. Black-box web vulnerability scanners are a set of tools that crawl a web application to enumerate all the reachable pages and the associated input vectors, generate specially crafted input values that are submitted to the application and observe the application’s behavior to determine if a vulnerability has been triggered. The main goal of these scanners is to mimic external attacks from hackers, provide cost-effective methods for detecting a range of important vulnerabilities and may configure and test defenses, such as firewalls. This approach is based on the assumption that the scanner does not know the internals of the web application and it uses fuzzing techniques over the web HTTP requests, thus differing from White-box testing, which consist in the manual or automated analysis of the source code of the web application. Among the most important vulnerabilities, Cross-site scripting(XSS) is still a prevalent vulnerability in web applications, despite being well known and studied. Cross Site Scripting (XSS) flaws occur whenever an application takes untrusted data and sends it to a web browser without proper validation or escaping. XSS allows attackers to execute scripts in the victim’s browser which can hijack user sessions, deface web sites, or redirect the user to malicious sites. Unfortunately web application scanners still have some limitations. Scanners still fail to detect a non negligible number of vulnerabilities, false negatives, or detect vulnerabilities that are either non-existent or not interesting nor exploitable, false positives. We are also not aware of how commercial web application scanners work; knowing this could help understand their limitations and overcome them. There already are some state of the art works on the matter and from which we were inspired. This works, however, had some limitations in our opinion and there were still many aspects of this research field that could be explored. For all these reasons we decided to perform a detailed study of black-box web vulnerabilities scanners with respect to Cross-scripting vulnerabilities. Since our starting hypothesis is that we don’t know the internal functioning of the scanners, we decided to study their behavior by focusing on their attack phase during scans against our own testbed application. This study was performed through the analysis of payloads employed by all tools. With payload used by a scanner we mean the part of data, transmitted through a request, used to trigger vulnerabilities in applications in order to test them. Also, our research is not limited to individual scanners, since a cross-scanners analysis could yield very interesting results. Our main contribution is the development of a semi-automatic methodology to thoroughly analyze how several commercial and open-source scanners work. This includes: an automatic payload extractor for each available scanner, an automatic templating algorithm to cluster extracted payloads to scale down the evaluation challenge and keep it feasible, an automatic process to extract informations used to evaluate generated templates, a publicly available testbed web application that exposes non trivial XSS vulnerabilities, improved and augmented through the coverage of scanners’ negative payloads.

Le applicazioni web sono il metodo più diffuso per fornire servizi via Internet e sono diventate essenziali nella nostra vita quotidiana. A causa della loro via via crescente popolarità e il valore dei dati che contegono, l’industria del software dedica sempre più attenzione agli aspetti legati alla loro sicurezza. Una vulnerabilità, in sicurezza informatica, viene definita come una debolezza nel sistema che lo espone a potenziali attacchi; può essere descritta come una combinazione di tre elementi: la presenza di una falla nel sistema, l’abilità di un attacante nel trovare la falla e infine la capacità dell’attaccante di sfruttare la falla. Un approccio comune per testare la sicurezza di applicazioni web consiste nell’impiego di scanner black-box per vulnerabilità web. Gli scanner black-box per vulnerabilità web sono un insieme di strumenti che esplorano un’applicazione web per enumerare tutte le pagine raggiungibili e i vettori di input associati, creano speciali valori di input che vengono inviati all’applicazione e osservano il comportamento dell’applicazione per determinare se è stata fatta scattare una vulnerabilità. L’obiettivo principale di questi scanner è simulare un attacco esterno, fornire metodi efficaci (dal punto di vista dei costi) per rilevare un insieme di vulnerabilità importanti nonchè la possibilità di configurare e testare sistemi di difesa, come i firewall. Questo approccio è basato sull’assunzione che gli scanner non conoscono il funzionamento interno dell’applicazione web e quindi utilizza tecniche di fuzzing sulle richieste HTTP inviate all’applicazione, differendo così dall’approccio di testing White-box, il quale consiste in un’analisi manuale o automatizzata del codice sorgente dell’applicazione. Tra le vulnerabilità più importanti, Cross-site scripting XSS è ancora una vulnerabilità predominante nelle applicazioni web, nonostante sia molto conosciuta e studiata. Vulnerabilità agli XSS sono presenti quando l’applicazione accetta dati non fidati e li invia ad un web browser senza eseguire una convalida o filtraggio appropriati. Attacchi XSS permettono all’attaccante di eseguire codice nel browser della vittima, il quale può eseguire un hijacking della sessione dell’utente, defacing del sito web o redirezionare l’utente to siti malevoli. Sfortunatamente gli scanner per vulnerabilità di applicazioni web presentano alcune limitazioni. Molti non riescono a identificare un numero non trascurabile di vulnerabilità, definiti falsi negativi, o identificano vulnerabilità non esistenti oppure non interessanti né sfruttabili, detti falsi positivi. Inoltre, non siamo a conoscienza di come funzionino gli scanner commerciali; ciò ci permetterebbe di capire le loro limitazioni e superarle. Esistono già alcuni lavori nello stato dell’arte sull’argomento e da cui abbiamo preso ispirazione. Questi lavori, tuttavia, avevano secondo noi alcune limitazioni, inoltre esistono ancora molti aspetti di questo campo di ricerca che possono essere esplorati. Per tutte queste ragioni, abbiamo deciso di condurre uno studio dettagliato degli scanner black-box per vulnerabilità nelle applicazioni web rispetto alle vulnerabilità XSS. Dato che la nostra ipotesi iniziale è che non siamo a conoscenza del funzionamento interno degli scanner, abbiamo deciso di studiare il loro comportamento concentrandoci sulla loro fase di attacco durante la scansione della nostra applicazione web di test. Questo studio è avvenuto attraverso l’analisi delle payload utilizzate dagli scanner. Con payload noi intendiamo la parte dei dati, trasmessi attraverso una richiesta HTTP, utilizzata per far scattare vulnerabilità nelle applicazioni per testarle. Inoltre la nostra ricerca non si limita a scanner singoli dato che un’analisi incrociata tra vari scanner potrebbe restituire risultati molto interessanti. I nostri contributi principali consistono nello sviluppo di una metodolo- gia semi-automatizzata per analizzare dettagliatamente come i vari scanner, sia commerciali che open-source, lavorino. Tutto ciò include: un estrattore di payload automatico per ogni scanner, un algoritmo di templating automatico per raggruppare le payload estratte per ridurre il problema della valutazione e renderlo fattibile, un processo automatico per estrarre informazioni per valutare i template generati, un’applicazione di test pubblicamente disponibile contenente vulnerabilità XSS non banali, migliorata ed estesa attraverso la copertura di tutte le tipologie di payload usate dagli scanner

Xss peeker : an analysis of black box web scanners on detecting cross site scripting vulnerabilities

BAZZOLI, ENRICO
2012/2013

Abstract

Web applications are the most popular way for delivering services via the Internet and have become essential in our daily lives. Due to their ever growing popularity and the high value data they expose, the software industry is increasingly paying attention to the aspects concerning their protection. A vulnerability, in computer security, can be defined as a weakness in the computer system that leaves information security exposed to attacks. It can be described as a combination of three elements: the presence of a flaw in the system, the ability of the attacker to discover the flaw and the attacker’s capability to exploit the flaw. A common approach to the security testing of web applications consists in employing black-box web vulnerability scanners. Black-box web vulnerability scanners are a set of tools that crawl a web application to enumerate all the reachable pages and the associated input vectors, generate specially crafted input values that are submitted to the application and observe the application’s behavior to determine if a vulnerability has been triggered. The main goal of these scanners is to mimic external attacks from hackers, provide cost-effective methods for detecting a range of important vulnerabilities and may configure and test defenses, such as firewalls. This approach is based on the assumption that the scanner does not know the internals of the web application and it uses fuzzing techniques over the web HTTP requests, thus differing from White-box testing, which consist in the manual or automated analysis of the source code of the web application. Among the most important vulnerabilities, Cross-site scripting(XSS) is still a prevalent vulnerability in web applications, despite being well known and studied. Cross Site Scripting (XSS) flaws occur whenever an application takes untrusted data and sends it to a web browser without proper validation or escaping. XSS allows attackers to execute scripts in the victim’s browser which can hijack user sessions, deface web sites, or redirect the user to malicious sites. Unfortunately web application scanners still have some limitations. Scanners still fail to detect a non negligible number of vulnerabilities, false negatives, or detect vulnerabilities that are either non-existent or not interesting nor exploitable, false positives. We are also not aware of how commercial web application scanners work; knowing this could help understand their limitations and overcome them. There already are some state of the art works on the matter and from which we were inspired. This works, however, had some limitations in our opinion and there were still many aspects of this research field that could be explored. For all these reasons we decided to perform a detailed study of black-box web vulnerabilities scanners with respect to Cross-scripting vulnerabilities. Since our starting hypothesis is that we don’t know the internal functioning of the scanners, we decided to study their behavior by focusing on their attack phase during scans against our own testbed application. This study was performed through the analysis of payloads employed by all tools. With payload used by a scanner we mean the part of data, transmitted through a request, used to trigger vulnerabilities in applications in order to test them. Also, our research is not limited to individual scanners, since a cross-scanners analysis could yield very interesting results. Our main contribution is the development of a semi-automatic methodology to thoroughly analyze how several commercial and open-source scanners work. This includes: an automatic payload extractor for each available scanner, an automatic templating algorithm to cluster extracted payloads to scale down the evaluation challenge and keep it feasible, an automatic process to extract informations used to evaluate generated templates, a publicly available testbed web application that exposes non trivial XSS vulnerabilities, improved and augmented through the coverage of scanners’ negative payloads.
MAGGI, FEDERICO
ING - Scuola di Ingegneria Industriale e dell'Informazione
18-dic-2013
2012/2013
Le applicazioni web sono il metodo più diffuso per fornire servizi via Internet e sono diventate essenziali nella nostra vita quotidiana. A causa della loro via via crescente popolarità e il valore dei dati che contegono, l’industria del software dedica sempre più attenzione agli aspetti legati alla loro sicurezza. Una vulnerabilità, in sicurezza informatica, viene definita come una debolezza nel sistema che lo espone a potenziali attacchi; può essere descritta come una combinazione di tre elementi: la presenza di una falla nel sistema, l’abilità di un attacante nel trovare la falla e infine la capacità dell’attaccante di sfruttare la falla. Un approccio comune per testare la sicurezza di applicazioni web consiste nell’impiego di scanner black-box per vulnerabilità web. Gli scanner black-box per vulnerabilità web sono un insieme di strumenti che esplorano un’applicazione web per enumerare tutte le pagine raggiungibili e i vettori di input associati, creano speciali valori di input che vengono inviati all’applicazione e osservano il comportamento dell’applicazione per determinare se è stata fatta scattare una vulnerabilità. L’obiettivo principale di questi scanner è simulare un attacco esterno, fornire metodi efficaci (dal punto di vista dei costi) per rilevare un insieme di vulnerabilità importanti nonchè la possibilità di configurare e testare sistemi di difesa, come i firewall. Questo approccio è basato sull’assunzione che gli scanner non conoscono il funzionamento interno dell’applicazione web e quindi utilizza tecniche di fuzzing sulle richieste HTTP inviate all’applicazione, differendo così dall’approccio di testing White-box, il quale consiste in un’analisi manuale o automatizzata del codice sorgente dell’applicazione. Tra le vulnerabilità più importanti, Cross-site scripting XSS è ancora una vulnerabilità predominante nelle applicazioni web, nonostante sia molto conosciuta e studiata. Vulnerabilità agli XSS sono presenti quando l’applicazione accetta dati non fidati e li invia ad un web browser senza eseguire una convalida o filtraggio appropriati. Attacchi XSS permettono all’attaccante di eseguire codice nel browser della vittima, il quale può eseguire un hijacking della sessione dell’utente, defacing del sito web o redirezionare l’utente to siti malevoli. Sfortunatamente gli scanner per vulnerabilità di applicazioni web presentano alcune limitazioni. Molti non riescono a identificare un numero non trascurabile di vulnerabilità, definiti falsi negativi, o identificano vulnerabilità non esistenti oppure non interessanti né sfruttabili, detti falsi positivi. Inoltre, non siamo a conoscienza di come funzionino gli scanner commerciali; ciò ci permetterebbe di capire le loro limitazioni e superarle. Esistono già alcuni lavori nello stato dell’arte sull’argomento e da cui abbiamo preso ispirazione. Questi lavori, tuttavia, avevano secondo noi alcune limitazioni, inoltre esistono ancora molti aspetti di questo campo di ricerca che possono essere esplorati. Per tutte queste ragioni, abbiamo deciso di condurre uno studio dettagliato degli scanner black-box per vulnerabilità nelle applicazioni web rispetto alle vulnerabilità XSS. Dato che la nostra ipotesi iniziale è che non siamo a conoscenza del funzionamento interno degli scanner, abbiamo deciso di studiare il loro comportamento concentrandoci sulla loro fase di attacco durante la scansione della nostra applicazione web di test. Questo studio è avvenuto attraverso l’analisi delle payload utilizzate dagli scanner. Con payload noi intendiamo la parte dei dati, trasmessi attraverso una richiesta HTTP, utilizzata per far scattare vulnerabilità nelle applicazioni per testarle. Inoltre la nostra ricerca non si limita a scanner singoli dato che un’analisi incrociata tra vari scanner potrebbe restituire risultati molto interessanti. I nostri contributi principali consistono nello sviluppo di una metodolo- gia semi-automatizzata per analizzare dettagliatamente come i vari scanner, sia commerciali che open-source, lavorino. Tutto ciò include: un estrattore di payload automatico per ogni scanner, un algoritmo di templating automatico per raggruppare le payload estratte per ridurre il problema della valutazione e renderlo fattibile, un processo automatico per estrarre informazioni per valutare i template generati, un’applicazione di test pubblicamente disponibile contenente vulnerabilità XSS non banali, migliorata ed estesa attraverso la copertura di tutte le tipologie di payload usate dagli scanner
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2013_12_Bazzoli.pdf

accessibile in internet solo dagli utenti autorizzati

Descrizione: Testo della tesi
Dimensione 4.22 MB
Formato Adobe PDF
4.22 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/88421