概述
- 漏洞描述:攻击者绕过权限认证对敏感内容或功能进行非授权访问。该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。
- 问题类型:代码编程类
- 风险等级:中
- 解决方案:所有页面都要增加认证控制。
漏洞原理
水平越权
攻击者尝试访问相同层级权限的用户数据。
例如承运商A和承运商B,拥有相同的权限等级,只能看到该承运商下订单信息,但如果系统只验证了能访问订单的角色,而没有对订单角色做细分或者校验,导致承运商A能访问到属于承运商B下的订单,那么承运商A访问承运商B下订单的这种行为就叫做水平越权访问。
垂直越权
普通权限用户尝试访问高级别权限的用户数据。
由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
攻击方法
通过隐藏URL
实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用 URL 实现访问控制,但 URL 泄露或被恶意攻击者猜到后,这会导致越权攻击。
直接对象引用
这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权。
多阶段功能
功能有多个阶段的实现,例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码。
静态文件
很多网站的下载功能,一些被下载的静态文件,例如 pdf、word、xls 等,可能只有付费用户或会员可下载,但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载。
平台配置错误
一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。
越权测试
前期交互
- 确认越权测试目标
- 确认越权测试范围
- 确认越权测试计划
- 确认越权测试初步方案
信息收集
- 梳理测试范围内所有涉及业务权限划分的功能。
威胁建模
- 分析信息收集结果做出越权测试的规划和可行性攻击方案。
漏洞分析
- 找出可以实施越权测试的攻击点
- 挖掘系统一些潜在的漏洞
- 开发出相应的漏洞利用代码
越权攻击
- 使用已有的漏洞利用程序对目标系统进行渗透
后渗透攻击
- 寻找最具价值、影响最大、尝试安全保护的信息和资产进行攻击途径进行渗透
测试报告
- 渗透测试团队所获取的到各种有价值信息展示
- 探测和挖掘出来的相关安全漏洞
- 成功攻击的过程
- 以及对业务造成的影响后果分析
- 对系统中存在的脆弱环节、存在的安全问题给出修复建议
防御手段
- 前后端同时对用户输入信息进行校验,双重验证机制
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 特别敏感操作可以让用户再次输入密码或其他的验证信息。
- 可以从用户的加密认证 cookie 中获取当前用户 id,防止攻击者对其修改。或在 session、cookie 中加入不可预测、不可猜解的 user 信息。
- 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
越权漏洞案例详解
环境信息:XAMPP环境下Pikachu靶场
测试范围:查看用户信息、用户管理
使用工具:FireFox,Burp suite
渗透攻击:
水平越权-查看用户信息
- 使用不同用户登陆查看URL地址
- 分析发现URL地址中仅有username不同
- 修改url地址中username发送给服务端查看响应
- 分析结果发现水平越权漏洞
垂直越权-用户管理
- 使用管理员账号登陆截取创建用户请求并转发至repeater
- 使用无创建用户权限的普通用户登陆用户cookie替换repeater中管理员创建用户cookie
- 发送请求查看响应观察结果
- 发现垂直越权漏洞
后渗透攻击
- 垂直越权-恶意获取/篡改/删除用户信息
修复建议
水平越权
- 只判断了是否登录,没有判断是哪个用户
垂直越权
- 只验证了登录状态,没有验证级别