Fuzz testing using Web Applications And Design and development of a fuzzer: Secure Systems Development Assignment, MMU, UK
Part 1: Fuzz testing using Web Applications
Part2: Design and development of a fuzzer
Part 1:
We are using Kali Linux distribution for this part. An online OS is available here:
A web application like WFuzz can be found in the Web Application Analysis section of the Kali Linux menu.
Wizz is a command-line utility included in Kali Linux.
It is used to discover common vulnerabilities in web applications through the method of fuzzing.
Fuzzing is the concept of trying many known vulnerable inputs with a web application to determine if any of the inputs compromise the web application.
It is a great tool to be able to quickly check common vulnerabilities against an application.
It is also valuable for testing previously reported vulnerabilities to ensure that regressions don’t occur in an application.1. A payload to test against the target application
2. The parameter to inject the payload into
3. The target application URL
In addition to this, we often need to provide a cookie to fuzz for it to properly reach the vulnerable component. This is done by adding the -b argument.
This is required if you need to authenticate to get to the section of the application you wish to attack.
To understand how to fuzz can be used, suppose that we have a login page that uses SQL to query if the user provides a valid username or password.
When we submit the login form, the form will post the username and password as parameters.
If the username and password is valid, the user is sent to a welcome page.
In all other cases, they will get an error saying invalid username or password.
With login forms like this, we often want to check for the possibility of SQL injection.
This is a task that fuzz would be perfect for.
To start, we need to determine how the data is sent to the backend when it is submitted by the user.
To do this, we can use a tool like Burp Suite to intercept the packet sent when the submit button is pressed.
Doing this will show us how the post data is formatted.From this intercept, we can see that data is passed to the server in the format
“username=input&password=input”. We can tell fuzz to send data in this format, and it will successfully be able to send post requests to the login page.
In this case, I’ve used the SQL injection wordlist to look at common SQL injections.
You can just as easily add to these lists or create your own if you have specific test cases you want to apply.
After this, we use the -d flag to specify what data to post to the server.
As we discussed, the format is “username=INPUT&password=INPUT”. In this case, I set the username to admin and set the password to FUZZ.
Wfuzz is set up to replace the keyword FUZZ with the words within the provided payload file, so in this example, we are injecting SQL injection keywords into the password parameter.
Finally, we supply the target URL and run the application.
Once this is done, we will get an output, similar to what is shown below.
2. Automatic Detection of the code weaknesses
3. Discussion on the impact of the weaknesses identified
4. Research a vulnerable application in Exploit DB1 search and pick the exploits, which have that respective application available for download, and reproduce the exploit by using a fuzzer of your choice