Harshil015/sifter
GitHub: Harshil015/sifter
一个 Bash 编写的自动化侦察流水线,串联 nmap、gobuster 和 feroxbuster 实现端口扫描、服务检测、目录枚举和风险分级报告的一键执行。
Stars: 0 | Forks: 0
# Sifter — 自动化侦察扫描器
一个 Bash 侦察 pipeline,将 **nmap**、**gobuster** 和 **feroxbuster** 串联成单一工作流 —— 扫描目标、发现 HTTP 服务、枚举目录并生成一份干净且按风险分类的报告,无需在不同的工具之间手动切换。
专为 CTF 实验室、OSCP 风格的练习以及授权的渗透测试工作而构建。
## 为什么开发这个工具
以前每拿下一台机器,都意味着要按顺序运行同样的三个工具,在它们之间复制粘贴端口,然后手动筛选 feroxbuster 原始的 JSON 以找到真正重要的文件。Sifter 自动化了该 pipeline,并增加了一个报告层,可以高亮显示高价值的发现 —— 配置文件、备份文件、暴露的脚本 —— 而无需让你在数百行静态资源中滚动查看。
## 功能介绍
1. **端口扫描** — 对目标运行 `nmap -sCV`,接受 IP 地址或主机名/FQDN,并将结果保存为 `.txt` 和 `.xml`
2. **服务检测** — 解析 nmap 输出,自动提取 HTTP 和 HTTPS 端口
3. **目录枚举** — 对每个发现的 Web 服务运行 `gobuster` 和 `feroxbuster`,并可选择通过 Nikto 扫描进行额外的 Web 服务器漏洞检查
4. **智能报告** — 解析 feroxbuster 的 JSON 输出,按父目录对路径进行分组,根据文件类型和风险级别对发现进行分类
5. **总结** — 清晰统计 URL 总数、目录数、开放的目录列表数以及高/中风险的文件数
所有输出都保存在一个带有时间戳的文件夹(`sifter__/`)中,因此运行结果之间绝不会相互覆盖。当隐蔽性比速度更重要时,可使用限速模式进行较慢且不易被察觉的扫描。
## 依赖项
| 工具 | 用途 | 安装命令 |
|---|---|---|
| `nmap` | 端口扫描和服务检测 | `sudo apt install nmap` |
| `gobuster` | 快速目录暴力破解 | `sudo apt install gobuster` |
| `feroxbuster` | 递归内容发现 | [GitHub releases](https://github.com/epi052/feroxbuster/releases) |
| `jq` | 解析 feroxbuster 输出的 JSON | `sudo apt install jq` |
脚本在启动时会检查这四个工具,如果缺少任何一个,则会干净地退出。
**默认字典:** `/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt` —— Kali Linux 和 ParrotOS 自带该字典。可以通过命令行参数传入不同的字典,以便在特定运行中覆盖它。
## 设置
```
git clone https://github.com/Harshil015/sifter.git
cd sifter
chmod +x sifter.sh
```
无需安装步骤,无需 Python 环境,也无需配置文件。赋予其可执行权限并运行即可。
## 使用方法
```
sudo ./sifter.sh
```
脚本会提示输入目标 —— IP 地址或主机名/FQDN 均可 —— 然后自动执行所有操作:实时显示 nmap 输出,接着是 gobuster,最后是 feroxbuster 的分类报告。
## 输出
**终端输出** — feroxbuster 报告按父目录对发现的路径进行分组,状态码带有颜色区分(绿色 = 200,青色 = 3xx,黄色 = 401/403,红色 = 5xx),并且文件会按风险进行标记:
| 标记 | 示例 | 风险级别 |
|---|---|---|
| 脚本/配置/敏感文件 | `.php`, `.env`, `.bak`, `.sql`, `.conf` | 高 |
| 数据/配置文件 | `.json`, `.yaml`, `.log`, `.xml` | 中 |
| HTML 页面 | `.html`, `.htm` | 低 |
| 静态资源 | `.css`, `.js`, `.png` | 无 |
**保存的文件** — 每次运行都会创建一个文件夹,其中包含人类可读和机器可读的 nmap 输出、每个端口的 gobuster 结果以及一份清晰的 feroxbuster 报告。除了纯文本输出外,还可以生成 HTML 版本的报告,以便于分享。
## 运行示例(精简版)
```
[*] Starting nmap -sCV scan on 10.10.11.45...
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1
80/tcp open http Apache httpd 2.4.52
[+] Found HTTP service -> Port 80 (http)
[*] Running gobuster on http://10.10.11.45:80...
[*] Running feroxbuster on http://10.10.11.45:80 (recursive)...
DISCOVERED PATHS
────────────────────────────────
/admin/ [OPEN DIRECTORY LISTING]
200 /admin/config.php [Script/Config/Sensitive]
200 /admin/db.bak [Script/Config/Sensitive]
FINDINGS SUMMARY
────────────────────────────────
Total URLs found : 4
High-interest : 2
```
## 底层工作原理
- nmap 输出通过 regex 逐行解析,以提取端口号并检测是 HTTP 还是 SSL/HTTP
- feroxbuster 以 `--json` 和 `--silent` 模式运行;使用 `jq` 进行过滤并去除配置块
- 使用 `dirname` 逻辑按父目录对路径进行分组
- 通过从同一 JSON 流中读取 feroxbuster 的启发式消息来标记开放的目录列表
## 限制
- nmap 的服务版本检测(`-sCV`)需要 root 权限
- 暂不支持 IPv6 目标
- 已在 Kali Linux 和 Ubuntu 22.04 上测试;未在 macOS 上测试(BSD 的 `date` 语法有所不同)
## 法律免责声明
仅限在您拥有或获得明确书面授权测试的系统上使用。专为授权的渗透测试、CTF 比赛以及在受控实验室环境中进行的安全研究而构建。
## 作者
**Harshil Makwana** — SVNIT Surat 电子与通信工程(ECE)毕业生,致力于开发安全工具,并正在寻找渗透测试、VAPT 或 SOC 方面的第一份工作。
[linkedin.com/in/harshilmakwana](https://linkedin.com/in/harshilmakwana) · [github.com/Harshil015](https://github.com/Harshil015)
标签:Bash, 主机安全, 密码管理, 应用安全, 插件系统, 数字取证, 数据统计, 目录枚举, 移动安全, 端口扫描, 网络安全审计, 聊天机器人, 自动化脚本