初识 API Testing 技术
字数 1717 2025-08-20 18:17:31
API Testing 技术详解
1. API 测试概述
API(应用程序接口)是软件系统和应用程序之间通信和共享数据的桥梁。API 测试至关重要,因为 API 中的漏洞可能会破坏系统的:
- 保密性
- 完整性
- 可用性
所有动态网站都由 API 组成,因此像 SQL 注入这样的经典网络漏洞也可归类为 API 测试范畴。
2. API 测试重点
本文重点介绍以下内容:
- 测试网站前端未完全使用的 API
- RESTful 和 JSON API 测试
- 服务器端参数污染漏洞测试
3. API 侦察
3.1 识别 API 端点
API 端点是 API 接收请求的位置,例如:
GET /api/books HTTP/1.1
Host: example.com
此请求的 API 端点是 /api/books
3.2 端点交互信息
与 API 交互需要了解:
- 输入数据(必选和可选参数)
- 支持的 HTTP 方法和媒体格式
- 速率限制和验证机制
4. API 文档分析
4.1 文档类型
- 人工可读文档:供开发人员理解 API 使用方式
- 机器可读文档:JSON 或 XML 格式,用于自动化任务
4.2 发现 API 文档
查找路径示例:
/api/swagger/index.html/openapi.json
发现端点后应调查其基础路径,例如:
/api/swagger/v1/users/123→ 调查/api/swagger/v1、/api/swagger、/api
4.3 机器可读文档利用
工具推荐:
- Burp Scanner(审核 OpenAPI 文档)
- OpenAPI 解析器 BApp
- Postman 或 SoapUI(测试记录端点)
5. 端点识别技术
5.1 应用程序浏览
方法:
- 使用 Burp Scanner 抓取应用程序
- 手动调查有趣攻击面
- 查找 URL 中的
/api/模式 - 检查 JavaScript 文件中的 API 引用
工具推荐:
- JS Link Finder - PortSwigger
5.2 端点交互
使用工具:
- Burp Repeater
- Burp Intruder
观察 API 行为,研究其对以下变化的响应:
- HTTP 方法
- 媒体类型
- 错误信息
6. HTTP 方法测试
常见 HTTP 方法:
- GET:读取数据
- PATCH:部分更改资源
- OPTIONS:检索可用方法信息
测试方法:
- 使用 Burp Intruder 内置的 HTTP verbs 列表自动测试
- 注意:应以低优先级对象为目标,避免意外后果
7. 内容类型测试
测试不同内容类型可以:
- 触发错误并获取有用信息
- 绕过有缺陷的防御
- 利用处理逻辑差异
测试工具:
- 修改
Content-Type标头 - 使用 Content type converter BApp(XML 和 JSON 转换)
8. 实战靶场
8.1 利用文档开发 API 端点
靶场地址:https://portswigger.net/web-security/api-testing/lab-exploiting-api-endpoint-using-documentation
8.2 查找和利用未使用的 API 端点
靶场地址:https://portswigger.net/web-security/api-testing/lab-exploiting-unused-api-endpoint
9. 隐藏端点发现
使用 Burp Intruder 发现隐藏端点:
- 识别初始 API 端点
- 使用 Intruder 进行模糊测试
- 分析响应以发现新端点
10. 安全注意事项
- 始终在授权范围内测试
- 避免对生产环境造成破坏
- 注意速率限制
- 记录测试过程和发现
11. 工具总结
推荐工具列表:
- Burp Suite(Scanner、Repeater、Intruder)
- OpenAPI 解析器 BApp
- JS Link Finder
- Content type converter BApp
- Postman/SoapUI
通过系统性地应用这些技术和方法,可以全面评估 API 的安全性,发现潜在漏洞并提高整体系统安全性。