freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

初识 API Testing 技术
2024-12-18 11:37:28
所属地 四川省

应用程序接口测试

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

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

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

image.png

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

image-20241217191201681.png

使用机读型文件

可以使用一系列自动化工具来分析找到的任何机器可读 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

image-20241217192609578.png

image-20241217192623959.png

使用入侵者查找隐藏端点

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

# 网络安全 # web安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录