1.失效的对象级别授权
- 首先用BP自带的浏览器登录web界面
-
- 理解:失效的对象级别授权 : 修改参数 来获得其他用户的详细信息 这里的挑战一 就是修改车辆的编号 从而获得车辆的详细信息
- 先看一下 查看自己车辆的信息调用的是什么接口
-
- 调用的是dashboard的接口
- forward一下 看看剩下的接口
-
- 这个应该是车辆身份认证
-
- 这个应该是调用谷歌地图的一个接口
-
- 仍然是车辆身份验证
-
- 车辆经纬度 给到谷歌地图
- forward完成后 并没有信息是车辆编号的
- 接下来点击 refresh location
-
- 继续抓包看看有没有车辆编号的信息
-
- 发现 有了 说明 只要修改这里的信息(修改为 其他车用户的编号就可以查看其他车的详细信息了)(找到后把它发到repeater模块 方便后续查看)
- 现在就需要了解 怎么才能了解到其他车用户的编号
-
- 我将我自己的车信息查看后 可以查看到车的编号 id 我的车目前的经纬度 以及注册的用户名称
- 接下来查找其他车主用户的信息
-
- 到了community模块后 发现有三个车主的信息
- 仍然是用BP抓包
-
- 仍然是把他发到repeater模块上
-
- 注意 此时就找到了相对应的车编号了 此时把这个车主的编号与我的车的编号互换后 就可以查到这个车主 车的实时信息了(上面是维度 下面是经度)
-
- 此时就查找到这个车主 车对应的经纬度了 然后在网上找一个对应的经纬度转换的工具 就可以找到这个车的位置了 世界地图纬度经度-在线
-
接下来完成挑战2(访问其他用户的机械报告)
- 首先访问自己的机械报告 了解自己的数据包的结构 然后才能看别人的相关信息
-
- 用BP抓包
-
- 把他发送到repeater模块 查看响应
-
- 我们发现这里有一个url 且后面对应的id=34 说明是我的车所对应的id 如果将这里的id参数改成1或者其他数字的话 就可以查看其他车主的信息了
-
- 这里我们找了一个之前拦截的get请求 然后把后面的参数改成我们上面抓到包的数据加上去后就访问到了这个用户 的车的编号 邮箱地址 手机号码等重要信息
总结:在抓包里面找到的用户名 账号 ID 编号 车架号 等等可以改成其他用户的就可以获取到其他用户的数据记录 就叫做失效的对象级别授权访问
2.失效的用户身份验证
挑战:重置其他用户的密码
- 首先退出自己的用户 , 点击forget password
-
- 然后现在需要其他用户email
- 之前我们抓包得到一些用户的email 就拿他们的来试
-
- 就比如这个
-
- 发送了之后
-
- 这个验证码随便写 即可 之后用BP爆破(这里的验证码是4位数的 (用我自己的邮箱多次验证过))
-
- 注意这里是V3版本的 验证码发送速率有限制 (爆破会失败)
- 所以我们把他用成V2版本的(低版本的就可能不会有这种限制)
-
- payload这样写
- 然后开始攻击即可
-
- 发现爆破成功(这样就已经修改成功了) 接下来尝试登录即可
-
- 登陆成功
-
- 经过验证发现验证码是正确的
3.过度的数据暴露
- 找到泄露其他用户敏感信息的API接口
-
- 发现只有这里有其他用户的信息
- 然后抓包
-
- 发送到repeater模块 查看一下响应
-
- 发现确实有用户的敏感信息暴露
找到泄露视频内部属性的API接口
-
- 这里有上传视频的功能
- 尝试上传视频并抓包 并查看相对应的属性
-
- 找到了ID 这个属性 如果可以修改就可以遍历其他用户视频的信息 以及视频内容是用base64编码 也可以查看视频内容的相信信息
4.资源缺乏和速率限制
-
- 对这个模块进行抓包
-
- 从这里发现了两个信息
- 第一个是 如果发送请求失败了 后面是返回falese 如果这里改成true的话 就可以再次发送这个请求
- 第二个是发送请求的次数 后面是1 如果改成很大的次数的话 就可以一直发送这个请求
- 然后再将实际的信息写错一直发送的话 就可能使服务器崩溃
5.失效的功能级授权
- 实现的功能:删除另一个用户的视频
- 解释:失效的功能级别授权:本身我不具备删除的权限,但是我如果靠其他手段删除了视频就实现了垂直越权
-
- 这里发现并没有删除用户视频的操作 ,那么该如何删除用户的视频呢
- 这里先尝试抓包 看看包里面的相关内容
-
- 发现它使用了put的协议
- 解析put协议:PUT 请求是 HTTP 协议中的一种请求方法,通常用于更新或替换服务器上的资源。 使用 PUT 请求时,客户端需要将整个资源的新版本发送到服务器。 如果服务器上已存在该资源,则用客户端提交的新版本替换原有的资源。
- 如果把put修改为DELETE尝试一下能不能删除这个视频
-
- 发现提示了403错误 并说 这个是管理员功能尝试去用管理员的API
- 但是再仔细看原请求的API
-
- 发现这里是user的API 这里猜想有没有可能把user改为admin 就修改为了管理员的API
-
- 发现修改成功
- 这样就实现了垂直越权 这里如果再把后面的视频编号30 改成其他编号就可以删除其他用户的视频
6. 批量分配
- 免费获得一件物品
- 首先打开购物的页面
-
- 在这个界面点击buy并尝试抓包
-
- 先尝试发送一次请求 这里发现我购买的商品编号 为35
- 这里改为GET请求 查看一下编号35的订单的信息
-
- 发现这里有许多的敏感信息
- 这里订单编号是我的 如果改为别人的订单编号是不是也可以查看别人的敏感信息呢
-
- 发现是可以查到的
- 那么该如何实现零元购呢
-
- 将请求改为PUT请求 并把产品数量改为你想要的数字 就实现了零元购
-
- 发现确实买上了
将结余增加为1000或以上
- 这里先点击退款试试
-
- 改为GET请求查看了详细信息后 发现确实状态已经为正在退款的状态了
- 如果在下面的参数将状态 改为 returned是不是就可以直接退款成功呢
-
- 注意这里还得将请求改为PUT 才可以修改订单的信息 并加入下面这个信息 并且在100后面需要+逗号
- 再查看一下是否真的退款成功
-
- 发现钱已经成功改为了1070元
- 修改成功
更新视频内部属性
-
- 继续尝试抓包 查看修改信息
-
- 尝试修改内部信息
-
- 和上面修改的方法一样
-
- 发现修改成功
总结:修改请求的方法 get put post delete 或者尝试添加或者修改一些字段的内容 或者是一些响应的内容(user改为admin ....)
7.SSRF
服务端的请求伪造
SSRF漏洞的危害:
-
- 仍然是继续抓包
-
- 发现 这里确实是调用了一个接收信息的API 接收后并发送回服务端
- 所以直接在这里修改为baidu.com即可
-
- 发现确实调用了百度的API 并返回了http的响应
8.注入
挑战:想办法在不知道优惠券代码的情况下获得免费优惠券
- 首先找到含有优惠券的地方
-
- 然后随便输入 进行抓包
-
- 发现响应中什么也没有
- 尝试对验证码进行SQL注入(这里数据库使用的NOSQL 非关系型数据库)
-
- 这里使用的是准备的nosql的一些字典
-
- 发现并没有长度变化的一条出现
- 发现响应中对特殊字符进行了编码
- 接下来 应该在BP中取消对特殊字符的编码
-
- 这次取消了之后 发现没有使用正确的键指对的格式
- 尝试把双引号删去试试
-
- 这个参数的双引号
-
- 发现爆破成功 获得了优惠券的代码
-
- 这条语句的含义 这句话发到数据库时 找到不等于xxxxxx的值 所以数据库就返回了一张与他不相等的,也就是优惠券的代码