Writing A Simple Fuzzer
Fuzzers are tools used by security professionals to provide invalid and unexpected data to the inputs of a program. Typical fuzzers test an application for buffer overflows, format string, directory traversal attacks, command execution vulnerabilities, SQL Injection, XSS and more. Because Metasploit provides a very complete set of libraries to security professionals for many network protocols and data manipulations, the framework is a good candidate for quick development of simple fuzzers.
Rex::Text module provides lots of handy methods for dealing with text like:
- Buffer conversion
- Encoding (html, url, etc)
- Checksumming
- Random string generation
The last point is obviously extremely helpful in writing simple fuzzers. For more information, refer to the API documentation at http://metasploit.com/documents/api/rex/classes/Rex/Text.html. Here are some of the functions that you can find in Rex::Text :
root@kali:~# grep "def self.rand" /pentest/exploits/framework3/lib/rex/text.rb def self.rand_char(bad, chars = AllChars) def self.rand_base(len, bad, *foo) def self.rand_text(len, bad='', chars = AllChars) def self.rand_text_alpha(len, bad='') def self.rand_text_alpha_lower(len, bad='') def self.rand_text_alpha_upper(len, bad='') def self.rand_text_alphanumeric(len, bad='') def self.rand_text_numeric(len, bad='') def self.rand_text_english(len, bad='') def self.rand_text_highascii(len, bad='') def self.randomize_space(str) def self.rand_hostname def self.rand_state()
