ASYquan/Web-Hacking-Toolbox
GitHub: ASYquan/Web-Hacking-Toolbox
一套可组合的 Bash 侦察脚本集,通过管道串联实现从子域名发现到目录枚举的完整 Web 资产探测流程。
Stars: 0 | Forks: 0
# Web Hacking 工具箱
用于 Bug Bounty 侦察和枚举的 Bash 脚本集合。每个脚本既可以独立使用(通过 CLI 标志),也可以从标准输入(stdin)读取数据,因此你可以将它们通过管道串联在一起。
所有脚本遵循相同的模式:使用标志传递目标以进行手动操作,或通过管道输入目标以实现自动化。
## 脚本
- [github_secret_scan.sh](#github-secret-scan) - 扫描 GitHub 组织的仓库以查找泄露的机密信息
- [crtsh_subs.sh](#crtsh-subdomain-scraper) - 从证书透明度日志中提取子域名
- [puredns_brute.sh](#puredns-brute-force) - DNS 暴力破解子域名发现
- [alterx_permute.sh](#alterx-permutations) - 基于已知列表生成子域名排列组合
- [scope_filter.sh](#scope-filter) - 过滤域名列表,仅保留在范围内的目标
- [subfinder_httpx.sh](#subfinder--httpx-probe) - 发现子域名并探测存活主机
- [vhost_fuzz.sh](#vhost-fuzzing) - 通过 Host 头模糊测试发现虚拟主机
- [ferox_enum.sh](#feroxbuster-directory-enumeration) - 递归目录和文件暴力破解
## 环境要求
不同的脚本需要不同的工具。请根据需要安装:
| 工具 | 安装命令 | 使用脚本 |
|------|---------|---------|
| [Kingfisher](https://github.com/WithSecureLabs/kingfisher) | `pipx install kingfisher` | github_secret_scan |
| [pureDNS](https://github.com/d3mondev/puredns) | `go install github.com/d3mondev/puredns/v2@latest` | puredns_brute |
| [subfinder](https://github.com/projectdiscovery/subfinder) | `go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest` | subfinder_httpx |
| [httpx](https://github.com/projectdiscovery/httpx) | `go install github.com/projectdiscovery/httpx/cmd/httpx@latest` | subfinder_httpx |
| [alterx](https://github.com/projectdiscovery/alterx) | `go install github.com/projectdiscovery/alterx/cmd/alterx@latest` | alterx_permute |
| [ffuf](https://github.com/ffuf/ffuf) | `go install github.com/ffuf/ffuf/v2@latest` | vhost_fuzz |
| [feroxbuster](https://github.com/epi052/feroxbuster) | `sudo apt install feroxbuster` | ferox_enum |
| curl, jq | `sudo apt install curl jq` | crtsh_subs, github_secret_scan |
字典:大多数脚本默认使用 `/usr/share/wordlists/SecLists-master/` 下的路径。如果你没有 SecLists,请获取它:
```
sudo git clone https://github.com/danielmiessler/SecLists.git /usr/share/wordlists/SecLists-master
```
## GitHub 机密扫描
从 GitHub 组织拉取每一个仓库,并对每个仓库运行 Kingfisher。自动处理 API 分页。
```
# 手动
./github_secret_scan.sh -o TargetOrg -t ghp_yourtoken
# 使用 env var
export GITHUB_TOKEN=ghp_yourtoken
./github_secret_scan.sh -o TargetOrg
# 自定义输出和速率限制延迟
./github_secret_scan.sh -o TargetOrg -t ghp_yourtoken -f results.txt -d 2
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-o` | GitHub 组织名称(必填) | |
| `-t` | GitHub 个人访问令牌 | `$GITHUB_TOKEN` |
| `-f` | 输出文件 | `kingfisher__secretscan.txt` |
| `-p` | 每 API 页的仓库数(最大 100) | `100` |
| `-d` | 扫描间隔延迟(秒) | `0` |
## crt.sh 子域名抓取器
查询 crt.sh 上的证书透明度日志以查找子域名。有两种模式:常规(非通配符)和通配符提取。
```
# 获取非 wildcard 子域名
./crtsh_subs.sh -d example.com
# 获取 wildcard 子域名(去除 *. 前缀)
./crtsh_subs.sh -d example.com -w
# Pipe 多个域名
cat domains.txt | ./crtsh_subs.sh
# 保存到文件并同时输出到 stdout
./crtsh_subs.sh -d example.com -o subs.txt
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-d` | 目标域名 | |
| `-w` | 通配符模式(提取通配符子域) | off |
| `-o` | 输出文件 | 仅标准输出 |
## pureDNS 暴力破解
使用 pureDNS 暴力破解子域名,支持可配置的速率限制和解析器列表。
```
# 手动
./puredns_brute.sh -d example.com
# 自定义速率限制
./puredns_brute.sh -d example.com -R 500 -T 150
# Pipe 域名
cat targets.txt | ./puredns_brute.sh -R 500
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-d` | 目标域名 | |
| `-w` | DNS 字典 | `dns-Jhaddix.txt` |
| `-r` | 解析器文件 | `/usr/share/wordlists/resolvers.txt` |
| `-R` | 速率限制(公共解析器) | `1000` |
| `-T` | 速率限制(可信解析器) | `300` |
| `-o` | 输出文件 | `.puredns.txt` |
## alterx 排列组合
获取已知子域名列表并生成排列组合,以查找你可能遗漏的子域名。
```
# 从文件
./alterx_permute.sh -i known_subs.txt
# 从另一个脚本 Piped
./crtsh_subs.sh -d example.com | ./alterx_permute.sh
# 保存输出
./alterx_permute.sh -i subs.txt -o permutations.txt
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-i` | 包含子域名的输入文件 | |
| `-o` | 输出文件 | 仅标准输出 |
| `-e` | 丰富模式 | on |
## 范围过滤器
使用正则表达式模式过滤域名列表。默认情况下,它保留匹配的行(在范围内)。使用 `-v` 反转匹配并改为丢弃匹配项。
```
# 仅保留范围内域名
cat all_subs.txt | ./scope_filter.sh -s "example\.com"
# 从文件,保存输出
./scope_filter.sh -s "example\.com" -i all_subs.txt -o inscope.txt
# 反转:移除特定域名
cat subs.txt | ./scope_filter.sh -s "staging\.example\.com" -v
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-s` | 范围的正则表达式模式(必填) | |
| `-i` | 输入文件 | stdin |
| `-o` | 输出文件 | 仅标准输出 |
| `-v` | 反转匹配(保留不匹配项) | off |
## Subfinder + httpx 探测
使用 subfinder 发现子域名,并立即用 httpx 探测它们以获取状态码、标题、Web 服务器、ASN 信息等。基于 jhaddix 侦察单行命令。
```
# 单个域名
./subfinder_httpx.sh -d example.com
# 从 apex 域名文件
./subfinder_httpx.sh -f apex_domains.txt
# Pipe 目标
cat apexes.txt | ./subfinder_httpx.sh
# 自定义端口和输出目录
./subfinder_httpx.sh -d example.com -p "80,443,8080" -o ./results/
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-d` | 目标域名 | |
| `-f` | 包含顶域的文件 | |
| `-o` | 输出目录 | 当前目录 |
| `-p` | 要探测的端口 | `80,8080,443,8443,4443,8888` |
| `-t` | httpx 线程数 | `15` |
| `-a` | 使用所有 subfinder 来源 | on |
## VHost 模糊测试
使用 ffuf 对 Host 头进行模糊测试,以发现未在 DNS 中公开列出的虚拟主机。
```
# 手动
./vhost_fuzz.sh -u https://example.com
# 使用过滤
./vhost_fuzz.sh -u https://example.com -fc 404,302
# Pipe 目标
cat live_hosts.txt | ./vhost_fuzz.sh -t 20
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-u` | 目标 URL(必填) | |
| `-w` | 字典 | `subdomains-top1million-5000.txt` |
| `-o` | 输出文件 | `.vhosts.json` |
| `-fc` | 过滤状态码 | |
| `-fs` | 过滤响应大小 | |
| `-t` | 线程数 | `40` |
| `-r` | 速率限制(请求/秒) | 无限制 |
## Feroxbuster 目录枚举
使用 feroxbuster 进行递归目录和文件暴力破解。适用于查找隐藏端点、管理面板和备份文件。
```
# 手动
./ferox_enum.sh -u https://example.com
# 使用扩展和速率限制
./ferox_enum.sh -u https://example.com -t 5 -r 10 -e php,html
# Pipe 目标
cat live_hosts.txt | ./ferox_enum.sh -t 3 -r 5
# 禁用递归
./ferox_enum.sh -u https://example.com -n
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-u` | 目标 URL | |
| `-w` | 字典 | `DirBuster small lowercase` |
| `-t` | 线程数 | `1` |
| `-r` | 速率限制(请求/秒) | `1` |
| `-s` | 最大并发扫描数 | `5` |
| `-o` | 输出文件 | `.ferox.txt` |
| `-e` | 文件扩展名 | |
| `-x` | 过滤状态码 | |
| `-n` | 禁用递归 | off |
| `-A` | 随机 User-Agent | on |
| `-g` | 从响应中收集链接 | on |
## 串联脚本
真正的威力在于将它们通过管道串联在一起。以下是一些示例工作流程:
**完整的子域名发现流程:**
```
# crt.sh -> permutations -> resolve -> probe
./crtsh_subs.sh -d example.com \
| ./alterx_permute.sh \
| ./scope_filter.sh -s "example\.com" \
> candidates.txt
cat candidates.txt | ./puredns_brute.sh -d example.com
```
**发现并扫描:**
```
# 查找子域名,探测存活主机,然后对每个进行目录爆破
./subfinder_httpx.sh -d example.com \
| grep -oP 'https?://[^\s]+' \
| ./ferox_enum.sh -t 3 -r 5
```
**从范围文件进行多域名侦察:**
```
cat scope.txt | ./crtsh_subs.sh | sort -u > all_subs.txt
cat all_subs.txt | ./subfinder_httpx.sh -p "80,443"
```
标签:AD攻击面, CTF工具, GitHub机密泄露, Windows内核, 侦察脚本, 域名枚举, 安全助手, 安全工具集, 实时处理, 密码管理, 应用安全, 批量查询, 漏洞搜索, 白帽子, 目录爆破, 秘密扫描, 结构化查询, 网络安全, 自动化安全, 资产探测, 运行时操纵, 隐私保护