一款Burpsuite插件用于API测试—ApiScanPlus
愉快的周五水一篇~~~
ApiScanPlus为Burpsuite打造的路由抓取与渗透插件,借鉴结合了(JsRouteScan+ChkApi+Linkfinder)等优秀项目,主要突出API抓的全、过滤更严谨方便、测试自由度更高等特点。
## 详情
- **API 越权测试**:可自动抓取API或自行粘贴API到PATH,实现GET、POST、Header自定义参数,对目标进行鉴权测试。
- **资产收集**:快速收集目标网站的所有 API,以及深层路由下的JS与Path。
**Display界面功能介绍**
- UrlPath:支持路由的勾选与过滤,列出所有Api的数量与路径协助分类扫描。
- Custom Headers:支持自定义包头参数,自动抓取当前网站的Head头为默认值。
- Blocked Scan Paths:支持白名单Routes添加,加入白名单后将不再对此路径进行发包扫描。
- Scan Root Path:支持自定义主动扫描的根目录如(/api、 /system)。
- Recursion Scan按钮:支持递归扫描,会获取UrlPath中的所有路由递归对当前网站的每一层路径进行扫描。
工具界面展示:
一键检索抓取的路径数量及名称
可自由勾选需要扫描的路由,并以用进行颜色区分。
**Config界面功能介绍**
- Passive Scan:支持被动探测,开启后所有匹配到的路由都会以Passive Scan Path中的值作为根目录来请求。
- Carry Headers:支持全局携带Header,开启后所有插件发起的请求均会携带此header。
- Request Method:请求的方式,包含GET与POST
- Thread Pools Number:线程池的线程数,默认为10
- Passive Scan Path:被动探测的根目录,默认为/
- GET Query Params:支持自定义GET请求中插入参数。
- POST Body Params:支持在POST请求中添加自定义参数。
插入header参数与body参数
**ScanResult界面功能介绍**
- 支持状态筛选,双击状态码自动过滤,顶部按钮也可进行过滤。
- 支持路由扫描次数统计(scanned-*),双击目标Route自动过滤与排序。
- 支持目标勾选右键Scan again,方便一键特定目标重新扫描。
- 支持扫描结果复制或文件导出(CVS)。
双击选择的路由,方便一键检索同一路由不同批次的扫描差异。
##########################################################################################################################################
项目地址:https://github.com/F3ank/ApiScanPlus









