yellow.git


yellow

~ opinionated web scanning pipeline for pentesters in a hurry
git clone https://github.com/djnnvx/yellow.git
log | files | refs | archive | README | LICENSE

commit 7dd106c5e6276621c83019f262571c4dadcf359c
parent f46e9b622a6570beec8a43f74fca76b112560dc9
Author: djnn <[email protected]>
Date: Wed, 22 Oct 2025 22:38:49 +0200

fix(scan): adding --no-dirbusting

Diffstat:
MChangelog.md | 2++
Mcli/parser.go | 2++
Mcli/types.go | 4++++
Mscan/run.go | 10+++++++++-

4 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/Changelog.md b/Changelog.md
@@ -2,6 +2,8 @@
 
 - feat(scan): saving wappalyzer results to file ~ @djnnvx
 - feat(scan): adding cvemap module ~ @djnnvx
+- fix(scan): adding --no-dirbusting ~ @djnnvx
+
 
 ## v0.0.3
 
diff --git a/cli/parser.go b/cli/parser.go
@@ -42,6 +42,7 @@ func GetParser(opts *StandardOptions) *cobra.Command {
 			scanOpts.SetRateLimit(opts.RateLimit)
 			scanOpts.SetWordlistPath(opts.WordlistPath)
 			scanOpts.SetForceInsecure(opts.UseHttpInsecure)
+			scanOpts.SetNoGobuster(opts.NoGobuster)
 
 			if opts.TargetFilePath == "" {
 				scanOpts.Run()
@@ -148,6 +149,7 @@ func GetParser(opts *StandardOptions) *cobra.Command {
 	scanCmd.Flags().StringVarP(&opts.OutDirName, "dir-name", "d", defaults.OutDirName, "Outfile directory name (if no target-file is specified, will also be target domain)")
 	scanCmd.Flags().StringVarP(&opts.Proxy, "proxy", "p", defaults.Proxy, "Proxy URL (used for the tools supporting it. Other will prompt a warning msg)")
 	scanCmd.Flags().BoolVarP(&opts.RunDry, "dry", "", defaults.RunDry, "Run a dry-run (test mode)")
+	scanCmd.Flags().BoolVarP(&opts.NoGobuster, "no-dirbusting", "", defaults.NoGobuster, "Disable directory bruteforce (sometimes you don't need it yk...)")
 	scanCmd.Flags().BoolVarP(&opts.UseHttpInsecure, "insecure", "k", defaults.UseHttpInsecure, "Ignore SSL warnings and force http")
 	scanCmd.Flags().Int32VarP(&opts.RateLimit, "rate-limit", "r", defaults.RateLimit, "Requests rate-limit (used for the tools supporting it. Other will prompt a warning msg)")
 	scanCmd.Flags().StringVarP(&opts.WordlistPath, "wordlist", "w", defaults.WordlistPath, "Wordlist to use")
diff --git a/cli/types.go b/cli/types.go
@@ -23,6 +23,9 @@ type StandardOptions struct {
 
 	// File containing list of targets (should be a list of IP Addresses or domains)
 	TargetFilePath string
+
+	// Disable Gobuster run (we dont need it sometimes yk)
+	NoGobuster bool
 }
 
 func GetDefaultOptions() StandardOptions {
@@ -34,6 +37,7 @@ func GetDefaultOptions() StandardOptions {
 		RateLimit:       0,
 		WordlistPath:    "/usr/share/wordlists/seclists/Discovery/Web-Content/common.txt",
 		TargetFilePath:  "",
+		NoGobuster:      false,
 	}
 
 	return opts
diff --git a/scan/run.go b/scan/run.go
@@ -15,6 +15,7 @@ type ScanOpts struct {
 	rateLimit     int32
 	wordlistPath  string
 	forceInsecure bool
+	noGoBuster    bool
 }
 
 /*
@@ -26,6 +27,10 @@ var (
 	wappalyzerResults []string
 )
 
+func (opts *ScanOpts) SetNoGobuster(data bool) {
+	opts.noGoBuster = data
+}
+
 func (opts *ScanOpts) SetForceInsecure(data bool) {
 	opts.forceInsecure = data
 }
@@ -177,7 +182,10 @@ func (opts *ScanOpts) Run() {
 		opts.runWappalyzerGo()
 		opts.runCvemap()
 		opts.runHttpx()
-		opts.runGobusterDir()
+
+		if !opts.noGoBuster {
+			opts.runGobusterDir()
+		}
 
 		opts.SetScanPath(initialPath)
 	} else {