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 的新特性 ![APISCAN v5.0.0 GUI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/71ed472cbf221541.jpg) - **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, 加密, 安全报告, 对称加密, 漏洞扫描器, 自动化审计, 逆向工具