Sie sind auf Seite 1von 129
Development of a combined white and black box security testing tool for detecting injection flaws
Development of a combined white and black box security testing tool for detecting injection flaws

Development of a combined white and black box security testing tool for detecting injection flaws in web applications

MSE Project Thesis 2

Advisor: Prof. Dr. Marc Rennhard

Kevin Denver

Winterthur, 2nd August 2010

Abstract

This project thesis builds upon the findings of the seminary thesis "Preliminary study of white box security testing for the integration into the ASTF framework" which has been written at the Institut für angewandte Informationstechnologie (InIT) by Kevin Denver (Feb. 2010).

A web application security testing framework (WASTF) has been developed during this project thesis which uses the Java programming language. WASTF is a stand alone application which uses several open source libraries such as HtmlUnit. HtmlUnit provides JavaScript support which is essential in thoroughly crawling and analysing today’s web applications.

WASTF includes a plugin which combines black and white box testing techniques for improving the detection of input validation vulnerabilities as opposed to a sole black box approach. The plugin uses database query log files to detect web application input validation vulnerabilities in an automated manner.

Tests have shown that the detection of SQL input validation vulnerabilities are more accurate and more performant by combining black and white box testing methodology than only using a black box testing approach. WASTF is 14 times faster than w3af in detecting SQL input validation vulnerabili- ties.

i

Abstract

Diese Projektarbeit baut auf den Ergebnissen der Seminararbeit mit dem Titel "Preliminary study of white box security testing for the integration into the ASTF framework" auf. Die Arbeit wurde am Institut für angewandte Informationstechnologie (InIT) von Kevin Denver geschrieben (Feb. 2010).

Während dieser Projektarbeit wurde ein Framework geschrieben, welches Web Applikationen automatisiert auf ihre Sicherheit überprüft. Das Web Application Security Testing Framework (WASTF) ist eine selbständige konsolenbasierte Applikation, welche in Java geschrieben wurde. WASTF verwendet mehrere Open Source Bibliotheken wie zum Beispiel HtmlUnit. HtmlUnit ist eine Bibliothek, die erfolgreich Web Browser mit JavaScript Unterstützung emulieren kann. JavaScript Unterstützung ist essentiell, wenn heutige Web Applikationen gründlich analysiert werden sollen.

WASTF beinhaltet ein Plugin, welches Black- und White-Box Testmethoden miteinander kombiniert. Durch die Kombination soll die Detektierung von “Input Validation” Schwachstellen im Gegensatz zu “Black-Box only ” Testmethoden verbessert, respektive präzisiert werden. Das Plugin verwendet Datenbank Query Log Dateien, um SQL “Input Validation” Schwachstellen automatisiert zu detektieren.

Anschliessende Tests haben gezeigt, dass die Kombination von Black- und White-Box Testmethoden die Genauigkeit und die Geschwindigkeit der Detektierung von Schwachstellen erhöhen kann. In einem durchgeführten Test konnte gezeigt werden, dass WASTF 14 mal schneller ist als ein vergleichbarer “Black-Box only” Web Applikations Scanner (w3af ).

ii

Contact

Zürcher Hochschule für Angewandte Wissenschaften (ZHAW) c/o Institut für angewandte Informationstechnologie InIT Steinberggasse 13 Postfach 805 CH-8401 Winterthur

Tel.: +41 58 934 75 87 Fax: +41 58 935 75 87

E-Mail: info.init@zhaw.ch http://www.zhaw.ch http://www.init.zhaw.ch

Name

Staff-Code

Function

E-Mail

Denver Kevin

denk

Student

kevin.denver@zhaw.ch

Rennhard Marc

rema

Project Leader & Advisor

marc.rennhard@zhaw.ch

iii

Contents

1 Introduction

1

1.1 Motivation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

1.2 Limitations

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

1.3 Related Work

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2

2 Combined White and Black Box Security Testing

 

3

2.1 Information Sources

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

2.1.1 Source Code Repository

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

2.1.2 Source Code

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

2.1.3 Runtime Analysis & Profiling

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

2.1.4 Configuration files

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

2.1.5 Log/Trace files

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

2.1.6 Resource Monitor

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

2.1.7 Application Frameworks

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

2.1.8 Data Storage

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

2.1.9 Recording of Network Traffic

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

2.2 How to combine White and Black Box Security Testing

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

2.2.1 Web Application Profiling Example

 

12

2.2.2 Detection of Injection Flaws by using the Database query.log File

 

13

3 Application Requirements

 

15

3.1 Overall Goal & Project Idea

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

3.2 Requirements

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

3.2.1 Functional Requirements

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

3.2.2 Usability Requirements

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

3.2.3 Reliability Requirements

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

3.2.4 Performance Requirements

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

3.2.5 Supportability Requirements

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

3.3 User Stories

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

4 The Database Query Log & How to Detect Input Validation Vulnerabilities

 

23

4.1

Configuration of the Database Query Log

 

23

4.1.1 MySQL

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

4.1.2 PostgreSQL

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

4.1.3 Microsoft SQL Server

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

iv

Contents

 

4.1.4

Oracle Database Standard Edition

 

29

4.2

How to Detect Input Validation Vulnerabilities

 

30

4.2.1 Online Approach

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

4.2.2 Offline Approach

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

4.2.3 Special Character Probing & Performance

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

5 Security Testing Framework - w3af

 

40

5.1 w3af Plugins

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

5.2 w3af WebSpider Plugin

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

 

5.2.1 Settings

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

5.2.2 Accessing Secured Content

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

5.2.3 Shortcomings of the w3af WebSpider

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

5.2.4 Wivet Framework & Performance of the w3af WebSpider plugin

 

44

5.3 XSS Injection Plugin

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

 

5.3.1

Settings

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

5.4 SQL Injection Plugin

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

5.5 Conclusion

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

6 Security Testing Framework - WASTF

 

48

6.1 Overview & Interactive Command Line Interface

 

48

6.2 Program Flow

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.