水平越权与垂直越权
越权漏洞
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。在实际的代码审计中,这种漏洞往往很难通过工具进行自动化监测,因此在实际应用中危害很大。其与未授权访问有一定差别,目前存在着两种越权操作类型,横向越权操作(水平越权)和纵向越权操作(垂直越权)。
概念问题
水平越权:指相同权限下不同的用户可以互相访问
垂直越权:指使用权限低的用户可以访问到权限较高的用户
水平越权测试方法:主要通过看看能否通过A用户操作影响到B用户
垂直越权测试思路:看看低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员的功能。
越权测试过程
把握住传参就能把握住逻辑漏洞的命脉
越权测试:
登录用户A时,正常更改或者是查看A的用户信息,然后抓取数据包,将传参ID修改为其他用户,如果成功查看或者修改了同权限其他用户信息就属于水平越权测试(如果可以影响到高权限用户就是垂直越权)
传参ID需要自己检测(例如:uid= id= user=等)通常使用burp进行爆破传参(传参可能在get post cookie)
常见平行越权:
例如:
不需要输入原密码的修改密码
抓包改用户名或者用户id修改他人密码
修改资料的时候修改用户id
查看订单的时候,遍历订单id
常见越权漏洞
1.通过修改get传参来进行越权:
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0205340
2.通过修改post传参来进行越权:
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0207583
3.通过cookie传参来进行越权
https://www.uedbox.com/post/12566/
抓取参数可以在浏览器、app、应用程序(exe)
4.未授权访问
未授权访问,严格意义上这个不属于越权漏洞,但是在日常测试中常常会遇见。即只要输入正确的网址就可以访问,例如admin默认是登录,登录后跳转到user.php,然后你直接访问user.php,发现你直接有后台的权限。
未授权访问产生的原因是因为开发在后台代码中没有验证用户状态(是否已经登录,例如可以通过isset($_SESSION['username'])来判断用户是否是登录状态)
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0189174
防范措施
- 前后端同时对用户输入信息进行校验,双重验证机制
- 调用功能前验证用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
参考链接
https://blog.csdn.net/weixin_43415644/article/details/104376764
https://blog.csdn.net/u012068483/article/details/89553797