1.越权漏洞原理介绍
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围 广、危害大,被OWASP列为Web应用十大安全隐患的第一名。 该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限 检查,访问或者操作其他用户或者更高权限。 越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而 遗漏了权限的判定。 在实际的代码审计中,这种漏洞往往很难通过工具进行自动化监测,因此在实际应用中危害很大。其与 未授权访问有一定差别,目前存在着两种越权操作类型,横向越权操作(水平越权)和纵向越权操作 (垂直越权)。
水平越权: 指相同权限下不同的用户可以互相访问 垂直越权: 指使用权限低的用户可以访问到权限较高的用户 水平越权测试方法:主要通过看看能否通过A用户操作影响到B用户 垂直越权测试方法:看看低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员 的功能。
2.水平越权攻防还原
此处使用的是pikachu靶场环境
首先lucy使用自己的账户lucy/123456登录系统,查看自己的个人信息,信息如下: 姓名:lucy
性别:man
手机:11012011900
住址:American
邮箱:110@qq.com
![](https://i-blog.csdnimg.cn/blog_migrate/76952856576633010dc4744f1eb92ffa.png)
此时,通过更改username=kobe,即可查看到kobe的个人信息,造成水平越权 http://10.0.0.7:81/vul/overpermission/op1/op1_mem.php?username=kobe&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF
![](https://i-blog.csdnimg.cn/blog_migrate/df761a645924e2f48a847c80c3375922.png)
3.垂直越权攻防还原
垂直越权又称纵向越权,指使用权限低的用户可以访问到权限较高的用户。比如A用户权限比B低,如果 A可以访问理论上只有B才能访问的资源,或者执行理论上B才能执行的操作,那就是垂直越权。 这里有两个用户admin/123456,pikachu/000000: pikachu用户仅仅具备查看权限 admin是超级管理员,具有添加/删除用户权限,而pikachu没有
添加用户的接口如下: http://10.0.0.7:81/vul/overpermission/op2/op2_admin_edit.php
![](https://i-blog.csdnimg.cn/blog_migrate/09767d05827d7d54a7c6805d0329d317.png)
数据包如下:
![](https://i-blog.csdnimg.cn/blog_migrate/4043e5a377f3e2f94e1e40e11ddf690f.png)
低权限的账号pikachu通过访问admin账户的接口,能够使用到admin账号添加用户的功能,造成越权
![](https://i-blog.csdnimg.cn/blog_migrate/d83174a72c255c6488fe6978270e2afd.png)
这里也可以通过更改cookie的方法
我们抓取admin账号添加账号的数据包
![](https://i-blog.csdnimg.cn/blog_migrate/33086cb2aad75ec1fc0bf08808e9f33b.png)
然后将cookie内容替换成pikachu用户的
![](https://i-blog.csdnimg.cn/blog_migrate/55c670d18ec0c5f44503635016c0aecb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/69c7394a6421fa01b86ea6eca37df545.png)
同样可以创建成功
![](https://i-blog.csdnimg.cn/blog_migrate/f4bdd3c0b737f2e9341f1a680224c065.png)
4.越权漏洞修复
1、前后端同时对用户输入信息进行校验,双重验证机制 2、执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限 3、特别敏感操作可以让用户再次输入密码或其他的验证信息,防范CSRF 4、从用户的加密认证 cookie 中获取当前用户 id,防止攻击者对其修改。或在 session、cookie 中加入 不可预测、不可猜解的 user 信息 5、直接对象引用的资源ID进行加密,防止攻击者枚举ID,敏感数据特殊化处理