什么是逻辑漏洞?
逻辑漏洞就是指攻者击利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。
逻辑漏洞的特点
- 与系统本身的业务功能相关,决定了逻辑漏洞的多样性
- 很难通过有规则的脚本或工具扫描发现
- 产生的流量是合法流量,一般的防御手段和设备无法阻止
- 一般需要通过人工审计和手动测试发现
根据常见的业务功能,逻辑漏洞常常出现在以下情况:
越权漏洞,密码修改/找回,验证码漏洞
支付漏洞,投票,积分,抽奖
接下来我们看看越权漏洞。
越权漏洞重要分为俩种:第一种水平越权,第二种垂直越权。
保险业务的web应用。用户A和用户B都是普通用户。
假设用户A和用户B属于同一个权限组。水平越权就是用户A可以看到用户B才可以看到的一些内容(B的个人信息)。
用户A属于普通用户权限组而用户C属于管理员权限组,垂直越权就是用户A可以到用户C才可以看到的内容(管理员一般可以看到所有用户的信息)。
我们借助pikachu靶场,来详细了解一下:
水平越权
点击提示,随便找一个用户登录进去,这时我们就可以看对应用户的信息,这时我们就看见了URL地址栏中以GET方式传入了用户名,我们再将kobe改成lili或者lucy,就可以看到他们的用户的信息
试着登录lili或者lucy的账号,可不可以呢
这个漏洞是怎么产生的呢,对于每一个用户,后端是从地址栏中username的值中获取,并且用户还可以随便输入,应该换一种方式,从session中获取
这里我们去改一下他的后端代码,修复这个漏洞,路径
我们先看op1_login.php
再来看看op1_mem.php,注意有些地方我改掉了
现在你再试试还可以吗
垂直越权
老规矩,点一下提示,得到俩个用户,admin是管理员用户,pikachu是普通用户
我们先登录pikachu用户,发现我们只能查看用户信息,但是无法去修改,反观,再去登录管理员用户,就可以删除用户,增加用户
那我们怎么让pikachu也拥有admin的权利呢,如果有了,这就是垂直越权
我们先来抓个包,抓什么包,在admin用户登录的情况下,去抓增加用户的包
放到重放器里,我们可以看到cookie里的sessionid
现在我们放包登录pikachu用户,看看,可以看到添加成功
现在我们在重放器里再次进行放包,还可以添加成功吗,这里我们在将用户名加个1,发送完后,我们在刷新页面,发现没有用户添加,因为sessionid失效了
那我们怎么进行越权呢,在pikachu用户登录的情况下,抓包,刷新一下页面就行,我们将获取到的pikachu用户的sessionid将重放器里的sessionid换掉,放包,发现添加成功,这样我们就使用piakchu用户实现了添加用户的功能,这就是垂直越权
这个漏洞是怎么产生的呢,在进行添加用户的操作之前没有对用户进行校验,我们该怎么去修复呢,路径
先来看看op2_login.php
再看看op2_admin.php,这里就过滤较为严格
再看看op2_admin_edit.php,所以我们可以将上面的代码复制到这里,这样就不存在越权了,可以在去试试刚才的操作可以进行添加用户吗?
越权漏洞就告一段落了,其他的漏洞还请大家自行去了解
至此我们将10大安全漏洞学习完毕。