Pikachu-----Over permission 越权

目录

一、Over permission

1.简介

二、闯关

1.水平越权

1.1 源码

 1.2防御

 2.垂直越权

2.1 代码

 2.2防御


一、Over permission

1.简介

 越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。

  该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。在实际的代码审计中,这种漏洞往往很难通过工具进行自动化监测,因此在实际应用中危害很大。其与未授权访问有一定差别,目前存在着两种越权操作类型,横向越权操作(水平越权)和纵向越权操作(垂直越权)。

概念

水平越权:指相同权限下不同的用户可以互相访问

垂直越权:指使用权限低的用户可以访问到权限较高的用户

水平越权测试方法:主要通过看看能否通过A用户操作影响到B用户

垂直越权测试思路:看看低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员的功能。

把握住传参就能把握住逻辑漏洞的命脉

越权测试:

登录用户A时,正常更改或者是查看A的用户信息,然后抓取数据包,将传参ID修改为其他用户,如果成功查看或者修改了同权限其他用户信息就属于水平越权测试(如果可以影响到高权限用户就是垂直越权)

传参ID需要自己检测(例如:uid= id= user=等)通常使用burp进行爆破传参(传参可能在get post cookie)

常见平行越权:

例如:

不需要输入原密码的修改密码

抓包改用户名或者用户id修改他人密码

修改资料的时候修改用户id

查看订单的时候,遍历订单id

防范措施

  1. 前后端同时对用户输入信息进行校验,双重验证机制
  2. 调用功能前验证用户是否有权限调用相关功能
  3. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  4. 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
  5. 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

二、闯关

1.水平越权

也称为横向越权,指相同权限下不同的用户可以互相访问。

用户名和密码:

 

 登录lucy的,注意访问后回显的URL,username字段是lucy。

 我们把username字段值lucy改为kobe,看看能否访问,是可以访问的。

 和我们登录到kobe是一样的

 用bp抓一下lili包,并没有发现什么,只是没有session值,估计是这个原因,看看源码吧。

1.1 源码

果然,因为查找用户信息的时候传入的参数是直接从url中获取的,没有校验当前用户。

 1.2防御

既然没有检验,我们就给他添加一个简单的验证,在27行增加判断url传入的username和当前用户是否匹配,如果匹配则为$username赋值,若不匹配则不赋值。

 if($_SESSION['op']['username']==$_GET['username']){
        $username=escape($link,$_GET['username']);
    }

登录lucy用户

 

 username的值改为kobe,弹出来查看个人信息。

我们点击发现信息变成了lucy的信息,防御成功!!!

 

 2.垂直越权

又称纵向越权,指使用权限低的用户可以访问到权限较高的用户

两个用户,一个普通,一个超级。

 

登录pikachu用户,发现只有查看的权限。

admin可以查看,添加,删除。

查看的url

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php

 添加用户的url

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

 删除的url

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=35

 我们在次登录普通用户pikachu

 输入查看用户的url发现需要登录,说明不存在垂直越权。

 输入添加用户的url,发现可以进入,

 

创建一个用户,成功!

 

登录管理员admin用户看一下是否成功,成功,说明添加用户url存在垂直越权。

删除页面是每删除一个,url的id值就加一。

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=38

删除aaa用户的id对应为38,并没有删除成功。

 此方法说明只有添加用户页面存在垂直越权。

我们用bp抓包添加页面看看

记下来cookie值

PHPSESSID=20ns196el812ir60tilre59hfb

 抓一下pikachu登录后的包,把它的cookie值替换admin添加页面的cookie

 成功创建7

2.1 代码

先看没问题的删除操作op2_admin.php:

主要是23~26行,判断了用户是否登录,是否权限级别为1(超级boss),如果任意一条不满足,就跳转到登录页面。

再来看看有问题的op2_admin_edit.php:

22~25行,只验证了用户是否登录,如果没登录就跳转到登录页面,没有验证用户权限等级,但前端显示添加用户是权限等级为1的用户才能执行的操作,因此这里有垂直越权漏洞。

 2.2防御

根据op2_admin.php修改一下op2_admin_edit.php:

22行增加对用户权限等级的判断$_SESSION['op2']['level']!=1

现在代码的意思变成,如果用户没登录或者权限等级不为1,则跳转到登录页面。

 在次在pikachu页面输入添加用户的url

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

 直接跳转到登录页面,防御成功!!!

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值