vivashu27/webjiver
GitHub: vivashu27/webjiver
一个整合多款安全工具的自动化Web侦察与端点发现工作流,旨在帮助漏洞猎人提升枚举效率。
Stars: 1 | Forks: 0
# webjiver
一个轻量级的侦察和端点发现工具,将多个子域名枚举、端口扫描和网页爬虫工具整合到一个自动化的工作流程中。
## 功能
- **子域名发现**:使用 `subfinder` 和 `assetfinder`(可选支持 `amass` 和 `knockpy`)
- **端口扫描**:使用 `naabu` 对发现的子域名进行快速端口扫描
- **HTTP 枚举**:使用 `httpx` 验证活动的 HTTP/HTTPS 端点
- **技术识别**:识别发现端点上运行的技术
- **端点发现**:结合 `paramspider`、`hakrawler` 和 `urlfinder` 的结果
- **漏洞扫描**:可选集成 `nuclei` 和 `dalfox`
- **清洁输出**:使用 `uro` 去重并规范化 URL
## 安装
### 快速安装
运行安装脚本以安装所有必需和可选工具:
```
bash install.sh
```
该脚本将:
- 检查先决条件(Go、Python3、pip)
- 安装所有必需工具
- 安装可选工具以扩展功能
- 验证安装并提供 PATH 配置说明
### 手动安装
如果希望手动安装工具:
#### 必需工具(Go)
```
go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install github.com/tomnomnom/assetfinder@latest
go install github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
go install github.com/projectdiscovery/httpx/cmd/httpx@latest
```
#### 必需工具(Python via pipx)
```
pipx install uro
pipx ensurepath # ensure pipx shims are on PATH
```
#### 可选工具(Go)
```
go install github.com/owasp-amass/amass/v4/...@latest
go install github.com/hakluke/hakrawler@latest
go install github.com/projectdiscovery/urlfinder/cmd/urlfinder@latest
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
go install github.com/hahwul/dalfox/v2@latest
```
#### 可选工具(Python)
```
# 从源代码安装 ParamSpider 的 install.sh;手动步骤:
git clone https://github.com/devanshbatham/paramspider
cd paramspider
pip install .
```
#### Knockpy(子域名扫描器)
```
git clone https://github.com/guelfoweb/knock.git
cd knock
pip install .
```
### PATH 配置
确保你的 PATH 包含:
```
# 添加到 ~/.bashrc 或 ~/.zshrc
export PATH=$PATH:$(go env GOPATH)/bin
export PATH=$PATH:$HOME/.local/bin
# 然后重新加载
source ~/.bashrc # or source ~/.zshrc
```
## 用法
### 基本用法
```
bash webjiver.sh -d example.com -o results.txt
```
### 高级用法
```
# 使用所有可选工具进行完整扫描
bash webjiver.sh \
-d example.com \
-o endpoints.txt \
--amass \
--nuclei \
--dalfox \
--top-ports 2000
# 最小化扫描(禁用可选工具)
bash webjiver.sh \
-d example.com \
-o results.txt \
--no-paramspider \
--no-hakrawler \
--no-urlfinder \
--no-tech
```
### 选项
#### 必需
- `-d, --domain`:要扫描的根域名(例如 `example.com`)
- `-o, --output`:输出文件名(保存在 `./webjiver-output/` 下)
#### 发现选项
- `--no-tech`:禁用 httpx 技术检测
- `--no-paramspider`:禁用 ParamSpider 参数发现
- `--no-hakrawler`:禁用 Hakrawler 爬取
- `--no-urlfinder`:禁用 urlfinder 提取
#### 额外工具(如果已安装)
- `--amass`:使用 amass 进行额外的子域名枚举
- `--knockpy`:使用 knockpy 进行子域名暴力破解和被动侦察
- `--nuclei`:在活动的 HTTP 目标上运行 nuclei 漏洞扫描器
- `--dalfox`:在发现的 URL 上运行 dalfox XSS 扫描器(可能产生较多噪音)
#### 调整
- `--top-ports N`:在 naabu 中使用前 N 个端口(默认:`1000`)
- `--status-codes CSV`:httpx 的 HTTP 状态码(默认:`200,301,302,403,404`)
#### 帮助
- `-h, --help`:显示帮助信息
## 输出
所有结果保存在 `./webjiver-output/` 目录中:
- `{output}.txt`:主要整合的端点文件(已去重并规范化)
- `{domain}-httpx-tech.txt`:技术检测结果(如果未使用 `--no-tech`)
- `{domain}-nuclei.txt`:nuclei 扫描结果(如果使用了 `--nuclei`)
- `{domain}-dalfox.txt`:dalfox XSS 扫描结果(如果使用了 `--dalfox`)
- `knockpy-report/`:包含完整子域名扫描结果的 Knockpy JSON 报告(如果使用了 `--knockpy`)
## 工作流程
1. **子域名发现**:使用 subfinder、assetfinder,并可选地使用 amass 和 knockpy 查找子域名
2. **端口扫描**:使用 naabu 对发现的子域名扫描顶级端口
3. **HTTP 验证**:使用 ProjectDiscovery httpx 检查哪些端点是活动的
4. **技术识别**:识别活动端点上的技术(可选)
5. **端点发现**:使用 paramspider、hakrawler 和 ProjectDiscovery urlfinder 爬取并发现端点
6. **漏洞扫描**:在发现的目标上运行 nuclei 和/或 dalfox(可选)
7. **输出**:整合、去重并规范化所有发现的 URL
## 要求
### 必需工具
- `subfinder` - 子域名枚举
- `assetfinder` - 额外的子域名发现
- `naabu` - 快速端口扫描器
- `httpx` - HTTP 探测和验证
- `uro` - URL 规范化与去重
### 可选工具
- `amass` - 高级子域名枚举
- `knockpy` - 子域名暴力破解和被动侦察 ([source](https://github.com/guelfoweb/knock))
- `paramspider` - 参数发现
- `hakrawler` - 网页爬虫
- `urlfinder` - URL 提取
- `nuclei` - 漏洞扫描器
- `dalfox` - XSS 扫描器
### 先决条件
- **Go** 1.17+(用于基于 Go 的工具)
- **Python 3**(用于基于 Python 的工具)
- **pip**(用于 Python 包安装)
- **git**(推荐,用于部分工具安装)
## 故障排除
### 安装后找不到工具
1. **检查 PATH**:确保 `$(go env GOPATH)/bin` 和 `$HOME/.local/bin` 在你的 PATH 中
2. **重新加载 Shell**:运行 `source ~/.bashrc` 或 `source ~/.zshrc`
3. **验证安装**:运行 `which toolname` 检查工具是否在 PATH 中
### 安装失败
- **Go 工具**:确保 Go 已正确安装且 GOPATH 已设置
- **Python 工具**:确保 pip3 已安装并正常工作
- **权限错误**:对 pip 安装使用 `--user` 标志或以适当权限运行
### 未找到子域名
- 检查域名是否有效且可访问
- 尝试使用 `--amass` 标志进行更全面的枚举
- 验证是否已为 subfinder 配置了 API 密钥(如需要)
### 未找到活动的 HTTP 目标
- 该域名可能没有任何 Web 服务在运行
- 尝试增加 `--top-ports` 值
- 检查防火墙是否阻止了端口扫描
## 原始来源
这是对原始 `webjiver.sh` 的改进版本,来源于:
- 仓库:https://github.com/vivashu27/webjiver
- 原始脚本:https://raw.githubusercontent.com/vivashu27/webjiver/main/webjiver.sh
## 相比原始版本的改进
- ✅ 使用标志而非提示的非交互式 CLI
- ✅ 更好的错误处理和工具验证
- ✅ 使用自动清理的安全临时文件处理
- ✅ 结构化的输出目录
- ✅ 可选工具集成(amass、nuclei、dalfox)
- ✅ 使用 httpx 的技术识别
- ✅ 可配置的端口扫描和状态码过滤
- ✅ 全面的安装脚本
- ✅ 更好的日志和进度指示
## 许可证
本项目基于原始的 webjiver.sh。请参考原始仓库获取许可信息。
## 免责声明
本工具仅用于授权的安全测试和教育目的。仅在你拥有或明确获得许可的系统上使用。未经授权访问计算机系统是非法的。
标签:Bug赏金, Go安全工具, HTTP探测, Python安全工具, SEO, Web探测, Web爬虫, 关键词优化, 动态插桩, 子域名枚举, 开源安全工具, 技术识别, 数据统计, 日志审计, 端口扫描, 系统安全, 自动化侦察, 运行时操纵, 逆向工具, 逆向工程平台