diff --git a/main.go b/main.go index 9a4f11f..221c811 100644 --- a/main.go +++ b/main.go @@ -70,6 +70,7 @@ func main() { flag.StringVar(&opts.outputFormat, "of", "json", "Output file format. Available formats: json, csv, ecsv") flag.BoolVar(&conf.Quiet, "s", false, "Do not print additional information (silent mode)") flag.BoolVar(&conf.StopOn403, "sf", false, "Stop when > 90% of responses return 403 Forbidden") + flag.BoolVar(&conf.FollowRedirects, "r", false, "Follow redirects") flag.IntVar(&conf.Threads, "t", 40, "Number of concurrent threads.") flag.BoolVar(&opts.showVersion, "V", false, "Show version information.") flag.Parse() diff --git a/pkg/ffuf/config.go b/pkg/ffuf/config.go index 78c276a..9df4f9c 100644 --- a/pkg/ffuf/config.go +++ b/pkg/ffuf/config.go @@ -16,25 +16,26 @@ type optRange struct { } type Config struct { - StaticHeaders map[string]string - FuzzHeaders map[string]string - Method string - Url string - TLSSkipVerify bool - Data string - Quiet bool - Colors bool - Wordlist string - OutputFile string - OutputFormat string - StopOn403 bool - Delay optRange - Filters []FilterProvider - Matchers []FilterProvider - Threads int - Context context.Context - ProxyURL func(*http.Request) (*url.URL, error) - CommandLine string + StaticHeaders map[string]string + FuzzHeaders map[string]string + Method string + Url string + TLSSkipVerify bool + Data string + Quiet bool + Colors bool + Wordlist string + OutputFile string + OutputFormat string + StopOn403 bool + FollowRedirects bool + Delay optRange + Filters []FilterProvider + Matchers []FilterProvider + Threads int + Context context.Context + ProxyURL func(*http.Request) (*url.URL, error) + CommandLine string } func NewConfig(ctx context.Context) Config { @@ -48,6 +49,7 @@ func NewConfig(ctx context.Context) Config { conf.Data = "" conf.Quiet = false conf.StopOn403 = false + conf.FollowRedirects = false conf.ProxyURL = http.ProxyFromEnvironment conf.Filters = make([]FilterProvider, 0) conf.Delay = optRange{0, 0, false, false} diff --git a/pkg/runner/simple.go b/pkg/runner/simple.go index 2898f3a..79ab5e5 100644 --- a/pkg/runner/simple.go +++ b/pkg/runner/simple.go @@ -38,6 +38,10 @@ func NewSimpleRunner(conf *ffuf.Config) ffuf.RunnerProvider { InsecureSkipVerify: conf.TLSSkipVerify, }, }} + + if conf.FollowRedirects { + simplerunner.client.CheckRedirect = nil + } return &simplerunner }