burpsuite学院之api测试

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

第一个靶场:

在实验开始前请挂上burpsuite,如果不会配置浏览器的burpsuite代理,使用burpsuite的内置浏览器打开实验也可以,我就是使用burp内置浏览器打开的实验。

要解决该实验,请找到公开的 API 文档并删除carlos。您可以使用以下凭据登录到您自己的帐户:wiener:peter。根据实验室的提示可以看看my acount这个按钮。

根据提示,输入账户信息

发现可以更新自己的邮箱

在burp的请求history功能中看到了一个疑似与api有关的请求

可以看到该请求包是用于更新邮箱的

还记得在api测试的理论学习中的这句话吗?
如果您确定了资源的端点,请务必调查基本路径。例如,如果您确定了资源端点 /api/swagger/v1/users/123,则应调查以下路径:
/api/swagger/v1
/api/swagger
/api
没错,它给了我们启发。
我们把/api后面的参数删掉,继续进行请求试试
复制链接用浏览器打开。
发现了一个rest api的功能。

可以看到这个rest api已经把如何使用它进行请求很明确地告诉我们了。

点击get会发现这里面内嵌了请求工具,发现使用get请求就是获取到用户的个人信息


使用delete方法就是删除用户。那么我们如果使用delete请求,就可以删掉carlos用户了。


而最后一个options请求方法是用来更新邮箱的接口。
至此,我们完成了第一个实验室。

posted @ 2024-06-20 14:12  ice_key  阅读(20)  评论(0编辑  收藏  举报