Uglybeard/FBps

GitHub: Uglybeard/FBps

一个用于发现 HTTP 访问控制绕过漏洞(401/403)的快速模糊测试工具。

Stars: 1 | Forks: 0

# FBps(Forbidden Bypass) ![FBps banner](/img/fbps.png) [![Python 3.x](https://img.shields.io/badge/Python-3.x-blue.svg)](https://www.python.org/) [![Security Testing](https://img.shields.io/badge/Purpose-Security%20Testing-red.svg)]() [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) FBps (Forbidden Bypass) 是一个用于发现访问控制绕过漏洞(401/403 绕过)的快速 HTTP 模糊测试工具,通过生成方法、URL 和头部等方面的请求变体来探测潜在的安全问题。 它能够检测 Web 应用和反向代理中的错误配置、标准化不一致以及意外的路由行为。 如需可复现的本地测试和载荷调整,请使用 **[FBpsLab](https://github.com/Uglybeard/FBps-lab)**。 ## 主要特性 - 基于等级的扫描(`-L`)控制测试集的详尽程度 - URL 模糊测试(路径内载荷 + 追加载荷) - 通过原始请求目标字节检查标准化不一致(可选词表) - HTTP 方法测试(`-m` 或 `-A`) - 头部操作(默认头部词表 + 自定义头部) - 自定义 User-Agent 支持(`-ua`) - API 版本降级变体(例如 `/api/v3/...` → `/api/v2/...` → `/api/v1/...`) - 查询参数模糊测试(基于词表驱动) - 代理支持、多线程、全局速率限制 - 响应过滤与可选的 JSON 报告 ## 安装 1. 克隆仓库: ``` git clone https://github.com/Uglybeard/FBps.git cd FBps ``` 2. 安装依赖: ``` pip install -r requirements.txt ``` ## 使用 ``` python fbps.py [-h] [-m METHOD] [-H HEADER] [-b BODY] [-c COOKIES] [-ua USER_AGENT] [-A] [-L LEVEL] [-v] [-o OUTPUT.json] [-t THREADS] [-rl RATE_LIMIT] [-p PROXY] [--min-length MIN_LENGTH] [--exclude-length L1,L2,...] [--insecure] url ``` ## 选项 - 目标与覆盖范围: - `url` 目标 URL - `-L, --level` 测试等级(1–3) - `-A, --all` 使用常见 HTTP 方法执行所有测试(从 `data/methods.txt` 加载) - 请求构造: - `-m, --method` 逗号分隔的 HTTP 方法(默认:`GET`) - `-H, --header` 添加自定义头部(`Key: Value`,可重复) - `-ua, --user-agent` 设置自定义 User-Agent 头部 - `-c, --cookies` Cookie 字符串(`k=v; k2=v2`) - `-b, --body` 请求体数据 - 性能与传输: - `-t, --threads` 工作线程数(默认:5) - `-rl, --rate-limit` 每秒最大请求数(跨线程全局限制) - `-p, --proxy` HTTP/SOCKS 代理 - `--insecure` 跳过 TLS 验证 - 降噪与输出: - `--min-length` 忽略小于 N 字节的响应 - `--exclude-length` 忽略精确的响应大小(逗号分隔) - `-v, --verbose` 显示每个请求的详细输出 - `-o, --output` 将结果导出为 JSON ## 提示(减少误报) Web 服务器、反向代理和 WAF 通常会应用不同的标准化规则(路径解码、修剪、斜杠处理、头部解析、缓存等),因此模糊测试可能产生 **误报**:你可能会看到返回 `200 OK` 的响应,但这并非真正的绕过,而只是与你预期不同的“正常”行为。 推荐工作流程: - 从 **低覆盖** 开始(例如 `-L 1`),并手动审查结果。 - 识别 consistently 返回的“噪声”响应(通常为相同长度的页面、默认错误页面、重定向等)。 - 使用以下方式过滤: - `--exclude-length` 忽略已知的响应大小 - `--min-length` 跳过空或小型响应 - 调整好过滤器后,提高覆盖等级(`-L 2` / `-L 3` / `-A`),在保持有效发现的同时减少噪声。 ## 示例 1. 基本扫描(等级 1) ``` python3 fbps.py https://example.com/secret ``` 2. 过滤噪声 ``` python3 fbps.py --exclude-length 1234,5678 --min-length 100 https://example.com/secret ``` 3. 提高覆盖等级(等级 3) ``` python3 fbps.py -L 3 https://example.com/secret ``` 4. 使用所有常见方法 ``` python3 fbps.py -A https://example.com/secret ``` 5. 代理 + 速率限制 + JSON 输出 ``` python3 fbps.py -L 3 -p http://127.0.0.1:8080 -rl 5 -o results.json https://example.com/secret ``` ## 测试等级(实际运行内容) 每个等级包含前一等级的所有功能。 **等级 1** - 使用 `data/path_fuzz.txt` 中的载荷进行 URL 模糊测试 - 使用 `data/path_suffix.txt` 进行 URL 后缀/追加模糊测试 - 使用 `data/params.txt` 进行查询参数模糊测试 - 协议切换测试(http ↔ https)在原始目标 URL 上 - 大写路径段变体 - API 版本降级变体(例如存在 `/vN` 段时 `v3 → v2 → v1`) - 在原始目标 URL 上启用/禁用基本尾随斜杠 **等级 2** - 混合大小写路径段变体 - 使用 `data/default_headers.txt` 进行头部模糊测试 - 使用 `data/raw_bytes.txt` 通过原始请求测试标准化不一致 **等级 3** - 扩展至生成 URL 的尾随斜杠变体、头部模糊测试、查询参数及原始目标修剪 ## 实验室环境 如需受控测试和载荷调整,**[FBpsLab](https://github.com/Uglybeard/FBps-lab)** 提供一个容器化环境,包含故意配置错误的 Nginx/Flask 场景,演示位置优先级问题、标准化差异、基于头部的绕过条件以及 API 版本差异。该实验室包含有文档记录的易受攻击端点,可用于验证检测覆盖范围,并在生产测试前最小化误报。 ## 注意事项 - **词表 / 载荷来源**:FBps 从 `data/` 加载模糊测试数据(例如 `path_fuzz.txt`、`path_suffix.txt`、`default_headers.txt`)。请通过编辑这些文件来调整覆盖范围。 - **常用方法列表(`-A`)**:方法从 `data/methods.txt` 加载,因此你可以自定义集合而无需修改代码。 - **标准化不一致(可选)**:等级 2+ 还会测试原始请求目标字节后缀,以检测标准化差异。使用代理(例如 Burp/ZAP)时请注意,“原始”请求目标字节可能被代理链标准化或重写,从而降低修剪不一致检查的有效性。 - **负责任使用**:仅在明确授权下运行,并建议在调整载荷和等级时使用受控实验室环境。
标签:401绕过, 403绕过, API安全, API版本降级, HTTP方法测试, HTTP模糊测试, JSON报告, JSON输出, Level级扫描, Python安全工具, URL模糊测试, User-Agent自定义, Web安全, 代理支持, 反向代理安全, 告警, 响应过滤, 头部操作, 安全测试, 开源安全工具, 攻击性安全, 查询参数模糊测试, 蓝队分析, 访问控制绕过, 误配置检测, 请求变体, 路径规范化, 路由异常, 逆向工具, 逆向工程平台