perrym/apiscanner
GitHub: perrym/apiscanner
一款基于 OpenAPI 规范并融合 AI 辅助分析的 API 安全扫描器,针对 OWASP API Top 10 进行证据驱动的漏洞检测。
Stars: 12 | Forks: 3
## **APISCAN OWASP 5.0 APIscanner(作者:Perry Mertens)**
**作者:** Perry Mertens (pamsniffer@gmail.com)
**年份:** 2026 Perry Mertens
**版本:** 5.0.0 (正式版)
**许可证:** GNU Affero General Public License v3.0 (AGPL-v3.0)
APISCAN 是一款 API 漏洞扫描器,通过针对 OWASP API Security Top 10 (2023) 进行测试,主动识别安全风险。
它使用您的 OpenAPI/Swagger 规范来生成逼真的攻击 payload,并检测诸如 Broken Object Level Authorization (BOLA)、
Broken Authentication、Excessive Data Exposure 以及其他严重的 API 漏洞等问题。
它能理解 OpenAPI/Swagger,支持多种身份验证流程,提供 plan/verify 工作流,包含通用的 sanitizer/rewrites,并生成 HTML artifacts。
**APISCAN:为专家打造的 AI 辅助 API 安全工具。**
APISCAN 不是一款靠猜测的扫描器;它重证据。
它测试。它观察。然后由模型附上证据解释风险。
这就是您在安全领域发挥 **AI** 价值的方式。
## 许可证
APISCAN 采用 AGPL-v3.0 许可证授权。
如果您修改了 APISCAN 并将其作为托管服务提供,则必须在相同的许可证下公开完整的对应源代码。
## 什么是 APISCAN
APISCAN 专注于 API 特有的风险,而非通用的 Web 扫描。
它专为针对 OWASP API Security Top 10 (2023) 测试 API 而构建,每个风险区域对应一个模块,并提供适合审计人员和开发人员的 HTML 报告。
## v5.0.0 的新特性

