Commit Graph

165 Commits

Author SHA1 Message Date
Jesus Galvan
5b75e9018f
Allow input-shell option (#344)
* Allow input-shell option

* Markdown files

* Changelog
* Contributors
2021-01-24 18:55:23 +02:00
Stefan Stojanovski
6a7bdc0f93
Added 405 Method Not Allowed to the list of status codes matched by default (#373)
* Update .ffufrc to match 405 status code responses by default

* Updated README.md with the new default match status codes

* Updated default match codes to include 405 Method Not Allowed

405 Method not Allowed is returned by many api endpoints when accessed via an improper method. ffuf sends GET reqeusts by default and if an endpoint only supports POST it will return 405 and ffuf will not think it's a valid endpoint unless specifically told to match 405 status codes

* Added choket to contributors

* Update CHANGELOG.md
2021-01-24 18:54:30 +02:00
Joona Hoikkala
4bea474ae6
Fix filter tests (#368) 2020-12-28 13:53:09 +02:00
Bp0lr
bc5e61ecc3
Empty filter (#330)
* add support to filter empty result files.

* update readme

* add contributors.

* add changelog

* Update ffufrc.example
2020-11-23 20:39:06 +02:00
M. Ángel Jimeno
c6a6293499
pkg/ffuf: fix panic in Windows when parsing wordlist flag (#335)
This change addresses two panics that happened while parsing the provided
wordlist flag in Windows systems.

- pkg/ffuf/util.go:40: panic happened when the provided path was
invalid. Example: ".\wordlist.txt:" as the os.Stat call returned an
error different than os.ErrNotExist.

- pkg/ffuf/optionsparser.go:179: panic happened when the provided value
did not existed and did not contain a colon character. Example:
".\asdf.txt" when the local file ".\asdf.txt" did not exist. This panic
happened due to strings.LastIndex returning -1 when the provided
substring does not appear. Therefore, v[:-1] panicking.

Fixes #333

Signed-off-by: Miguel Ángel Jimeno <miguelangel4b@gmail.com>
2020-10-26 23:43:09 +02:00
Joona Hoikkala
5b00f2b4e1
Fix HTTP method & data bug when parsing raw request from file (#339) 2020-10-25 15:47:52 +02:00
Fabio
2be8b878f8
issue/274 * made links in HTML report clickable (#323)
* issue/274 * made links in HTML report clickable

* issue/274 * updated changelog and contributors

* fixed contributors order
2020-10-05 11:05:02 +03:00
Joona Hoikkala
99100e0608
Add linter workflow as GitHub action (#325)
* Add linter workflow as GitHub action

* Fix linter issues

* More fixes
2020-10-03 11:29:18 +03:00
bjhulst
2abc72018d
Bug 231 (#312)
* Update filter.go

* Upsert filter options

Insert or update filter options.

* Indent.

* Updated CHANGELOG.md

fix for: Option -ac overwriting other existing filters #231
2020-10-03 11:20:21 +03:00
M. Ángel Jimeno
19937c4929
pkg: handle gosimple linter findings (#322)
This change is an attempt to handle gosimple linter finfings in order to
make the code easier to follow. It includes the following changes:

- use strings.Contains instead of strings.Index != -1
- use time.Since which is the standard library helper. See https://github.com/golang/go/blob/go1.15.2/src/time/time.go#L866-L867
- remove unneeded return statements at the end of methods
- preallocate maps when their capacity is known
- avoid underscoring values when they can be omitted
- avoid fmt.Sprintf() calls when the only argument is already a string

Signed-off-by: Miguel Ángel Jimeno <miguelangel4b@gmail.com>
2020-10-03 10:45:07 +03:00
M. Ángel Jimeno
7099b61f2d
pkg/output/stdout: use Error() method from error interface when possible (#321)
Signed-off-by: Miguel Ángel Jimeno <miguelangel4b@gmail.com>
2020-10-02 17:14:48 +03:00
M. Ángel Jimeno
8156fd1917
pkg: use {strings,bytes}.ReplaceAll when possible (#320)
Use the ReplaceAll helper from the standard library in order to make the
code easier to read. Requires Go 1.12 or higher.

Fixes #301

Signed-off-by: Miguel Ángel Jimeno <miguelangel4b@gmail.com>
2020-10-02 17:12:40 +03:00
Joona Hoikkala
bde943cc5d
Add support for configuration files for ffuf (#308)
* Refactor config and job creation

* ConfigOptions defaults

* Structure ConfigOptions for config file parser

* Sort options

* Finalize the configuration file reading and add examples and documentation

* Fix issues with opts -> config translation
2020-09-27 19:24:06 +03:00
Kiblyn11
79fe3c0c91
Change banner logging to stderr (#282)
* Change banner logging to stderr

* Edit CHANGELOG and CONTRIBUTORS

* fix: add to contributors according to sort order
2020-09-24 12:09:03 +03:00
Joona Hoikkala
dc24ad2639
Make SIGINT more responsive, and handle zombied TCP connections properly (#302) 2020-09-24 12:04:31 +03:00
M. Ángel Jimeno
47c8cafadc
job: remove duplicate if statement (#283)
* job: remove duplicate if statement

Signed-off-by: Miguel Ángel Jimeno <miguelangel4b@gmail.com>

* contributors: add Miguel Jimeno to CONTRIBUTORS.md

Signed-off-by: Miguel Ángel Jimeno <miguelangel4b@gmail.com>
2020-08-30 15:24:13 +03:00
Joona Hoikkala
0ce941326b
Throttle rate of requests per second (#287)
* Add the functionality to perform req/sec limiting (for humans)

* Add documentation
2020-08-30 13:51:41 +03:00
Joona Hoikkala
126157438b
Prepare 1.2.0-git (#268) 2020-07-23 13:49:27 +03:00
Joona Hoikkala
d61ceb3eb2
Release 1.1 (#266) 2020-07-23 13:38:56 +03:00
Joona Hoikkala
bef2dc04ed
Fix crash with 3xx requests without location header (#265)
Co-authored-by: Joona Hoikkala <joohoi@io.fi>
2020-07-23 13:13:27 +03:00
bjhulst
9bb613050e
Update random seed logic (#262)
* Update util.go

* Update job.go

rand.Seed updated just before usage

* Update util.go

revert

* Updated CHANGELOG.MD with a description of the bug fix.

Co-authored-by: Joona Hoikkala <joohoi@users.noreply.github.com>
2020-07-23 12:28:31 +03:00
Joona Hoikkala
0633fb6b0a
Fixed behavior of wordlist:keyword separator in Windows (#240) 2020-05-16 15:49:57 +03:00
Joona Hoikkala
08ec6bad2a
Add Host information to JSON output file (#223) 2020-04-23 00:53:28 +03:00
Dave Walker
88720dfdc9
Support outputting all file formats concurrently (#218)
* Support outputting all file formats concurrently

Previously ffuf would allow outputting to a single
file-format, ie Markdown (md), json or HTML.  It was not
possible to output in multiple formats in the same
execution.

This change allows specifying an output (-of) of "all",
which means that the output filename (-o) is used, but the
appropriate suffix is added.

As an example,
... -of all -o output/report

Will output:
 - output/report.json
 - output/report.html
 - output/report.csv
 - ... etc

Fixes ffuf/ffuf#215

Signed-off-by: Dave Walker (Daviey) <email@daviey.com>

* Updated Changelog and added myself to CONTRIBUTORS

Signed-off-by: Dave Walker (Daviey) <email@daviey.com>

* Fix file extension for 'ecsv' when 'all' is used

.. And fix CONTRIBUTORS.md to be alphabetical

Signed-off-by: Dave Walker (Daviey) <email@daviey.com>
2020-04-19 12:11:15 +03:00
Dave Walker
e4628ff481
Increase default rows per page on html report (#217)
* Increase default rows per page on html report

Previously 10 results were displayed per-page, as the
default of DataTables.  This change increases the default to
250 results per page and also adds the option for 250, 500,
1000, 2500 and ALL results.

In addition, materialize css default was blocking the
viewing of the option to display alternative results
per-page.  This is resolved by calling .formSelect as per
https://stackoverflow.com/questions/28258106/materialize-css-select-doesnt-seem-to-render

Fixes ffuf/ffuf#216

Signed-off-by: Dave Walker (Daviey) <email@daviey.com>

* Updated Changelog and added myself to CONTRIBUTORS

Signed-off-by: Dave Walker (Daviey) <email@daviey.com>

* Updated CONTRIBUTORS.md to be alphabetical

Signed-off-by: Dave Walker (Daviey) <email@daviey.com>
2020-04-19 12:04:33 +03:00
helpermika
7021c2f211
Add the wordlists to the header information (#211)
* Add the wordlists to the header information (#197)

* Add the requested change
2020-04-15 13:39:01 +03:00
bjhulst
ef1aac3a1e
Feature178 (#186)
* feature 178

* sync

* sync

* sync

* sync

Co-authored-by: bjhulst <bjhulst>
2020-03-20 12:42:54 +02:00
Damian Schwyrz
ccdd377930
Fix for #193 (#194)
* Fix for #193

* Fix for #193 - Changelog
2020-03-20 12:41:13 +02:00
Damian Schwyrz
7ffd74d87e
Fix for issue #179 (#180)
* Fix for issue #179

* additional changes after review | #179

* Further info -> README.md regarding #179 & CONTRIBUTORS.md

* Further info -> README.md regarding #179 & CONTRIBUTORS.md

* Further info -> README.md regarding #179

* Fix for removed "Changes"

* Fix for removed "Changes"
2020-02-27 15:19:07 +02:00
Joona Hoikkala
2d165e6179
Prepare for 1.1.0-git (#176) 2020-02-21 22:52:23 +02:00
Joona Hoikkala
7c6b20a552
Prepare point release v1.0.2 (#175) 2020-02-21 22:46:41 +02:00
bjhulst
5f0d0faeb7
Make defining User-agent header case insensitive #171 (#173)
* Takes the User-Agent header from a list.

* typo

* base

* Make defining User-agent header case insensitive #171

* -whitespaces

* Make canonical http headers and set default User-Agent only once.

* clean-up

* formatting, canonical customer headers, docs updated

* cleanup

* fmt

* Checking userdefined headers for excluding in canonicalization.

* resolving one conflict

* moved logic back and less resolve conflicts

Co-authored-by: Joona Hoikkala <joohoi@users.noreply.github.com>
2020-02-21 22:43:19 +02:00
Joona Hoikkala
a5d9bb5c18
Calculate req/sec correctly when recursing (#168) 2020-02-17 01:02:00 +02:00
Joona Hoikkala
ff1bc2a3c2
Handle relative URLs in redirects properly (#167) 2020-02-17 00:56:38 +02:00
Joona Hoikkala
a19741daa6
Save POST body correctly (#161) 2020-02-09 13:29:12 +02:00
Joona Hoikkala
a3e3dc5246
Prepare v1.1 again (#154) 2020-02-02 15:32:50 +02:00
Joona Hoikkala
46755d8f7c
Prepare for point release 1.0.1 (#153) 2020-02-02 15:28:47 +02:00
Joona Hoikkala
6868aff865
Fix bug in regex matching when writing responses to file (#150)
* Fix bug in regex matching when writing responses to file

* Add changelog entry
2020-02-01 02:36:03 +02:00
Joona Hoikkala
875ee38f59
Prepare 1.1-git (#146)
* Prepare 1.1-git

* Changelog too...
2020-01-30 00:55:01 +02:00
Joona Hoikkala
bb59f50cbe
Prepare for release 1.0 (#144) 2020-01-30 00:28:28 +02:00
Joona Hoikkala
b0a632e6cd
Replay matches using a chosen proxy (#140)
* Replay matches using a custom proxy

* Add changelog entry
2020-01-17 09:49:25 +02:00
Ice3man
3d8e233097 Added ignore comment option (#138)
* Added ignore comment option

* Ignore blank lines & added changelog entry
2020-01-15 11:19:18 +02:00
Joona Hoikkala
ac2b447dfd
Write configuration to output JSON (#135)
* Config to json output, filters and matchers

* optRange marshaling

* Add CHANGELOG entry
2020-01-07 18:27:43 +02:00
Shaked Klein Orbach
1b45085191 remove -k flag support, convert to dummy flag (#134)
* remove -k flag support, convert to dummy flag

* update changelog and contributors
2020-01-07 18:25:42 +02:00
Joona Hoikkala
b4adeae872
Recursive jobs support (#129) 2019-12-31 14:19:27 +02:00
Tapio Vuorinen
7032f0eb47 -maxtime cli flag to limit running time of ffuf. resolves #85 (#127) 2019-12-30 12:49:34 +02:00
Joona Hoikkala
15524003b8
Write requests and responses to filesystem if requested (#126) 2019-12-28 17:46:44 +02:00
Tapio Vuorinen
f5609a2d13 fuzzing input in result, resolves #76 (#124)
* regexp filter had a copy-paste error talking about size filter, fixed

* implement -mr/-fr FUZZ, detecting if fuzzed input is present in response. resolves #76

* quote regexp control characters to obtain exact matches (according to joohoi's comment)

* allow keywords as part of regexp matching/filtering

* updated changelog

Co-authored-by: Joona Hoikkala <joohoi@users.noreply.github.com>
2019-12-23 13:29:24 +02:00
Tapio Vuorinen
918d5dcc8f count also 429 response codes if -sa (stop on all error cases) is used (#113)
* count also 429 response codes if -sa (stop on all error cases) is used. resolves #83

* Update README.md

Co-Authored-By: Joona Hoikkala <joohoi@users.noreply.github.com>

* Update main.go

Co-Authored-By: Joona Hoikkala <joohoi@users.noreply.github.com>

* lowered the 429 threshold to 20%

Co-authored-by: Joona Hoikkala <joohoi@users.noreply.github.com>
2019-12-20 20:23:54 +02:00
Joona Hoikkala
c33a431716
Limit the use of -e to a single keyword (#106)
* Limit the use of extension to a single wordlist

* Update README
2019-11-16 22:22:14 +02:00
Joona Hoikkala
d04a2d80ae
Prepare 1.0 (#105) 2019-11-16 18:34:58 +02:00
Joona Hoikkala
d4e88ade95
Prepare release 0.12 (#104) 2019-11-16 18:19:07 +02:00
Joona Hoikkala
6059ead533
Verbose banner information (#102) 2019-11-16 17:28:34 +02:00
Joona Hoikkala
ec480844a8
Add SIGTERM monitoring (#101) 2019-11-16 16:51:29 +02:00
Joona Hoikkala
3949e49b3b
Implement -v (verbose) flag (#100) 2019-11-16 16:32:11 +02:00
Joona Hoikkala
8807dc119d
Add DataTables support to HTML output (#98) 2019-11-16 15:42:25 +02:00
Joona Hoikkala
7b0542a5a7
Show RedirectLocation and full URL in output files (#97) 2019-11-16 15:29:09 +02:00
Joona Hoikkala
3ad8ce2716
Log errors to --debug-log (#95) 2019-11-16 10:45:45 +02:00
Joona Hoikkala
7aad9c6051
Fix JSON output regression and Stdout race condition issues (#94)
* Fix json output regression and improve stdout printing

* Add changelog entry
2019-11-16 01:48:00 +02:00
Joona Hoikkala
ac141e5e34
Fix the multi wordlist bug and add a new mode of operation (#93)
* Fix the multi wordlist bug and add a new mode

* Add a README entry
2019-11-16 00:40:04 +02:00
Joona Hoikkala
73922822f9
Prepare v0.12git (#89) 2019-11-11 00:10:52 +02:00
Joona Hoikkala
ba1931641c
Release 0.11 (#88) 2019-11-11 00:03:01 +02:00
Joona Hoikkala
5456a37f72
Multiple wordlist support (#79)
* Multiple wordlist support

* Display error correctly if wordlist file could not be opened

* Add back the redirect location

* Support multiple keywords in HTML output and fix wordlist positioning

* Support multiple wordlists for md output

* Support multiple keywords in CSV output

* Improve output for multi keyword runs

* Add changelog entry

* Switch the wordlist filename <-> keyword around to allow tab completion

* Fix the usage example in README
2019-11-10 23:30:54 +02:00
SakiiR
e200bd11f7 Added lines count to filter/matcher and stdout + csv + json (#71)
* Added HTML and Markdown output support

* Add HTML color code in HTML template

* Added lines count

* Added content lines to json + csv

* Added changelog entry

* Fixed copy paste mistake

* Changed the html report to be grepable :)

* Grepable output fixed

* Fixed lines count
2019-11-09 22:09:12 +02:00
SakiiR
826ebbc21c Added HTML and Markdown output support (#63)
* Added HTML and Markdown output support

* Add HTML color code in HTML template

* Added changelog entry

* Fixed copy paste mistake

* Changed the html report to be grepable :)

* Grepable output fixed
2019-11-08 16:18:27 +02:00
Ossi Väänänen
8d057ea177 Match both %ext% and %EXT% in DirSearch compatibility mode (#81)
* Match both %ext% and %EXT%

* Match both %ext% and %EXT%

* Case insensitive regex search & replace
2019-10-24 13:25:07 +03:00
Tapio Vuorinen
44723e2b06 Custom autocalibration strings (#56)
* removed dead(?) code

* Added -acc for custom auto-calibration strings. Resolves #53

* don't use the calibration url templates when custom calibration paths are given

* added changelog entry about -acc flag
2019-10-15 15:38:45 +03:00
Daniel Lawson
adec6a9074 Modified thresholds on autocalibrate filter to > 0 instead of > 1 (#80) 2019-10-15 15:35:20 +03:00
SakiiR
081e40f97e Added redirect location in stdout output (#59)
* Added redirect location in stdout output

* Keep conditional logic outside of the resultNormal function + Better help message for redirect location

* Moved GetRedirectLocation as a Response public method

* Added changelog entry + (Redirect become ->)
2019-10-14 11:29:37 +03:00
Tapio Vuorinen
55662e607a Http verb fuzzing (#57)
* typo fix

* Allow fuzzing of http method. Resolves #54
2019-09-02 17:18:36 +03:00
Tapio Vuorinen
08c4cb4f6f Added support for using ranges in size, word count or status code matching/filtering (#47)
* allow ranges on response size matching/filtering

* allow ranges on word count matching/filtering

* allow ranges on http status matching/filtering

* documentation update about using ranges in size, word count and status code filtering/matching

* moved valuerange code to ffuf main package
2019-06-27 18:26:19 +03:00
Joona Hoikkala
0210d423de
Prepare v0.11git (#42) 2019-06-17 00:50:10 +03:00
Joona Hoikkala
58069582ca
Release010 (#41)
* Prepare release 0.10

* Readme fixes
2019-06-17 00:46:43 +03:00
Joona Hoikkala
8883aea432
New input provider --input-cmd (#40)
* New input provider: command

* Set env var and move to Windows and POSIX constants for shell instead of CLI flag.

* Display position instead of input payload when --input-cmd is used

* Update README

* Fix README and flags help

* Add an example to README
2019-06-17 00:42:42 +03:00
Tapio Vuorinen
0295abb917 Wordlist standard input mode (#36)
* ignore the compiled binary

* added possibility to read wordlist from standard input with -w -

* Update README.md

Co-Authored-By: Joona Hoikkala <joohoi@users.noreply.github.com>

* Update main.go

Co-Authored-By: Joona Hoikkala <joohoi@users.noreply.github.com>

* updated changelog about the wordlist standard input mode

* Update README.md

Co-Authored-By: Joona Hoikkala <joohoi@users.noreply.github.com>
2019-06-04 15:20:31 +03:00
Joona Hoikkala
7fe5786c24
Refactor calibration and filter addition / removal to correct modules. (#34) 2019-04-28 19:36:48 +03:00
Joona Hoikkala
45bffbffca
Refactor progress functionality to correct modules (#33) 2019-04-28 01:08:09 +03:00
Corben Leo
752002d56b Add -timeout flag for customizable HTTP Request timeouts (#31)
* Add -timeout flag to specify HTTP request timeouts
2019-04-27 10:29:05 +03:00
Joona Hoikkala
4d0977a7d8
Feature to autocalibrate the size and word count filters (#30) 2019-04-20 20:46:43 +03:00
Joona Hoikkala
11ece7db17
Release 0.9 done (#28) 2019-04-13 16:28:47 +03:00
Joona Hoikkala
4ba34331ae
Release 0.9 (#27) 2019-04-13 16:24:43 +03:00
Joona Hoikkala
5cae980767
Add wildcard option to status code matcher (#26) 2019-04-13 16:02:00 +03:00
Joona Hoikkala
87c4e11674 Correctly add entries without extension identifier 2019-04-11 01:46:48 +03:00
Joona Hoikkala
4b0be687f2 Add -e flag to append extensions to wordlist entries and -D for DirSearch wordlist format compatiiblity 2019-04-11 01:46:48 +03:00
Corben Leo
d1e87c3ce5 Add -e flag for Extensions. Replaces %EXT% in the given wordlist 2019-04-11 01:46:48 +03:00
Joona Hoikkala
950a9e8c8f
Fix verifytls (#22)
* Fix wording and make tls verify more intuitive

* Fix README.md
2019-04-06 18:54:27 +03:00
europa
404e413d47 skip ssl check by default (#17) 2019-04-06 18:37:42 +03:00
SolomonSklash
ddf2a4d5d5 Fixed typo. (#16)
Recieving -> Receiving.
2019-04-05 10:43:23 +03:00
Joona Hoikkala
b9c9c92418
Connection error handling, and options to stop execution (#15) 2019-04-03 23:11:49 +03:00
Sebastian Lawniczak
53361352aa Add option to follow redirects (#13) 2019-04-03 12:54:32 +03:00
Sebastian Lawniczak
9934cfdfc3 Add output to CSV file (#12) 2019-04-03 12:51:42 +03:00
Joona Hoikkala
a8b7b56348
Bump version (#10) 2019-03-30 01:54:27 +02:00
Joona Hoikkala
81c398eeb0
Make regex filter match headers too 2019-03-30 01:38:37 +02:00
Joona Hoikkala
35f02c622b
Merge remote-tracking branch 'origin/master' into json_out 2019-03-30 01:09:49 +02:00
Joona Hoikkala
baa8bdb6b5
Option for JSON file output 2019-03-30 01:02:41 +02:00
Joona Hoikkala
e9f2dfd1c9
New flag to stop on spurious 403 responses 2019-03-28 14:23:33 +02:00
Joona Hoikkala
3f3b5c31db
Prepare for v0.8 2019-01-21 22:43:50 +02:00
Joona Hoikkala
582aa00833
Added proxy functionality 2019-01-21 22:43:04 +02:00
Joona Hoikkala
4563a93b46
Add delay option to ffuf 2018-12-06 00:57:42 +02:00
Joona Hoikkala
66c46c35c0
Bump the version and add -V 2018-11-15 10:47:43 +02:00