课程实训——API安全

发布于 2023-09-08  334 次阅读


——From tyhty

今天,在实训课程上学习了如何利用docker拉取镜像搭建靶场,这方面由于当时完全跟着教程进行学习的,在这里就不在赘述,有兴趣的话可以自行自主学习。今天的主题是如何进行对API接口的攻击,以及可能存在的一些简单漏洞利用。下面就开始我们的主题(由于作者才开始学习网络安全的核心知识,因此可能存在某些笔误和不正确的地方,欢迎及时指正,共同学习,谢谢)。

一、准备工作

  1. docker
  2. crapi靶场环境
  3. burpsuite
  4. 在靶场中注册一个账号,之后就可以开始进行打靶了。

二、开始进行攻击

(1)访问其他用户的车辆信息

首先对点击community进行抓包

将抓取到的数据流重放到repeater中进行操作,点击send,获取到服务器对请求的响应,可以看到,在response的底部存在以JSON格式返回的数据。其中就包括其他用户的敏感信息,这样,我们就获取到了用户的部分敏感信息。其中,我们可以看到一个vehicleid的字段,其就是车辆的ID。

接着,我们forward,返回网站首页,查看个人的车辆信息。点击网页下方的refresh location,进行抓包。

接着也是对数据流进行重放,我们可以得到车辆的详细信息,如下图所示。

之后观察其请求方法GET之后的字段,我们可以清晰的察觉到其中间存在一个类似于vehicleid的字段,我们猜测其为我们的车辆的id。因此,我们可以知道,通过该接口,我们可以修改其车辆的ID值来获取到不同车辆的详细信息,因此,我们粘贴上面已经得到的用户的车辆ID,修改请求头,从而获取到其他车辆的详细信息。

这就是第一个简单的接口安全隐患。

(2)访问其他用户的机械报告

首先我们找到维修请求的接口,进行抓包。

抓包的结果:

如上图,我们获得了维修报告的地址,我们进行访问,就可以查看到个人的维修报告信息。

之后我们修改report_id的值,就可以获得其他用户的维修报告。

(3)重置其他用户的密码

首先找到重置的接口,发送验证码。

然后修改信息后,输入随意的验证码进行抓包。

我们可以发现其返回结果是无效验证码。

接着,我们尝试多次,检查是否有防爆破。结果如下图,确实存在防爆破。

我们修改请求头中的版本,将其降低,之后再次重放,发现防爆破消失。这时候,我们就可以使用Burpsuite进行字典爆破了。

在Burpsuite中添加密码本,进行对验证码的爆破。最后检查得到验证码是5105,并对结果修改成功。

(4)找到泄露用户敏感信息的API接口

我们点击主页的community进行抓包,之后发送到repeater,进行发送,发现获取到response中携带用户的个人敏感数据。

(5)找到泄露视频内部属性的API接口

我们来到个人信息主页,点击上传文件之后修改文件的信息,同时进行抓包。之后请求得到响应。其中就包含视频的详细信息。

(6)使用“contact mechanic”功能完成DOS攻击。

填写用户修理信息之后进行抓包,然后获取响应信息,之后修改repeat_request_if_failed修改为true,将number_of_repeats修改为较大的数字,接着重放,实现DOS攻击。

(7)删除另一个用户的视频

首先找到视频的API,点击修改视频信息,进行抓包。

我们将请求头修改为OPTIONS协议探测支持的http协议,我们可以看到其支持的协议有PUT,DELETE,GET,HEAD,OPTIONS。

之后我们修改为DELETE协议,并将请求头中的user修改为admin身份,之后重放,就返回了修改成功的提示。

然后我们修改请求头中的id号,就可以删除不同用户的视频。如下图就是删除了第31个视频。

(8)免费获取一件物品

首先获取订单的API,我们点击Buy并进行抓包。

对获取的响应进行查看。之后我们将POST请求改为GET请求,我们可以查看到订单的详细信息。

之后将GET请求修改为PUT请求,将status修改为returned,表示进行退货。之后查看响应,发现已经进行了修改。

(9)将结余增加1000元。

同上述操作,将quantity的值修改为100,status修改为returned。即可将账户添加1000元。

(10)更新内部视频属性

在修改视频名称的同时,修改其他属性。

对修改属性的接口进行抓包。之后查看响应,发现参数conversion_params的属性值可以进行修改。之后对属性值进行修改后就可以完成了。

(11)让crAPI发送一个HTTP调用到www.baidu.com并返回响应。

首先也是找到接口,进行抓包,接着修改其请求地址为之前在DNSlog上获取的子域,再次发送请求。返回DNSlog查看结果,就可以得到响应。

(12)获取免费优惠券

首先也是找到相应的接口,进行抓包处理。然后在请求中添加字段进行注入:“ne”:“xxxxxxxxxxxx”。(其中ne表示不等于)。

接着对请求进行重放。就可以在响应中查看到优惠券的信息。


一花一世界,一叶一菩提。