pikachu靶场通关教程(八)——越权访问

发布于 2024-03-25  269 次阅读


一、介绍

越权,是由于开发时逻辑上对权限的检验不当,导致攻击者可以通过某种方式绕过权限检查过程,获取并操作本应受到严格访问控制保护的数据或功能。这可能包括查看他人的敏感信息、篡改他人账户设置、删除他人数据,甚至提升自身权限至管理员级别等。

又分为水平越权和垂直越权,很好理解的是,水平越权就是可以普通用户A可以访问到普通用户B的信息或是进行一系列操作;而垂直越权则是低权限用户可以进行高权限用户的特权行为。

还有一种是交叉越权,指低权限用户不仅可以对其他用户的资源进行篡改,同是还能修改自己的权限级别,从而展开更深入的攻击行为。

二、水平越权

可以从右上角的提示中获取到可以使用的三个账号,lucy、lili和kobe,随便使用一个登录进入个人中心,然后观察url。

很显然的是,使用了username这个参数传入了当前的用户名,那么修改这个用户名就非常可能导致水平越权。我们直接在url中将lucy修改为lili。

这样就发现了水平越权漏洞。

三、垂直越权

根据提示,可以得知当前有两个用户,普通用户pikachu和管理员admin,我们的目的就是使用pikachu完成垂直越权。

分别使用admin登录,来到管理员才能进行的添加操作界面,此时对应的文件是op2_admin_edit.php,如果在访问这个界面时没有对权限进行检查,就会导致越权。

那么使用pikachu登录后直接访问这个界面。

可以访问并进行操作,这里就发生了垂直越权。

还有另一种情况是,admin在执行高权限操作时的Cookie泄露了,但服务器没有及时更新Cookie,也会导致越权。我们抓取admin添加用户时的请求包,放入重放器。

可以看到这个请求包可以一直使用,这就导致了权限泄露。

四、修复方法

无论是水平还是垂直越权,都是对用户身份的检测没有做到位,这里就放在一起说了。

严格的身份验证:在用户执行关键操作或进入关键页面时,应对用户的身份进行严格验证。

隐藏无权限的功能:如果用户对某个模块的功能没有权限,应该在导航栏中隐藏该模块。

安全的会话管理:对于身份凭证、会话令牌等用户识别用户身份的内容,应及时在服务端刷新,在不影响业务的情况下越短越好,不要将刷新逻辑放在客户端。

安全的框架:使用安全的开发框架可以在期初就避免很多的逻辑问题。

避免过多的信息泄露:这点和隐藏无权限的功能类似,秉持非必要不显示的原则,尽可能少的泄露路径、文件、报错信息。

五、后记

越权漏洞一般发生在逻辑上,属于比较常见的漏洞类型。部分开发人员会在前端编写验证逻辑,可以多多挖掘前端的代码,也许就能找到一个问题。