A Tool for Detecting Security Vulnerabilities in Web Applications

Christian Häubl
Institute for System Software
haeubl@ssw.jku.at

Supervisor:
A.Univ.-Prof. Dr. Josef Küng
Institute for Application Oriented Knowledge Processing


Abstract

Many people world wide frequently use web applications for information retrieval, shopping or electronic banking. Web applications face the same quality problems as every other software development project and require eagerly testing. Every arbitrary Internet user may access a web application, so its security is an important issue. Statistics show that nearly every web application suffers from common security vulnerabilities such as cross-site scripting or SQL injection. These vulnerabilities can be exploited by attackers. Depending on the severity of the vulnerability, the attacker may read sensitive data such as credit card information, or manipulate product prices. A successful attack on a web application is at least a severe damage to the reputation of the owning company.

This master's thesis focuses on detecting such common vulnerabilities in existing web applications. A tool for testing web application security manually and automatically was developed. It especially focuses on the detection of cross-site scripting and SQL injection attacks as those are most frequently used in real life attacks. The application supports regression testing and enables the user to record and replay manual vulnerability tests. For testing the large attack surface of a web application, the tool provides a crawlerbased automatic vulnerability scanner. The tool embeds the Microsoft Internet Explorer for parsing and executing client-side scripts, so that state-of-art web technologies such as Ajax are supported.

Kurzfassung

Weltweit verwenden viele Menschen täglich Webanwendungen zur Informationsbeschaffung, für den Einkauf im Internet, sowie für Internet Banking. Wie jedes Softwareentwicklungsprojekt haben auch Webanwendungen mit Qualitätsproblemen zu kämpfen. Da jeder Internet Benutzer auf die Webanwendung zugreifen kann, sind intensive Tests nötig um Sicherheitslücken zu vermeiden. Statistiken zeigen, dass fast jede Webanwendung eine häufige Sicherheitslücke wie Cross-Site Scripting oder SQL Injection aufweist. Solche Sicherheitslücken können von Angreifern genutzt werden um sensible Daten wie Kreditkarteninformationen zu lesen oder Produktpreise zu manipulieren. Ein erfolgreicher Angriff auf eine Webanwendung ist zumindest ein schwerer Schaden für den Ruf des Unternehmens.

Diese Diplomarbeit konzentriert sich auf die Entdeckung häufiger Sicherheitslücken in bestehenden Webanwendungen. Es wurde ein Werkzeug entwickelt, mit dem Webanwendungen manuell und automatisch auf Sicherheitslücken getestet werden können. Das Werkzeug konzentriert sich besonders auf die Erkennung von Cross-Site Scripting und SQL-Injection, da diese Sicherheitslücken häufig von Angreifern ausgenutzt werden. Die Anwendung unterstützt Regressionstests und ermöglicht dem Benutzer das Aufzeichnen und Wiedergeben von manuellen Tests. Um die große Angriffsfläche einer Webanwendung auf Sicherheitslücken zu prüfen, unterstützt das Werkzeug eine automatische Erkennung von häufigen Sicherheitslücken. Durch die Einbindung des Microsoft Internet Explorer werden auch moderne Web-Technologien wie Ajax unterstützt.


Master's thesis, Johannes Kepler University Linz, September 2009