- **Auto Form-Login** — 自动检测 crAPI、Juice Shop 和自定义应用的登录表单。支持 HTML 表单解析、JSON API 检测、token 自动提取。使用 `--flow form --login-username ... --login-password ...` 或 GUI 的 Auto-Detect 按钮。
- **Crawl Validator** — 智能 endpoint 验证可过滤虚假路径。`--crawl-validate` (开启), `--no-crawl-validate`, `--crawl-validate-mode balanced|strict`, `--crawl-validate-workers N`。在 Juice Shop 上可将 endpoint 从 71 个减少至 4 个。
- **Deep Scan Mode** — `APISCAN_DEEP_SCAN=1` 自动切换至完整 payload、高强度、非 quick 模式。包含所有注入类型(SSTI、LDAP、XXE、RCE),并使用 `injection_payloads.json`。
- **Expanded Quick Scan** — 默认扫描现在涵盖 9 项基础测试 + 6 种注入类型 (SQL、Path、XSS、NoSQL、LFI、SSTI)。Endpoint 数量上限从 20 提升至 30。
- **Business Logic Testing** — 在 deep scan 模式下检测负数价格、过度折扣、管理员角色分配以及权限提升。
- **Production Ready** — 已针对 Juice Shop 和 crAPI 进行测试。无崩溃:修复了 dict payload 的去重问题、500 响应的 session 重试问题、表单检测中对 HTML 响应的跳过处理,以及错误信息刷屏抑制。
- **GUI** — 跨平台 Tkinter 界面 (`python apiscan_gui.py`),包含 Target、Authentication、Form Login (Auto-Detect) 和 Advanced 选项卡。内置 Crawl validate 控件。
- **Real-World Attack Patterns** — 检测真实世界威胁行为者的 TTP:**ShinyHunters** 未认证数据暴露 (UNC6040)、**Salesforce** 枚举及 Data Loader 批量数据窃取,以及更多攻击模式。
## 安装
```
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
```
## 设置与环境
在运行 APISCAN 之前,请配置您的环境和可选的 AI 工具。
### 环境设置
```
python setup.py
# 验证 Python 依赖和环境
# 创建/更新 .env.example 和 requirements.txt
```
### LLM / AI 提供商(可选)
```
python llmsetup.py
# 配置 Ollama / OpenAI / Anthropic / DeepSeek
# 保存设置并写入 apiscan_env.sh / apiscan_env.ps1 helper scripts
```
## 快速开始
```
python apiscan.py --url https://api.example.com --swagger openapi.json --flow token --token "" --verify-plan
```
## Quick 模式与 Full 扫描
API10 (Unsafe Consumption of APIs) 默认在 quick 模式下运行。通过将 Phase 2 限制在最有希望的 endpoint 并对 quick SQL 测试设定上限,这保持了常规扫描的快速执行。
默认值:
- `APISCAN_API10_QUICK=1`
- `APISCAN_API10_QUICK_MAX_ENDPOINTS=30`
- `APISCAN_API10_QUICK_SQL_MAX_TESTS=10`
- `APISCAN_API10_QUICK_DIRTRAV_MAX_TESTS=8`
- `APISCAN_API10_QUICK_HPP_MAX_PARAMS=3`
- `APISCAN_API10_QUICK_REDIRECT_MAX_TESTS=6`
- `APISCAN_RATE_LIMIT=0`
| 模式 | Endpoints | 测试/endpoint | 总计 | 时间 |
|---|---|---|---|---|
| Quick (默认) | 30 | ~15 | ~450 | ~3-5 分钟 |
| Deep scan | 15 | ~26 | ~390 | ~25-35 分钟 |
PowerShell:
```
# 默认快速模式
$env:APISCAN_API10_QUICK="1"
# 可选快速调整
$env:APISCAN_API10_QUICK_MAX_ENDPOINTS="30"
$env:APISCAN_API10_QUICK_SQL_MAX_TESTS="10"
# 完整 API10 扫描
$env:APISCAN_API10_QUICK="0"
# 深度扫描,较慢且更密集
$env:APISCAN_DEEP_SCAN="1"
```
Bash/Linux/macOS:
```
# 默认快速模式
export APISCAN_API10_QUICK=1
# 可选快速调整
export APISCAN_API10_QUICK_MAX_ENDPOINTS=30
export APISCAN_API10_QUICK_SQL_MAX_TESTS=10
# 完整 API10 扫描
export APISCAN_API10_QUICK=0
# 深度扫描,较慢且更密集
export APISCAN_DEEP_SCAN=1
```
## 使用示例
### Bearer token
```
python apiscan.py --url https://api.example.com --swagger openapi.json --flow token --token ""
```
### API key
```
python apiscan.py --url https://api.example.com --swagger openapi.json --flow none --apikey "" --apikey-header "X-API-Key"
```
### OAuth2 Client Credentials
```
python apiscan.py --url https://api.example.com --swagger openapi.json --flow client --client-id "" --client-secret "" --token-url "https://idp/token"
```
### Proxy / Burp
```
python apiscan.py --url https://api.example.com --swagger openapi.json --flow token --token "" --proxy 127.0.0.1:8080 --insecure
```
### 仅 Plan
```
python apiscan.py --url https://api.example.com --swagger openapi.json --plan-only
```
## 高级用法
### 额外 headers
```
--extra-header "x-tenant-id: acc"
--extra-header "x-feature-flag: beta"
```
### IDs 文件
```
--ids-file ids.json
```
### Sanitizer 和 rewrites
```
--no-sanitize
--rewrite "/identity/api/v2=>/identity/api/v7/"
--normalize-version
```
### AI 辅助分析
```
export LLM_PROVIDER=openai_compat
export LLM_MODEL=gpt-4o-mini
export LLM_API_KEY=sk-...
python apiscan.py --url https://api.example.com --swagger openapi.json --api11
```
## 输出与报告
- review.html
- combined_report.html
- 针对各项风险的 HTML 报告
- SQLite 数据库 `results.db`
- 日志 `apiscan_*.log`
## 注意事项
- 仅测试您获得授权的 API。
- 以 `--plan-only` 起步,以避免产生意外流量。
- 针对不稳定的 endpoint 使用重试选项。
## 链接
- Medium 文章:https://medium.com/@PerryPM/apiscan-a-practical-approach-to-api-security-testing-by-perry-mertens-96b5e676c071
- GitHub:https://github.com/perrym/apiscanner
- 联系方式:pamsniffer@gmail.com
© 2026 Perry Mertens pamsniffer@gmail.com。基于 AGPL-v3.0 许可证发布。
标签:API安全, CISA项目, JSON输出, OWASP API Top 10, Swagger/OpenAPI, 加密, 安全报告, 对称加密, 漏洞扫描器, 自动化审计, 逆向工具