阿一网络安全实践演练之查找并利用未使用的 API 端点

描述

为了解决实验室问题,利用一个隐藏的 API 端点购买一件 Lightweight l33t 皮夹克。您可以使用以下凭据登录您自己的账户:wiener:peter。

所需知识

要解决这个实验室问题,您需要了解以下内容:

  • 如何利用错误消息构造有效的请求。
  • RESTful API 如何使用 HTTP 方法。
  • 改变 HTTP 方法如何揭示额外的功能。

这些内容在我们的 API 测试学院主题中有涵盖。

进入实验室

解决方案

1、 在 Burp 的浏览器中访问实验室,并点击一个产品。

2、 在 Proxy > HTTP history 中,注意产品的 API 请求。例如,/api/products/3/price。

3、 右键点击 API 请求,选择 Send to Repeater。

4、 在 Repeater 标签页中,将 API 请求的 HTTP 方法从 GET 改为 OPTIONS,然后发送请求。注意到响应中指定了允许的方法,包括 GET 和 PATCH。

简言之,可以用 options 请求去嗅探某个请求在对应的服务器中都支持哪种请求方法,options请求是用于请求服务器对于某些接口等资源的支持情况的,包括各种请求方法、头部的支持情况,仅作查询使用

5、 将 API 请求的方法从 GET 改为 PATCH,然后发送请求。注意到您收到了一个未授权的(Unauthorized)消息。这可能表示您需要进行身份验证才能更新订单。

6、 在 Burp Suite 的浏览器中,使用凭据 wiener:peter 登录应用程序。

7、 点击 Lightweight "l33t" 皮夹克产品。

8、 在 Proxy > HTTP history 中,右键点击 Leather Jacket 皮夹克的 /api/products/1/price 请求,并选择 Send to Repeater。

9、 在 Repeater 标签页中,将 API 请求的方法从 GET 改为 PATCH,然后发送请求。注意到由于不正确的 Content-Type,会导致错误。错误消息指定 Content-Type 应为 application/json。

10、 添加一个 Content-Type 头,并将其值设置为 application/json。

11、 将一个空的 JSON 对象 {} 作为请求体添加进去,然后发送请求。注意到由于请求体缺少 price 参数,会导致错误。

12、 向 JSON 对象 {"price": 0} 添加一个 price 参数,并发送请求。

{
"price":0
}

13、 在 Burp Suite 的浏览器中,重新加载皮夹克产品页面。注意到皮夹克的价格现在是 $0.00。

14、 将皮夹克添加到您的购物篮中。

15、 转到您的购物篮,并点击 Place order 完成实验室任务。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值