评论10次
支持如下两个功能吗:1、对收集到的API进行递归目录扫描2、对收集到的带参数的API进行漏洞扫描,如sql注入
1.支持递归目录扫描2.工具不会触发被动自动漏洞扫描,需自行构造将要测试的参数。
递归这个功能好,能不能支持get或post之间互相转换
后面有考虑当GET请求为405或500时自动改为POST
今天试用了一波,规则当中会匹配到text/html 这种格式的不属于正常path,是否可以设置个默认的黑名单,内置把这些常见的设置好
好的,后面会完善再加个自定义过滤机制
今天试用了一波,规则当中会匹配到text/html 这种格式的不属于正常path,是否可以设置个默认的黑名单,内置把这些常见的设置好
支持如下两个功能吗:1、对收集到的API进行递归目录扫描2、对收集到的带参数的API进行漏洞扫描,如sql注入
1.支持递归目录扫描2.工具不会触发被动自动漏洞扫描,需自行构造将要测试的参数。
递归这个功能好,能不能支持get或post之间互相转换
下载试用一下,看看实战效果
ok 又收集到一个api 完善我的工具包更进一步了
支持如下两个功能吗:1、对收集到的API进行递归目录扫描2、对收集到的带参数的API进行漏洞扫描,如sql注入
1.支持递归目录扫描 2.工具不会触发被动自动漏洞扫描,需自行构造将要测试的参数。
支持如下两个功能吗: 1、对收集到的API进行递归目录扫描 2、对收集到的带参数的API进行漏洞扫描,如sql注入
界面简洁,清洁大方,回去试试
### 结论 ApiScanPlus插件在API路由扫描及参数测试中存在潜在安全风险:1)路径遍历/越权漏洞(递归扫描未限制深度或过滤失效);2)注入攻击(自定义Header/参数未严格过滤);3)服务端拒绝(线程数/扫描范围过大导致资源耗尽);4)XSS漏洞(扫描结果未转义)。源端(用户输入)与汇点(请求/响应处理)未实现深度防御。 --- ### 分析路径 #### **L1 攻击面识别(Source-Sink分析)** - **源点(Source)**: - 用户输入的`Scan Root Path`、`Blocked Scan Paths`、`GET/POST参数`、`Custom Headers`、`Thread Pools Number`。 - 递归扫描触发的路径生成逻辑。 - **汇点(Sink)**: - 发送的HTTP请求(携带未过滤的路径/参数/Headers)。 - 扫描结果存储(可能未转义HTML内容)。 - **风险路径**: 1. `递归扫描`若未限制深度,可能导致遍历敏感路径(如`/admin/`)。 2. 用户输入的`GET/POST Body Params`若直接拼接到请求体,可能触发命令注入。 3. `线程池参数`若无上限,可能触发服务端资源耗尽。 --- #### **L2 假设与验证** 1. **假设1:递归扫描可遍历非授权路径** - **验证步骤**: 1. 设置`Scan Root Path`为`/`,启用递归扫描。 2. 检查扫描结果是否包含`/uploads/../../../etc/passwd`或类似路径。 3. 若存在,说明路径过滤未生效或深度未限制。 2. **假设2:参数注入漏洞** - **验证步骤**: 1. 在`POST Body Params`中输入`id=1;cat /etc/passwd`,触发POST请求。 2. 检查响应内容是否包含`/etc/passwd`内容或异常错误。 3. **假设3:线程池参数导致DoS** - **验证步骤**: 1. 将`Thread Pools Number`设为`1000`,扫描目标路径`/api/*`。 2. 监控目标服务器CPU/内存占用,观察是否因高并发崩溃。 --- #### **L3 边界/异常场景验证** - **场景1:白名单绕过** - **测试**:添加白名单`/api`,但输入路径为`/api/../admin`,观察是否被扫描。 - **场景2:XSS漏洞** - **测试**:在`Scan Result`界面搜索`<script>alert(1)</script>`,观察是否执行脚本。 - **场景3:路径拼接漏洞** - **测试**:在`Scan Root Path`中输入`/api?param=exploit`,检查是否触发URL参数拼接错误。 --- #### **L4 防御反推与修复建议** 1. **路径过滤加固**: - 在递归扫描中引入深度限制(如最大层级≤3),并过滤`../`、特殊字符(`%00`、`\0`)。 2. **参数输入净化**: - 对所有用户输入(Header、Body、路径)进行白名单正则过滤(仅允许`a-zA-Z0-9/._-`)。 - 对命令参数进行转义(如针对`;`、`|`等shell分隔符)。 3. **服务端保护**: - 线程池设置最大值(如≤50),扫描前强制用户确认扫描范围。 4. **输出转义**: - 在`Scan Result`界面对HTML内容进行XSS转义(如`htmlspecialchars()`)。 5. **日志与告警**: - 记录敏感路径扫描尝试(如`/admin`),触发告警并阻断异常请求。 --- ### 验证步骤总结(最小可执行步骤) 1. **路径遍历测试**: ``` 设置Scan Root Path为`/`,启用递归扫描 → 检查`/etc/passwd`路径是否被扫描到。 ``` 2. **参数注入测试**: ``` 在POST Body中输入`id=1`%00`cat /etc/passwd` → 检查响应是否包含文件内容。 ``` 3. **线程池DoS测试**: ``` 线程池设为`200` → 扫描大量路径 → 监控目标服务器负载。 ``` --- ### 修复建议优先级 | 问题类型 | 修复方案 | 优先级 | |----------------|--------------------------------------------------------------------------|--------| | 路径遍历 | 递归扫描限制深度+路径正则过滤(排除`../`) | P0 | | 参数注入 | 输入参数转义+白名单正则限制 | P0 | | 线程池DoS | 设置硬性线程上限(如50)+扫描范围二次确认弹窗 | P1 | | XSS漏洞 | 扫描结果页面内容强制HTML实体转义 | P2 | 注:若工具代码未开源或未提供处理逻辑细节,建议开发者提供路径处理函数(如递归逻辑、参数拼接代码)供进一步分析。