Expand description
FeroxFuzz
is a structure-aware HTTP fuzzing library.
The primary goal in writing FeroxFuzz
was to move some core pieces out of feroxbuster and into a place where they
could be generally useful for other folks. In so doing, my hope is that anyone who wants to write web tooling
and/or one-off web fuzzers in Rust, can do so with very little overhead.
FeroxFuzz
’s overall design is derived from LibAFL
. FeroxFuzz
implements most of the components listed in the paper
LibAFL
: A Framework to Build Modular and Reusable Fuzzers. When FeroxFuzz
deviates, it’s typically due to supporting
async code.
Similar to LibAFL
, FeroxFuzz
is a composable fuzzing library. However, unlike LibAFL
, FeroxFuzz
is solely focused
on black box HTTP fuzzing.
Re-exports
Modules
represents an action that should be performed, typically in response to some event
Corpora modeled around how the test cases are generated, i.e. from a file/folder etc…
Custom error-type definitions
subscribable events for introspection into some of the more opaque parts of the fuzzer
fuzzable and static input data representations
Metadata trait definition for user-defined types that can be added to the
SharedState
ad-hocsmall collection of widely used core types and traits
actions taken after all other processing is complete
provides the core
Request
type and the ShouldFuzz
directives that dictate
what parts of a Request
should be mutated. Additionally, a
URL Encoder is provided by default, while other
encoders are available on an opt-in basis via feature flagsAsynchronous and blocking http response traits, with optional implementations using
reqwest
scheduled access to corpus entries
fuzzer’s runtime state information
Macros
Wrapper
Atomic*.fetch_add
to save me from writing Ordering::SeqCst
a bajillion timesWrapper around
Atomic*.load
to save me from writing Ordering::SeqCst
a bajillion timesWrapper around
Atomic*.store
to save me from writing Ordering::SeqCst
a bajillion timesMacro creating tuple list values from list of expressions.
Macro creating tuple list values from list of expressions.
Macro creating tuple list values from list of expressions.
Macro creating tuple list values from list of expressions.
Traits
simple trait to add a
.as_bytes()
equivalent to implementorsreturn reference to inner type
Trait providing conversion from tuple list into tuple.
convert wrapper into its inner type
simple trait to add a
.len()
equivalent to implementorsMatch for a name and return the value
Trait providing conversion from tuple list into tuple.
We need fixed names for many parts of this lib.
Trait providing conversion from tuple list into tuple.
Trait providing conversion from tuple list into tuple.
Ways to get random around here.
Please note that these are not cryptographically secure.
Or, even if some might be by accident, at least they are not seeded in a cryptographically secure fashion.