权限超越问题探讨
越权漏洞(浅谈)
风险级别:高风险
风险描述:服务器端对用户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致恶意攻击者账号拥有了其他账户的增删改查功能;
风险分析:服务器过分信任用户提交的数据请求并且未对用户权限进行判定,可能导致恶意攻击者拥有其他用户的操作权限,平行越权可导致相同权限的用户之间可以进行增改删查等功能;垂直越权可导致低权限的用户拥有着高权限的执行操作能力;
在进行用户操作时,通过Session判断该用户是否具有该功能的操作权限
越权的定义
如何理解越权漏洞?(pikachu描述)
为什么会出现越权?
通常情况下,web应用程序提供功能流程是:
登录—>提交请求—>验证权限—>数据库查询—>返回结果
如果在“验证权限”环节存在缺陷,那么便会导致越权
一种常见的存在越权的情形是:Web应用程序的开发者安全意识不足,认为通过登录即可验证用户的身份,而对用户登录之后的操作不做进一步的权限验证,进而导致越权问题。
越权漏洞
分为水平越权、垂直越权、上下文越权
水平越权:
Web应用程序在接收到用户的请求时,我们在增删改查某条数据时候,没有判断数据所对应的用户,或者在判断数据的用户时是通过从用户表单参数中获取userid来实现的,我们可以通过修改userid来实现水平越权。
漏洞修复建议:如果使用token来作为后续身份识别的令牌的话,应该是在提交密码或者验证码的数据包中而且验证通过后返回token,否则可以利用token直接进行越权访问;
垂直越权
垂直越权又叫做权限提升攻击,具体原因就是web应用没有做用户权限控制,或者只是在菜单上做了权限控制,导致恶意用户只要猜测到其他管理页面的URL,就可以访问或者控制其他角色拥有的数据或者页面,达到权限提升的目的。
漏洞修复建议:做好权限控制;
漏洞复现(采用pikachu靶场)
一. 水平越权
打开pikachu靶场,进行水平越权测试,首先我们登陆普通用户,查询普通用户信息;
在lucy账户信息下,修改url中的请求,测试水平越权,可以查到lili的信息。
后台代码分析:
没有使用session来校验,而是使用的传进来的值,权限校验出现问题,这里应该跟登陆状态进行绑定。
二. 垂直越权
登陆超级管理员权限,新增用户信息后,使用代理抓包,再次修改数据包,尝试在brup内新增普通用户;
退出登陆后,对数据包进行重放,发现cookie已经失效,创建用户操作没有成功!!!
我们尝试登陆普通用户,获取cookie:
使用普通用户cookie,重放管理员用户新建用户操作:
普通用户身份下添加用户成功:实现垂直越权!
分类与定义:
根据对数据库的操作进行分类,可分为:
越权查询、越权删除、越权修改、越权添加等。
根据维度进行分类,可分为:
平行越权、垂直越权、交叉越权、上下文越权;
平行越权:权限类型不变,权限ID改变;
垂直越权:权限ID不变,权限类型改变;
交叉越权:权限类型改变,权限ID也改变。
这里引用大佬博客的一张思维导图:
越权漏洞危害
越权漏洞的危害与影响主要是与对应业务的重要性相关,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱裤,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。
如何检测越权漏洞
通过定位鉴权参数,然后替换为其他账户鉴权参数的方法来发现越权漏洞。
越权漏洞修复方案
1、基础安全架构,完善用户权限体系。要知道哪些数据对于哪些用户,哪些数据不应该由哪些用户操作;
2、鉴权,服务端对请求的数据和当前用户身份做校验;
3、不要直接使用对象的实名或关键字。
4、对于可控参数进行严格的检查与过滤!
5 、不能只根据用户 id 去搜索,应该再次进行身份验证。
6、可以从用户的加密认证 cookie 中获取当前用户 id,防止攻击者对其修改。或在 session、cookie 中加入不可预测、不可猜解的 user 信息。
7、在每个页面加载前进行权限认证。
8、特别敏感的操作可以让用户再次输入密码或其他的验证信息。
参考博客:
https://www.anquanke.com/post/id/84892
https://www.jianshu.com/p/1227b390bb9c
https://blog.****.net/lyc1401070320/article/details/83410065
上一篇: 修复针对垂直权限越界问题的方法
下一篇: 如何解决权限超越问题的策略与方案
推荐阅读
-
# Cocos 2 嵌入页面使用 webview,摄像头调用无权限问题
-
OJ 在线评估系统 微服务 高级网关 跨域权限检查 集中式跨域问题解决 扩展 JWT 检查并实施接口限流降级
-
QT 5 调试软件 + Linux 调用脚本 shell - 无法调度 + 目录拼写 + 找不到目录 + sudo 权限 (2) + 问题解决 + 后续补充] QT 5 调试软件 + Linux 调用脚本 shell - 无法调度 + 目录拼写 + 找不到目录 + sudo 权限 (2) + 问题解决 + 后续补充
-
深入探讨中文编码问题:一场杂谈
-
探讨室内导航的技术问题
-
电话回拨模式:解决O2O最后一公里难题的救星?-探讨O2O人文环境中备受争议的最后一公里问题
-
在ARM中涉及的函数调用问题进行探讨
-
C语言版sqrt开方函数,以及优化问题的探讨
-
遇到权限问题?Git ssh key生成及解决方法
-
搞定 OpenSSL SSL_read: Connection was reset, errno 10054 的问题 - 背景探讨