如何对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
如果你是一个长期主义者,欢迎加入我的知识星球(优先查看这个链接,里面可能还有优惠券),我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
笔者自己录制的一套php视频教程(适合0基础的),感兴趣的童鞋可以看看,基础视频总共约200多集,目前已经录制完毕,后续还有更多视频出品
https://space.bilibili.com/177546377/channel/seriesdetail?sid=2949374
技术交流请加笔者微信:richardo1o1 (暗号:growing)