目录
越权漏洞概述:
越权访问(Broken Access Control,简称 BAC)是 Web 应用程序中一种常见的漏洞,被 OWASP 列为 Web 应用十大安全隐患的第二名。应用程序在检查用户授权时存在漏洞,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、 查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦用户权限验证不充分,就易致越权漏洞。
越权漏洞分类:
水平越权(平行越权):相同授权下不同用户的相互访问
垂直越权:不同级别之间或者不同角色之间越权,通常是权限较低的用户越权至高权限用户
水平越权
以pikachu靶场为例:
我们以两个用户账号为例,进行水平越权演示
用户名:vince 密码:123456
用户名:allen 密码:123456
此时便完成了一次水平越权,我们原本只有vince的授权去查看vince的个人信息,但由于用户授权验证较松,我们通过vince的权限查询到了allen的个人信息。
水平越权源代码分析:
username 传入在此之前没有任何验证,传入参数拼接到数据库查询了。没有进行验证权限验证。
垂直越权
同样以pikachu靶场为例
我们以两个用户账号为例,进行垂直越权演示
高权限用户:admin 密码:123456
普通用户:pikachu 密码:000000
我们模拟用管理员账户添加一个新用户ningsec
在提交创建用户信息时,将包拦截下来,此时,我们去普通用户界面,查看普通用户(低权限)的cookie,并替换掉管理员(高权限)的cookie
替换掉cooike后进行发送,返回管理员页面,发现我们用低权限进行了一次高权限的操作
此时便完成了一次垂直越权,我们原本只有admin(高权限)才能进行添加用户的操作,但是我们发现,用pikachu(低权限)的cookie替换掉admin(高权限)的cookie,低权限能直接进行高权限操作。
垂直越权源代码分析
登录账号和密码,在数据库中,返回 level 如果等于 1 跳转管理员页面
如果等于 2 就进行用户页面。
在 op2_admin_edit.php 源码中,只是判断是否登录,并没有对用户权限进行验证,只要是登录就能往下操 作,这个页面的添加账号信息。所以登录的任何用户只要提交参数即可创建用户。
越权漏洞修复方案
1、基础安全架构,完善用户权限体系。要知道哪些数据对于哪些用户,哪些数据不应该由哪些用户操作;
2、鉴权,服务端对请求的数据和当前用户身份做校验;
3、不要直接使用对象的实名或关键字。
4、对于可控参数进行严格的检查与过滤!
ok兄弟们快乐周末去了,周六就要有周六的态度,什么事情下周再说!祝各位周末愉快!