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, 主机安全, 密码管理, 应用安全, 插件系统, 数字取证, 数据统计, 目录枚举, 移动安全, 端口扫描, 网络安全审计, 聊天机器人, 自动化脚本