如何对api进行fuzzing
正文
这里postman使用5555端口,bp使用8080端口,如下所示:
下面我们来到下面的一步一步恢复密码,按照所有的步骤,直到看到下面的对话框
提示你输入一个OTP(验证码),你也可以输入错误的OTP,就像下面一样:
请注意,此API接口中的版本与之前的版本有何不同。它使用的是版本3 (v3),而我们一直在处理的其他版本使用的是版本2 (v2)。
右键单击集合(collection),并选择“Add Request”来添加来自Burp的新请求
不要忘记这是一个POST请求。还要导航到“Body”部分,选择“raw”并粘贴从请求中复制的数据。
下面是响应。这里说是无效的OTP,因为前面输入的是一个无效的OTP
多次发送请求,差不多10次了,回复如下:“您已经超过了尝试次数。”现在我有一个推论:可能v3引入了速率限制
接下来是开始Fuzzing。
模糊API仅仅意味着向接口发送不同的输入值,以发现潜在的漏洞或任何意外行为。
首先,创造一个环境。点击postman右上角的环境图标,点击“添加”。将环境命名为crAPI_Swagger
我们需要定义一个变量并创建一个键值对。这里,我的变量是“path”,键值对是v3。别忘了保存
接下来,再次单击环境图标,并确保选择了刚刚创建的环境。默认设置为“无环境”。
导航到collection,转到“测试”选项卡并粘贴以下脚本:
pm.test(“Status code is 404”, function () {
pm.response.to.have.status(404);
});
单击表示应该运行crAPI_Swagger_file的橙色按钮
注意这14个请求都失败了
我们之前运行的测试脚本检查响应状态码是否为404 (Not Found)。当我们运行脚本时,它意味着验证响应状态码是否与预期值匹配。由于集合中的所有14个请求都未能通过此测试,这意味着来自14个请求的响应没有返回状态码404。
前面提到过,“模糊化API仅仅意味着向端点发送不同的输入值,以发现潜在的漏洞或任何意外行为。 ”.
我们所做的是发送一系列请求并检查它是否会返回404。如果它返回404,那么该行为是意外的。但是在我们的集合中实际上有一个无效请求并发送请求的场景中,它确实返回404响应,这个响应是预期的,并且应用程序正在适当地响应。
也可以检查你得到的实际响应代码。在这里的例子中,得到了200 (OK成功),401(未授权),500(服务器错误)等。
接下来是替换
选择所有的框,然后替换为“{{path}}”
你会注意到所有出现的v2都被改成了{{path}}
我们没有替换v3,你可以手工去做
接下来,我们将运行一个故意失败的扫描
我将当前值更改为invalid419,这是因为我确信我没有任何像invalid419这样的请求,并且我希望我要运行的扫描失败
最后别忘了保存
点击运行collection
原文始发于微信公众号(迪哥讲事):如何对api进行fuzzing
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论