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采集, 子域名枚举, 安全分析, 实时处理, 密码管理, 应用安全, 日志审计, 目录爆破, 系统安全, 网络安全, 网络探针, 自动化侦查, 资产测绘, 防御加固, 隐私保护