初识 API Testing 技术

2024-12-28 156 0

应用程序接口测试

应用程序接口(API)使软件系统和应用程序能够通信和共享数据。API 测试非常重要,因为 API 中的漏洞可能会破坏网站的保密性、完整性和可用性等核心方面。

所有动态网站都由 API 组成,因此像 SQL 注入这样的经典网络漏洞也可归类为 API 测试。在本文中会介绍:如何测试网站前端未完全使用的 API,重点是 RESTful 和 JSON API以及如何测试可能影响内部 API 的服务器端参数污染漏洞。

为了说明 API 测试与一般 Web 测试之间的重叠,我们创建了现有主题与 OWASP API Security Top 10 2023 之间的映射。

初识 API Testing 技术插图

API 侦察

要开始 API 测试,首先需要尽可能多地了解有关 API 的信息,以发现其攻击面。
首先,应该确定 API 端点。这些端点是 API 接收有关其服务器上特定资源的请求的位置。例如,考虑以下 GET请求:

GET /api/books HTTP/1.1

Host: example.com

该请求的 API 端点是**/api/books**。这将导致与 API 的交互,从图书馆检索图书列表。例如,另一个 API 端点可能是 /api/books/mystery,它将检索一个神秘书籍列表。
一旦确定了端点,就需要确定如何与之交互。这样,您就可以构建有效的 HTTP 请求来测试 API。例如,你应该了解以下信息:

  • 应用程序接口处理的输入数据,包括必选和可选参数。

  • API 接受的请求类型,包括支持的 HTTP 方法和媒体格式。

  • 速率限制和验证机制。

API 文档

应用程序接口通常都有文档说明,以便开发人员知道如何使用和集成它们。
文档可以采用人工可读和机器可读两种形式。人工可读文档旨在让开发人员了解如何使用 API。它可能包括详细的解释、示例和使用场景。机器可读文档是为软件处理 API 集成和验证等自动化任务而设计的。它采用 JSON 或 XML 等结构化格式编写。
API 文档通常是公开的,尤其是当 API 是供外部开发人员使用时。如果是这种情况,请务必从查看文档开始您的侦察工作。

Discover API 文档

即使 API 文档不公开,您也可以通过浏览使用 API 的应用程序来访问它。
为此,可以使用 Burp Scanner 抓取 API。也可以使用 Burp 浏览器手动浏览应用程序。例如,查找可能引用 API 文档的端点:

  • /api

  • /swagger/index.html

  • /openapi.json

如果确定了资源的端点,请务必调查基本路径。例如,如果确定了资源端点 /api/swagger/v1/users/123,则应调查以下路径:

  • /api/swagger/v1

  • /api/swagger

  • /api

还可以使用 Intruder 查找文件的常用路径列表。

利用文档开发应用程序接口端点-靶场

靶场地址:https://portswigger.net/web-security/api-testing/lab-exploiting-api-endpoint-using-documentation

初识 API Testing 技术插图1

使用机读型文件

可以使用一系列自动化工具来分析找到的任何机器可读 API 文档。
可以使用 Burp Scanner 抓取和审核 OpenAPI 文档或任何其他 JSON 或 YAML 格式的文档。您还可以使用 OpenAPI 解析器 BApp 解析 OpenAPI 文档。
还可以使用 Postman 或 SoapUI 等专用工具来测试记录的端点。

识别应用程序接口端点

还可以通过浏览使用 API 的应用程序来收集大量信息。即使您可以访问 API 文档,这通常也值得一做,因为有时文档可能不准确或过时。
你可以使用 Burp Scanner 抓取应用程序,然后使用 Burp 浏览器手动调查有趣的攻击面。
在浏览应用程序时,查找 URL 结构中暗示 API 端点的模式,如 /api/。还要注意 JavaScript 文件。这些文件可能包含对 API 端点的引用,而这些 API 端点并不是通过网络浏览器直接触发的。Burp Scanner 会在抓取过程中自动提取一些端点,但要提取更多内容,请使用 JS Link Finder - PortSwigger。您还可以在 Burp 中手动审查 JavaScript 文件。

与应用程序接口端点互动

确定 API 端点后,使用 Burp Repeater 和 Burp Intruder 与之交互。这样,您就可以观察 API 的行为,发现更多攻击面。例如,可以研究 API 对更改 HTTP 方法和媒体类型的响应。
在与 API 端点交互时,仔细查看错误信息和其他响应。有时,这些信息可用于构建有效的 HTTP 请求。

识别支持的 HTTP 方法

HTTP 方法指定对资源执行的操作。例如

  • GET- 从资源中读取数据。

  • PATCH- 对资源进行部分更改。

  • OPTIONS- 检索可用于资源的请求方法类型的信息。

API 端点可能支持不同的 HTTP 方法。因此,在调查 API 端点时,测试所有潜在方法非常重要。这可能会让你识别出更多的端点功能,从而打开更多的攻击面。
例如,端点 /api/tasks可能支持以下方法:

  • GET /api/tasks- 读取任务列表。

  • POST /api/tasks- 创建新任务。

  • DELETE /api/tasks/1- 删除任务。

您可以使用 Burp Intruder 内置的 HTTP verbs列表来自动循环使用一系列方法。

备注

测试不同 HTTP 方法时,应以低优先级对象为目标。这有助于确保避免意外后果,例如更改关键项目或创建过多记录。

识别支持的内容类型

API 端点通常期望以特定格式获取数据。因此,根据请求中提供的数据的内容类型,它们可能会有不同的行为。更改内容类型可以实现以下功能

  • 触发错误,披露有用信息。

  • 绕过有缺陷的防御。

  • 利用处理逻辑的差异。例如,API 在处理 JSON 数据时可能是安全的,但在处理 XML 时却容易受到注入攻击。

要更改内容类型,请修改**Content-Type**标头,然后相应地重新格式化请求正文。您可以使用Content type converterBApp 在 XML 和 JSON 之间自动转换请求中提交的数据。

查找和利用未使用的 API 端点-靶场

靶场地址:https://portswigger.net/web-security/api-testing/lab-exploiting-unused-api-endpoint

初识 API Testing 技术插图2

初识 API Testing 技术插图3

使用入侵者查找隐藏端点

一旦确定了一些初始 API 端点,就可以使用 Intruder 来发现隐藏的端点。例如,考虑这样一种情况,即已识别出以下用于更新用户


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

Vulnhub靶场之Phineas
[Meachines] [Easy] Precious Ruby-pdfkit-RCE+Ruby YAML反序列化权限提升
美国医疗系统遭遇重大数据泄露,88.2万患者信息被曝光
DeepSeek应用未加密传输敏感用户和设备数据,引发安全担忧
基于本地大模型的敏感信息检测的burp插件开发
flaskpython代码审计思路及实战记录

发布评论