关于越权漏洞

#学习笔记#

越权的概念

越权访问(Brocken Access Control,简称BAC)是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。是一种逻辑漏洞。

越权漏洞的产生原因

由于开发人员在对数据进行增、删、改查时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就容易导致越权漏洞。(除越权漏洞外,支付漏洞,密码找回等也是因为对客户端请求的数据过分相信造成的。)

什么是逻辑漏洞

之所以称为逻辑漏洞,是因为代码之后是人的逻辑,人更容易犯错,是编写完程序时因为人的思维逻辑不足而产生的缺陷。与sql注入、xss漏洞不同,他们可以通过安全框架等避免,这种攻击的流量非法,对原始程序进行了破坏,可以通过防火墙进行检测,逻辑漏洞是通过合理合法的方式达到破坏。

逻辑漏洞主要包括:越权、非授权、验证码绕过、支付、密码找回等。

越权的分类

水平越权

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

垂直越权

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

标准的web权限设计方案

RBAC role/resource based access control

1.基于角色的访问控制

2.基于资源的访问控制

现在的web权限设计就是这两个的结合

菜单权限 => 你能够看到那些菜单 =>你能不能看到对应的页面

功能权限 => 你能够操作哪些功能 => 能不能点击对应的功能

越权漏洞产生常见 的几种情况

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

1.隐藏URL

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

场景:后台功能

优化:基于RBAC机制,对用户开放统一的入口,并在入口处做session判定,并对用户访问的URL进行权限判定(本地会存在一个权限数据表),如果用户访问的URL在权限列表中,则允许访问,如果不在权限列表,则不允许访问。

2.直接对象引用

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

场景:查看资料/个人中心/我的订单

3.多阶段功能

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

场景:找回密码/支付/请假/审批

4.静态文件

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

场景:下载

5.平台配置错误

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

越权漏洞防御

1.前后端同时对用户输入信息进行校验,双重验证机制

2.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限

3.特别敏感的操作可以让用户再次输入密码或者其他的验证信息。

4。可以从用户的加密认证cookie中获取当前用户的id,防止攻击者对其修改,或者在session、cookie中加入不可预测、不可猜解的user信息。

5.直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理

6.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤。

pikachu靶场实操

水平越权

先登录lucy的帐号

点击查看个人信息并进行抓包

将username改为lili

放行数据包,成功查看lili的个人信息

垂直越权

先登录admin账户,进入添加用户界面,复制当前url

登录pikachu账号,只有查看权限,修改url,成功进入添加用户界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值