Ranga428/Recon_Bug_Bounty

GitHub: Ranga428/Recon_Bug_Bounty

一款专为 Bug Bounty 设计的模块化 Bash 侦察流水线,集成子域名枚举、漏洞扫描与报告生成功能。

Stars: 0 | Forks: 0

# RECON — Bug Bounty 侦察流水线 ``` ██████╗ ███████╗ ██████╗ ██████╗ ███╗ ██╗ ██╔══██╗██╔════╝██╔════╝██╔═══██╗████╗ ██║ ██████╔╝█████╗ ██║ ██║ ██║██╔██╗ ██║ ██╔══██╗██╔══╝ ██║ ██║ ██║██║╚██╗██║ ██║ ██║███████╗╚██████╗╚██████╔╝██║ ╚████║ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝ ``` 一个模块化的 Bash 侦察流水线,专为 Bug Bounty 猎人设计。只需指向一个域名或范围文件,它就会自动运行子域名枚举、存活主机检测、URL 和参数收集、技术指纹识别、目录模糊测试、截图和漏洞扫描——然后将所有内容写入结构化的 Markdown 报告中。 ## 目录 - [功能](#features) - [环境要求](#requirements) - [安装](#installation) - [配置](#configuration) - [用法](#usage) - [模式](#modes) - [流水线阶段](#pipeline-phases) - [输出结构](#output-structure) - [技巧与工作流](#tips--workflow) - [故障排除](#troubleshooting) ## 功能 - **3 种扫描模式** — lite(轻量)、standard(标准)和 full(完整)——平衡速度与深度 - **自动添加 HackerOne 研究员请求头** 标记所有直接请求 - **子域名枚举** 通过 subfinder 和 amass - **存活主机检测** 包含状态码、标题和技术检测 - **URL 与参数收集** 来自 gau(被动)和 katana(主动爬取) - **高价值参数过滤** 针对易受 SQLi 攻击的参数 - **技术指纹识别** 使用 whatweb - **目录模糊测试** 使用 ffuf - **屏幕截图** 通过 gowitness 对所有存活主机进行截图 - **漏洞扫描** 使用 nuclei(泄露信息、中/高/严重级别) - **XSS 检测** 使用 dalfox 扫描所有带参数的 URL - **SQL 注入测试** 在高价值参数上使用 sqlmap - **端口扫描** 使用 nmap(仅限 full 模式) - **Markdown 报告** 针对每个目标自动生成 ## 环境要求 - Linux(已在 Kali 上测试) - Go 1.18+ - Bash / Zsh ## 安装 ### 1. 克隆仓库 ``` git clone https://github.com/YOUR_USERNAME/recon.git cd recon chmod +x recon.sh ``` ### 2. 安装所有依赖 ``` ./recon.sh --install-deps ``` 这将安装所有必需的 apt 软件包(`nmap`、`sqlmap`、`whatweb`、`ffuf`、`amass`)和 Go 工具(`subfinder`、`httpx`、`nuclei`、`katana`、`gau`、`dalfox`、`gowitness`、`assetfinder`)。它还会拉取最新的 nuclei 模板。 ### 3. 将 Go bin 添加到 PATH 脚本在运行时会自动设置此项,但要使其永久生效: ``` echo 'export PATH="$(go env GOPATH)/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` ### 4. 项目结构 首次运行任何扫描时,脚本会自动创建两个目录: ``` recon/ ← all scan output lands here, one timestamped folder per target scope/ ← store your scope files here to keep things organised ``` 将你的范围文件放在 `scope/` 文件夹中,并使用 `-s` 引用它们: ``` ./recon.sh -s scope/getyourguide.txt ./recon.sh -s scope/hackerone_program.txt ``` ## 配置 在 `recon.sh` 的顶部,设置你的 HackerOne 用户名: ``` H1_USER="YourH1Username" ``` 这将作为 `X-HackerOne-Research: YourH1Username` 注入到所有直接的 HTTP 请求中(httpx、katana、nuclei、dalfox、ffuf、whatweb)。这能向目标的安全团队标识你的流量,并确保你符合负责任的披露规范。 ## 用法 ``` # 单个域名 ./recon.sh -d target.com # Scope 文件 (每行一个域名) ./recon.sh -s scope.txt # Full 模式并使用自定义线程数 ./recon.sh -d target.com -m full -t 100 # Verbose — 在运行每条命令前打印该命令 ./recon.sh -d target.com -v # 显示帮助 ./recon.sh -h ./recon.sh --help ``` ### 标志 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-d` | 目标域名 | — | | `-s` | 范围文件(每行一个域名) | — | | `-m` | 模式:`lite`、`standard`、`full` | `standard` | | `-t` | 线程数 | `50` | | `-v` | 详细模式 — 运行前打印每条命令 | 关闭 | | `-h` / `--help` | 显示用法 | — | | `--install-deps` | 安装所有必需工具 | — | ### 范围文件格式 范围文件位于 `scope/` 文件夹中。每行一个纯域名——不要包含协议、路径或尾部斜杠。注释和空行将被忽略。 ``` # scope/getyourguide.txt # 注释和空行将被忽略 target.com api.target.com staging.target.com ``` 使用以下命令运行: ``` ./recon.sh -s scope/getyourguide.txt ``` ## 模式 ### `lite`(约 15 分钟) 最适合快速分类或大型范围文件。仅运行核心链路。 ``` subfinder → httpx → gau → nuclei (exposures) ``` ### `standard`(约 45 分钟)— 默认 增加主动爬取、目录模糊测试、截图和技术检测。 ``` subfinder → httpx → gau → katana → nuclei (exposures) → whatweb → ffuf → gowitness ``` ### `full`(约 1–2 小时) 包含 standard 的所有内容,外加端口扫描和漏洞测试。 ``` subfinder + amass → httpx → gau → katana → nuclei (exposures + medium/high/critical) → whatweb → ffuf → gowitness → nmap → dalfox → sqlmap ``` ## 流水线阶段 ### 阶段 1 — 子域名枚举 运行 subfinder(所有来源)和 amass(被动模式,仅限 full 模式)。合并并去重结果,然后使用 httpx 检查所有子域名的存活主机,包含状态码、页面标题和技术检测。 **输出:** - `subdomains/subfinder.txt` — 原始 subfinder 结果 - `subdomains/amass.txt` — 原始 amass 结果(full 模式) - `subdomains/all_subs.txt` — 合并、去重后的结果 - `subdomains/alive.txt` — 包含状态 + 标题 + 技术的存活主机 - `subdomains/alive_urls.txt` — 供下游工具使用的纯 URL ### 阶段 2 — URL 与参数收集 从 gau 获取历史 URL(Wayback Machine + CommonCrawl,被动——无直接请求)。在 standard/full 模式下,katana 会主动爬取所有存活主机,深度最高为 5。 所有 URL 合并后,过滤为: - 包含参数的 URL - **高价值参数** 匹配诸如 `id=`、`user=`、`file=`、`url=`、`redirect=`、`token=`、`debug=`、`admin=`、`path=` 等模式 - **高价值端点** 匹配诸如 `login`、`admin`、`api`、`upload`、`reset`、`oauth`、`token`、`redirect`、`debug`、`config`、`backup` 等模式 **输出:** - `urls/gau.txt`、`urls/katana.txt` — 原始 URL 来源 - `urls/all_urls.txt` — 合并、去重后的结果 - `urls/juicy.txt` — 过滤出的高关注度端点 - `params/all_params.txt` — 所有带参数的 URL - `params/hv_params.txt` — 高价值参数 URL(SQLi 候选) ### 阶段 3 — 技术指纹识别与内容发现 在所有存活主机上运行 whatweb 以识别技术。Nuclei 扫描泄露信息(配置文件、密钥、敏感路径)。在 standard/full 模式下:gowitness 对每个存活主机进行截图,ffuf 使用 `/usr/share/wordlists/common.txt` 或 seclists(如果可用)对主域名进行目录模糊测试。 **输出:** - `tech/whatweb.txt` — 技术指纹结果 - `vulns/nuclei_exposures.txt` — nuclei 泄露发现 - `screenshots/` — gowitness 截图 - `urls/ffuf.json` — ffuf 目录模糊测试结果 ### 阶段 4 — 端口扫描 *(仅限 full 模式)* 运行带有服务检测(`-sV`)的 nmap 对主域名进行扫描,扫描前 1000 个端口。 **输出:** - `ports/nmap.txt` — nmap 扫描结果 ### 阶段 5 — 漏洞扫描 *(仅限 full 模式)* 三个并行的漏洞检查: 1. **nuclei** — 使用中/高/严重严重级别的模板扫描所有存活主机 2. **dalfox** — 对每个带参数的 URL 进行 XSS 测试 3. **sqlmap** — 仅对高价值参数 URL 进行 SQL 注入测试(批量处理,级别 2,风险 2) **输出:** - `vulns/nuclei_full.txt` — nuclei 漏洞发现 - `vulns/dalfox.txt` — XSS 发现 - `vulns/sqlmap/` — 每个 URL 的 sqlmap 会话输出 ## 输出结构 每次运行都会在 `recon/` 下创建一个带时间戳的目录: ``` recon/ └── target.com_2026-04-04_02-04-24/ ├── report.md ← auto-generated markdown report ├── recon.log ← full tool output / errors ├── subdomains/ │ ├── subfinder.txt │ ├── amass.txt (full mode only) │ ├── all_subs.txt │ ├── alive.txt │ └── alive_urls.txt ├── urls/ │ ├── gau.txt │ ├── katana.txt (standard/full) │ ├── all_urls.txt │ ├── juicy.txt │ └── ffuf.json (standard/full) ├── params/ │ ├── all_params.txt │ └── hv_params.txt ├── ports/ │ └── nmap.txt (full only) ├── screenshots/ (standard/full) ├── tech/ │ └── whatweb.txt └── vulns/ ├── nuclei_exposures.txt ├── nuclei_full.txt (full only) ├── dalfox.txt (full only) └── sqlmap/ (full only) ``` 每次运行目录中的 `report.md` 包含一个汇总表以及每个输出文件的前 100 行,以便快速查看。 ## 技巧与工作流 **对新目标先使用 lite 模式** 以快速了解概况,然后在感兴趣的子域名上升级到 full 模式。 ``` ./recon.sh -d target.com -m lite # 查看输出,识别感兴趣的子域名 ./recon.sh -d interesting.target.com -m full ``` **优先检查高价值端点** ——这些是信号最强的切入点: ``` cat recon/target.com_*/urls/juicy.txt ``` **审查高价值参数以进行手动测试** ——sqlmap 无法捕获所有内容: ``` cat recon/target.com_*/params/hv_params.txt ``` **IDOR 狩猎** ——收集的 URL 中类似 `partner_id=` 的参数值得手动测试是否存在不安全的直接对象引用。交换数值,检查是否有不同的用户响应。 **调试时使用详细模式** 以确切查看正在运行的内容: ``` ./recon.sh -d target.com -v 2>&1 | tee debug.log ``` **使用范围文件并行运行多个域名** ——流水线按顺序循环处理每个域名,但你可以将整个过程置于后台运行: ``` nohup ./recon.sh -s scope.txt -m standard > output.log 2>&1 & tail -f output.log ``` ## 故障排除 ### 安装后找不到工具 Go 二进制路径可能不在你的 shell PATH 中。将其永久添加: ``` echo 'export PATH="$(go env GOPATH)/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` 然后打开一个新的终端并验证: ``` which subfinder httpx nuclei katana ``` ### 错误的 `httpx` 二进制文件 Kali 在 `/usr/bin/httpx` 提供了一个基于 Python 的 `httpx`。脚本在运行时会强制将 Go 的 bin 路径放在 PATH 的最前面以覆盖此设置。如果你仍然遇到问题,请验证正在运行的是哪一个: ``` httpx --version # 应该输出类似以下内容:projectdiscovery/httpx v1.x.x ``` 如果显示 Python 版本,请重新安装 Go 版本: ``` go install github.com/projectdiscovery/httpx/cmd/httpx@latest ``` ### Nuclei "no templates" 错误 模板应位于 `~/nuclei-templates`。使用以下命令更新它们: ``` nuclei -update-templates ``` ### ffuf 跳过 — 未找到字典 安装 seclists: ``` sudo apt install seclists ``` 或者通过编辑脚本中的 `phase_tech_and_fuzz` 函数手动设置字典。 ### `gau.toml` 配置警告 此警告无害 ——gau 在没有配置文件的情况下也能正常运行。要消除此警告,请创建一个空配置: ``` touch ~/.gau.toml ``` ## 免责声明 此工具仅用于授权的安全测试。请仅在获得明确许可的目标上运行。务必在 Bug Bounty 计划定义的范围内操作。作者不对滥用行为负责。
标签:Ffuf, Gau, Markdown报告, URL采集, 子域名枚举, 安全分析, 实时处理, 密码管理, 应用安全, 日志审计, 目录爆破, 系统安全, 网络安全, 网络探针, 自动化侦查, 资产测绘, 防御加固, 隐私保护