API(应用程序编程接口)使软件体系和应用程序能够进行通信和共享数据。API 测试非常重要,因为 API 中的漏洞可能会破坏网站的机密性、完整性和可用性的核心方面。所有动态网站都由 API 组成,因此SQL 注入等经典 Web 漏洞可以归类为 API 测试。在本主题中,我们将教您如何测试网站前端未充分使用的 API,重点是 RESTful 和 JSON API。
一.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。例如,您应该找出有关以下内容的信息:
1.API 处理惩罚的输入数据,包括逼迫参数和可选参数。
2.API 接受的哀求类型,包括支持的 HTTP 方法和媒体格式。
3.速率限定和身份验证机制。
二.api文档
API 通常会有文档记录,以便开辟职员知道如何使用和集成它们。
文档既可以采用人可读的形式,也可以采用呆板可读的形式。人可读文档旨在帮助开辟职员了解如何使用 API。它可能包括详细的说明、示例和使用场景。呆板可读文档旨在由软件处理惩罚,以自动执行 API 集成和验证等任务。它以 JSON 或 XML 等布局化格式编写。
API 文档通常是公开的,特别是当 API 旨在供外部开辟职员使用时。如果是这种情况,请始终通过检察文档来开始侦探。
1.发现 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
第一个靶场: