Fizzgun Bubbles¶
For every sample request received as input, Fizzgun will generate zero or more mutations. The rules on how to mutate a request are handled by entities called Bubbles.
Fizzgun comes with a built-in set of bubbles that will be described below. If you want to create your own set of bubbles read the create your own bubbles section.
All of the built-in bubbles support the following configuration settings (You can update the global default values for all the bubbles, and/or overwrite the settings for each individual bubble):
- expected_status_range (default
'0-499'): Logs a report entry if the response status obtained after submitting a mutant is not in the given range. By default any 5XX response will be reported as bug. The value can be set to a set of ranges or individual codes, e.g.'100-399, 403, 404,503'. - mark_requests (default
false): When set totrueFizzgun will add ax-fizzgun-idheader with a unique id to each mutant request generated. This can be useful to correlate the requests that triggered bugs in the report with your application logs (e.g. to get stack-traces or anything that will help fixing the bug).
Refer to the bubbles configuration section of the configuration page to learn how these settings are passed.
Bubble: Trimmer¶
Generate mutants by removing properties from JSON payloads, query strings, or x-www-fomr-urlencoded bodies.
E.g. For a JSON request containing this payload:
{"foo": "bar", "baz": [123, "abc"]}
It will generate mutants such as:
{"baz": [123, "abc"]}
{"foo": "bar"}
{"foo": "bar", "baz": ["abc"]}
{"foo": "bar", "baz": [123]}
aplies to: Requests containing query strings, application/json or x-www-form-urlencoded bodies.
additional configuration settings:
- json_params (default
true): Whentrue, mutants will be generated from requests containing JSON bodies. - url_encoded_params (default
true): Whentruemutants will be generated from requests containing query strings and/orx-www-form-urlencodedbodies
Bubble: Enlarger¶
Identifies arguments of all types in a request and creates mutants by modifying one argument at at time replacing its value for a larger value of the same type.
E.g. For a JSON request containing this payload:
{"foo": "bar", "baz": [123, "abc"]}
It will generate mutants such as:
{"foo": "barbarbarbarbarbar...bar", "baz": [123, "abc"]}
{"foo": "bar", "baz": [8037323323966378297779931..., "abc"]}
{"foo": "bar", "baz": [123, "abcabcabcabc...abc"]}
{"foo": "bar", "baz": [123, "abc", 123, "abc", 123, "abc", ...]}
aplies to: Requests containing query strings, application/json or x-www-form-urlencoded bodies.
additional configuration settings:
- json_params (default
true): Whentrue, it will generate mutants from requests containing JSON bodies. - url_encoded_params (default
true): Whentrue, it will generate mutants from requests containing query strings and/orx-www-form-urlencodedbodies. - grow_factor (default
1000): The number used as factor to each mutated value. E.g. a string valuefoowill be replaced withfoofoofoofoo.....foo(1000 times), the integer10will turn into10 pow 1000. - grow_keys (default
false): Whentrue, mutants are also generated by growing json object keys, query string argument names, andx-www-form-urlencodedargument names.
Bubble: TypeChanger¶
Takes each JSON property at a time and generates a mutant replacing its value with one of a different type.
E.g. For a JSON request containing this payload:
{"foo": "bar", "baz": [123, "abc"]}
It will generate mutants such as:
{"foo": 123, "baz": [123, "abc"]}
{"foo": "bar", "baz": true}
{"foo": "bar", "baz": [null, "abc"]}
{"foo": "bar", "baz": [123, {}]}
[]
aplies to: Requests with application/json bodies.
Bubble: Injector¶
Attempts to naively unveil injection related bugs by appending special sequences to string arguments.
aplies to: Requests containing query strings, application/json or x-www-form-urlencoded bodies.
additional configuration settings:
- json_params (default
true): Iftruewill generate mutants from requests containing JSON bodies. - url_encoded_params (default
true): Iftruewill generate mutants from requests containing query strings and/orx-www-form-urlencodedbodies
Bubble: Shellshock¶
Attempts to exploit the Shellshock bash vulnerability (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277 and CVE 2014-6278) by injecting a specially crafted header
aplies to: Request containing the string cgi anywhere in the request path.
additional expectations: Besides reporting any 5XX response, a successful exploitation will result in the response containing a special string, if so, the finding is reported regarless the response status code.