越权漏洞(Pikachu)

原理

该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。

漏洞分类

越权访问漏洞主要分为水平越权、垂直越权。

img

水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权访问。

img

垂直越权:由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

img

漏洞产生原因

通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。

\1. 通过隐藏 URL

实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用 URL 实现访问控制,但 URL 泄露或被恶意攻击者猜到后,这会导致越权攻击。

\2. 直接对象引用

这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权。

\3. 多阶段功能

多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码。

\4. 静态文件

很多网站的下载功能,一些被下载的静态文件,例如 pdf、word、xls 等,可能只有付费用户或会员可下载,但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载。

\5. 平台配置错误

一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。

pikachu

水平越权

查看提示后都是普通用户,登录lucy账号

image-20240508125938054

看到url里参数username=lucy以此来判断用户身份,试试改成lili,可以看到在登录lucy的情况下访问到了lili的用户信息,发生水平越权。

image-20240508130210854

这是因为查找用户信息时传入的参数是直接从url中获取的,没有校验当前用户是否为要查找信息的用户

改进:增加判断url传入的username和当前用户是否匹配,如果匹配则为$username赋值,若不匹配则不赋值。

垂直越权

查看提示超级用户:admin;普通用户:pikachu

我们先看看普通用户

image-20240508132052278

再看看超级用户,比普通用户多了用户管理选项

image-20240508132116036

我们点击添加用户,观察url

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

删除用户

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=1

再删除一个用户,貌似参数id有什么规律

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=2

image-20240508132900539

再次用普通用户pikachu登录

登录后直接输入地址栏输入payload:

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

顺利来到了添加用户的页面

添加用户为chacha

再次登录pikachu用户发现创建完成

image-20240508225413950

试试

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=3

并未删除成功

思考

op2_admin_edit.php(添加用户操作)

22-25行只验证了用户是否登录,如果没登录就跳转到登录页面,没有验证用户权限等级,但前端显示添加用户是权限等级为1的用户才能执行的操作,因此这里有垂直越权漏洞。

image-20240508230405404

op2_admin.php(删除操作)

主要是23~26行,判断了用户是否登录,是否权限级别为1(超级boss),如果任意一条不满足,就跳转到登录页面,没有垂直越权漏洞

image-20240508230539835

posted @ 2024-05-12 14:14  machacha  阅读(107)  评论(0编辑  收藏  举报