使用session机制有助于防止越权操作的产生_越权漏洞原理及防御方案

22c41d9680bd26dd3f5a4520c3b7e3a9.png

一、漏洞描述

越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。

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

二、漏洞分类

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

fe829fb4e8081da5a57bbebcf5439580.png

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

c19d52f2820bfe833c1e44a11e746d83.png

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

f5e5a5a4890cbcf9ef5ed993d385cf63.png

三、漏洞产生的原因

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

1. 通过隐藏 URL

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

2. 直接对象引用

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

3. 多阶段功能

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

4. 静态文件

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

5. 平台配置错误

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

四、漏洞利用

利用靶场进行越权漏洞演练:

首先注册一个普通用户

e9e157edfeeb683e2e0d7bd85435c9d6.png

b0976f662cc1568cd7c9784f8634b4c5.png

这个靶场在“修改资料”处存在垂直越权漏洞,所以点击修改资料,抓包:

688c38145cd01d43006f7ff69634527c.png

可以看到admin=0;shenfen=2两个参数。通过调试,我们发现shenfen参数1决定是否为管理员,admin为1代表是管理员,为0代表不是管理员。所以我们将改admin改为1,shenfen参数改为1:

14e8018c3bb0322bbd5c21d5de2adbed.png

继续抓包,继续修改。因为修改这个资料参数可能要经过好几个页面的判定。

4c5537a7b9368f260d036e852132ea22.png

最后我们终于进入了后台,以普通用户的名字,管理员的权限。

e19539d80a47f388c37462b2f8ad1911.png

五、防范措施

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值