</ Advantages | Features | Installation | Usage | Community >
Firefly is an advanced black-box fuzzer and not just a standard asset discovery tool. Firefly provides the advantage of testing a target with a large number of built-in checks to detect behaviors in the target.
Note:
Firefly is in a very new stage (v1.0) but works well for now, if the target does not contain too much dynamic content. Firefly still detects and filters dynamic changes, but not yet perfectly.
Advantages
- Hevy use of gorutines and internal hardware for great preformance
- Built-in engine that handles each task for βxβ response results inductively
- Highly cusomized to handle more complex fuzzing
- Filter options and request verifications to avoid junk results
- Friendly error and debug output
- Build in payloads (default list are mixed with the wordlist from seclists)
- Payload tampering and encoding functionality
Features
Installation
go install -v github.com/Brum3ns/firefly/cmd/firefly@latest
If the above install method do not work try the following:
git clone https://github.com/Brum3ns/firefly.git
cd firefly/
go build cmd/firefly/firefly.go
./firefly -h
Usage
Simple
firefly -h
firefly -u βhttp://example.com/?query=FUZZβ
Advanced usage
Request
Different types of request input that can be used
Basic
firefly -u βhttp://example.com/?query=FUZZβ --timeout 7000
Request with different methods and protocols
firefly -u βhttp://example.com/?query=FUZZβ -m GET,POST,PUT -p https,http,ws
Pipeline
echo βhttp://example.com/?query=FUZZβ | firefly
HTTP Raw
firefly -r β GET /?query=FUZZ HTTP/1.1 Host: example.com User-Agent: FireFlyβ
This will send the HTTP Raw and auto detect all GET and/or POST parameters to fuzz.
firefly -r β POST /?A=1 HTTP/1.1 Host: example.com User-Agent: Firefly X-Host: FUZZ B=2&C=3β -au replace
Request Verifier
Request verifier is the most important part. This feature let Firefly know the core behavior of the target your fuzz. Itβs important to do quality over quantity. More verfiy requests will lead to better quality at the cost of internal hardware preformance (depending on your hardware)
firefly -u βhttp://example.com/?query=FUZZβ -e
Payloads
Payload can be highly customized and with a good core wordlist itβs possible to be able to fully adapt the payload wordlist within Firefly itself.
Payload debug
Display the format of all payloads and exit
firefly -show-payload
Tampers
List of all Tampers avalible
firefly -list-tamper
Tamper all paylodas with given type (More than one can be used separated by comma)
firefly -u βhttp://example.com/?query=FUZZβ -e s2c
Encode
firefly -u βhttp://example.com/?query=FUZZβ -e hex
Hex then URL encode all payloads
firefly -u βhttp://example.com/?query=FUZZβ -e hex,url
Payload regex replace
firefly -u βhttp://example.com/?query=FUZZβ -pr β([0-9]+=[0-9]+) => (13=(37-24))β
The Payloads:
' or (1=1)-- -and" or(20=20)or "Will result in:' or (13=(37-24))-- -and" or(13=(37-24))or "Where the=>(with spaces) inducate the βreplace toβ.
Filters
Filter options to filter/match requests that include a given rule.
Filter response to ignore (filter) status code 302 and line count 0
firefly -u βhttp://example.com/?query=FUZZβ -fc 302 -fl 0
Filter responses to include (match) regex, and status code 200
firefly -u βhttp://example.com/?query=FUZZβ -mr β[Ee]rror (at|on) line \dβ -mc 200
firefly -u βhttp://example.com/?query=FUZZβ -mr βMySQLβ -mc 200
Preformance
Preformance and time delays to use for the request process
Threads / Concurrency
firefly -u βhttp://example.com/?query=FUZZβ -t 35
Time Delay in millisecounds (ms) for each Concurrency
FireFly -u βhttp://example.com/?query=FUZZβ -t 35 -dl 2000
Wordlists
Wordlist that contains the paylaods can be added separatly or extracted from a given folder
Single Wordlist with its attack type
firefly -u βhttp://example.com/?query=FUZZβ -w wordlist.txt:fuzz
Extract all wordlists inside a folder. Attack type is depended on the suffix <type>_wordlist.txt
firefly -u βhttp://example.com/?query=FUZZβ -w wl/
Example
Wordlists names inside folder
wl:
- fuzz_wordlist.txt
- time_wordlist.txt
Output
JSON output is strongly recommended. This is because you can benefit from the
jqtool to navigate throw the result and compare it.
(If Firefly is pipeline chained with other tools, standard plaintext may be a better choice.)
Simple plaintext output format
firefly -u βhttp://example.com/?query=FUZZβ -o file.txt
JSON output format (recommended)
firefly -u βhttp://example.com/?query=FUZZβ -oJ file.json
Community
Everyone in the community are allowed to suggest new features, improvements and/or add new payloads to Firefly just make a pull request or add a comment with your suggestions!


!