一、介绍
越权,是由于开发时逻辑上对权限的检验不当,导致攻击者可以通过某种方式绕过权限检查过程,获取并操作本应受到严格访问控制保护的数据或功能。这可能包括查看他人的敏感信息、篡改他人账户设置、删除他人数据,甚至提升自身权限至管理员级别等。
又分为水平越权和垂直越权,很好理解的是,水平越权就是可以普通用户A可以访问到普通用户B的信息或是进行一系列操作;而垂直越权则是低权限用户可以进行高权限用户的特权行为。
还有一种是交叉越权,指低权限用户不仅可以对其他用户的资源进行篡改,同是还能修改自己的权限级别,从而展开更深入的攻击行为。
二、水平越权
可以从右上角的提示中获取到可以使用的三个账号,lucy、lili和kobe,随便使用一个登录进入个人中心,然后观察url。
很显然的是,使用了username这个参数传入了当前的用户名,那么修改这个用户名就非常可能导致水平越权。我们直接在url中将lucy修改为lili。
这样就发现了水平越权漏洞。
三、垂直越权
根据提示,可以得知当前有两个用户,普通用户pikachu和管理员admin,我们的目的就是使用pikachu完成垂直越权。
分别使用admin登录,来到管理员才能进行的添加操作界面,此时对应的文件是op2_admin_edit.php,如果在访问这个界面时没有对权限进行检查,就会导致越权。
那么使用pikachu登录后直接访问这个界面。
可以访问并进行操作,这里就发生了垂直越权。
还有另一种情况是,admin在执行高权限操作时的Cookie泄露了,但服务器没有及时更新Cookie,也会导致越权。我们抓取admin添加用户时的请求包,放入重放器。
可以看到这个请求包可以一直使用,这就导致了权限泄露。
四、修复方法
无论是水平还是垂直越权,都是对用户身份的检测没有做到位,这里就放在一起说了。
严格的身份验证:在用户执行关键操作或进入关键页面时,应对用户的身份进行严格验证。
隐藏无权限的功能:如果用户对某个模块的功能没有权限,应该在导航栏中隐藏该模块。
安全的会话管理:对于身份凭证、会话令牌等用户识别用户身份的内容,应及时在服务端刷新,在不影响业务的情况下越短越好,不要将刷新逻辑放在客户端。
安全的框架:使用安全的开发框架可以在期初就避免很多的逻辑问题。
避免过多的信息泄露:这点和隐藏无权限的功能类似,秉持非必要不显示的原则,尽可能少的泄露路径、文件、报错信息。
五、后记
越权漏洞一般发生在逻辑上,属于比较常见的漏洞类型。部分开发人员会在前端编写验证逻辑,可以多多挖掘前端的代码,也许就能找到一个问题。
Comments | NOTHING