yellow~ opinionated web scanning pipeline for pentesters in a hurry |
| git clone https://github.com/djnnvx/yellow.git |
| log | files | refs | archive | README | LICENSE |
README.md (7615B)
1 ~ yellow 2 3 ``` 4 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣤⣤⣤⣤⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 5 ⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠻⠿⢿⣿⣿⣿⣿⣿⣶⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 6 Y E L L O W ⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⣿⣿⣿⣿⣿⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 7 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣷⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀ 8 -------- ⠀⠀⢸⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣙⢿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀ 9 ⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠻⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀ 10 djnn.sh⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀ 11 ⠀v0.0.8 ⠀⠀⢠⣿⣿⣿⣿⡟⠹⠿⠟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀ 12 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡿⠋⡬⢿⣿⣷⣤⣤⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀ 13 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡇⢸⡇⢸⣿⣿⣿⠟⠁⢀⣬⢽⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀ 14 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣧⣈⣛⣿⣿⣿⡇⠀⠀⣾⠁⢀⢻⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀ 15 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣧⣄⣀⠙⠷⢋⣼⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ 16 ⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ 17 ⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁ 18 ⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀ 19 ⠸⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀ 20 ⠀⢹⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀ 21 ⠀⠀⠹⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀ 22 ⠀⠀⠀⠙⣿⣿⣿⣿⣿⣶⣤⣀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿s/o jenaye :)~⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀ 23 ⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿matro7sh⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀ 24 ⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀ 25 ⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀ 26 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠈⠂⠀⠀⠀ 27 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠛⠛⠛⠛⠛⠛⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 28 29 <=[ Pentest companion for scanning, OSINT, and quick wins ]=> 30 ``` 31 32 **yellow** is a tiny golang CLI to quickly set up scanning at the beginning of a pentest. :)~ 33 34 Based on yelaa: https://github.com/matro7sh/Yelaa. 35 36 ## Disclaimer 37 38 This software is provided as-is, at the discretion of professionals. 39 Developpers assume no responsability for your lack of morals or overall stupidity. 40 Please use at your own risk, in a controlled environnement. Thanks<3 41 42 ## Installing 43 44 Using go v1.27. 45 46 ```bash 47 git clone https://evil.djnn.sh/yellow.git 48 cd yellow/ 49 make # or: make docker 50 ``` 51 52 The docker image ships chromium. On the host, katana and httpx download their own 53 (~150MB) on first run if no chrome is installed. 54 55 ## Running 56 57 Every tool is a `core.Module` (see `core/module.go`), wired in as a library rather 58 than shelled out. Run any subcommand with `--help` for its flags. 59 60 ### Directory tree 61 62 ```bash 63 ./yellow -d djnn.sh 64 ``` 65 66 Creates `extracted/{assets,code,creds}`, `scans/{infra,nessus,screenshots,ssl}` and 67 `www/{exploits,tools}` under `djnn.sh/`. 68 69 ### Passive enumeration 70 71 ```bash 72 ./yellow osint -d djnn.sh 73 ``` 74 75 subfinder, assetfinder, dnsx, gau, alterx, dorks, leaker, shodan. Discovered assets 76 land in `scans/domains.txt`. Each IP is also mapped to its ASN and BGP prefix 77 (`asn.json`) over DNS via Team Cymru, with Shadowserver as a fallback. 78 79 That ASN data is informational and never feeds back into scanning. For a cloud-hosted 80 target the prefix belongs to the provider and can span millions of unrelated addresses, 81 so those are flagged `hosting_provider: true`. Treat it as a scope boundary, not a 82 target list. 83 84 ### Prune dead hosts 85 86 osint returns historical domains, plenty of which are gone. Filter to the live ones: 87 88 ```bash 89 ./yellow prune -f djnn.sh/scans/domains.txt -o djnn.sh/scans/web-targets.txt 90 ``` 91 92 ### Active scans 93 94 ```bash 95 ./yellow scan -d djnn.sh/scans/infra --file djnn.sh/scans/web-targets.txt 96 ``` 97 98 Default pipeline: sitemap, robots.txt, katana crawl, secret scan, tlsx, wappalyzergo, 99 cvemap, httpx. Opt in to more: 100 101 ```bash 102 ./yellow scan -d djnn.sh --port-scan # TCP + service fingerprinting 103 ./yellow scan -d djnn.sh --gobuster # dir bruteforce, rooted at crawled dirs 104 ./yellow scan -d djnn.sh --nuclei # downloads ~hundreds of MB of templates 105 ``` 106 107 Disable the slow defaults with `--no-katana` and `--no-secrets`. 108 109 Katana drives a real browser, so it picks up endpoints that only appear once JavaScript 110 has run. Its URLs feed the secret scan, gobuster and nuclei, bounded by 111 `--katana-max-urls`. 112 113 The secret scan re-fetches each crawled URL and runs the `gitleaks` rule set over it, 114 writing `secrets.json`. **That file holds raw secret values.** gitleaks is tuned for 115 source repos, so minified JS throws high-entropy false positives: treat findings as 116 leads. Rule ID and entropy are recorded so noisy rules are easy to spot. 117 118 Port scanning checks every resolved IP against `cdncheck` first. Hosts behind a WAF are 119 annotated in `portscan.json` and skipped, since you would only be scanning the reverse 120 proxy. CDN and cloud ranges are annotated but still scanned, because cdncheck files 121 ordinary cloud compute under `cdn`, and skipping that would drop real origins. 122 123 ### Fingerprint only 124 125 Wappalyzer plus CVE lookup, without the rest of the scan: 126 127 ```bash 128 ./yellow fingerprint -d djnn.sh/scans/infra --file djnn.sh/scans/web-targets.txt 129 ``` 130 131 ## Environment 132 133 All optional. Modules self-skip when their key is absent. 134 135 | variable | unlocks | 136 |---|---| 137 | `NVD_API_KEY` | faster CVE lookups ([free key](https://nvd.nist.gov/developers/request-an-api-key)); without one NVD allows 5 requests per 30s and yellow sleeps 7s between queries | 138 | `SHODAN_API_KEY` | the shodan module | 139 | `LEAKER_PROVIDER_CONFIG` | path to a leaker provider config, e.g. `~/.config/leaker/provider-config.yml` containing `leakcheck: [your-key]` | 140 | `HTTP_PROXY` | set for you by `-p/--proxy` | 141 142 ## Contributing 143 144 This software's code is public, but not open to contributions. If something is 145 integrated, I want to be sure I can maintain it afterwards. 146 147 Ideas are welcome though: https://djnn.sh/pgp