初识 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 交互需要了解:

  1. 输入数据(必选和可选参数)
  2. 支持的 HTTP 方法和媒体格式
  3. 速率限制和验证机制

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 应用程序浏览

方法:

  1. 使用 Burp Scanner 抓取应用程序
  2. 手动调查有趣攻击面
  3. 查找 URL 中的 /api/ 模式
  4. 检查 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. 内容类型测试

测试不同内容类型可以:

  1. 触发错误并获取有用信息
  2. 绕过有缺陷的防御
  3. 利用处理逻辑差异

测试工具:

  • 修改 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 发现隐藏端点:

  1. 识别初始 API 端点
  2. 使用 Intruder 进行模糊测试
  3. 分析响应以发现新端点

10. 安全注意事项

  1. 始终在授权范围内测试
  2. 避免对生产环境造成破坏
  3. 注意速率限制
  4. 记录测试过程和发现

11. 工具总结

推荐工具列表:

  1. Burp Suite(Scanner、Repeater、Intruder)
  2. OpenAPI 解析器 BApp
  3. JS Link Finder
  4. Content type converter BApp
  5. Postman/SoapUI

通过系统性地应用这些技术和方法,可以全面评估 API 的安全性,发现潜在漏洞并提高整体系统安全性。

API Testing 技术详解 1. API 测试概述 API(应用程序接口)是软件系统和应用程序之间通信和共享数据的桥梁。API 测试至关重要,因为 API 中的漏洞可能会破坏系统的: 保密性 完整性 可用性 所有动态网站都由 API 组成,因此像 SQL 注入这样的经典网络漏洞也可归类为 API 测试范畴。 2. API 测试重点 本文重点介绍以下内容: 测试网站前端未完全使用的 API RESTful 和 JSON API 测试 服务器端参数污染漏洞测试 3. API 侦察 3.1 识别 API 端点 API 端点是 API 接收请求的位置,例如: 此请求的 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 的安全性,发现潜在漏洞并提高整体系统安全性。