Engineering Secure Software

Web Application Fuzzer

Back to schedule

Overview

One of the most helpful tools that a security-minded software developer can have is a fuzz-testing tool, or a fuzzer. A fuzzer is a type of exploratory testing tool used for finding weaknesses in a program by scanning its attack surface.

The best fuzzers are highly customizable, so generalized fuzzers are often quite complex to configure and use, and can become out-of-date quickly. Fortunately, we're software engineers, so we'll build a fuzzer that can be customized to a specific product rapidly. The idea for this project is to create a suite of tools such that re-compilation is a normal part of the usage of your fuzzer.

For this project, you will be building a fuzzer for web applications. You may use any technology you like. For people who prefer Java, I strongly recommend using HTMLUnit, an automated web application testing library. Think of HTMLUnit like a GUI-less browser - it can simulate everything that a browser does from Java, and can test the results efficiently. In particular, HTMLUnit will:

Setup

  1. Download the example-fuzzer.zip file. This is an Eclipse project and should be imported using File > Import > Existing Projects into Workspace
  2. Use the XAMPP portable zip from the Web Application activity
  3. Log into the BodgeIt web application in your browser. This is another intentionally vulnerable web application that we will be testing our fuzzer against.
  4. Make sure you can get the given example code working.

Project Requirements

This project is for groups of 2-3 people, and not necessarily your case study group. Your fuzzer will need to do the following:

Grading & Deadlines