一文详解逻辑越权漏洞
字数 2158 2025-08-10 22:08:13
逻辑越权漏洞详解与防御指南
1. 逻辑越权漏洞概述
1.1 漏洞原理
逻辑越权漏洞是指用户能够跳过自身权限限制,操作同等级用户(水平越权)或高权限用户(垂直越权)的数据或功能。正常情况下,用户访问资源需要经过登录验证、权限检查、数据查询等步骤,但当权限验证不足或缺失时,就会导致越权漏洞。
1.2 漏洞原因
开发人员过分信任客户端提交的数据,在数据增删改查操作时未进行严格的权限判定。
2. 水平越权
2.1 原理
同等级用户间的越权,例如用户A只能查看自己的工资,但通过修改ID等参数可以查看用户B的工资。
2.2 常见位置
- 与数据库进行增删改查的操作点
- 用户信息修改功能
2.3 危害
- 用户个人信息泄露
- 冒充他人身份
2.4 案例演示(Pikachu靶场)
- 登录普通账号(如kobe)
- 查看个人信息时抓包
- 修改请求中的username参数为其他用户(如lucy)
- 成功获取其他用户信息
3. 垂直越权
3.1 原理
低权限账号执行高权限账号的操作,如普通用户执行管理员功能。
3.2 常见位置
- 权限提升功能点
- 管理员专属功能
3.3 必要条件
需要获取高权限用户的数据包,可通过:
- 盲猜数据包
- 获取网站源码本地搭建分析
3.4 危害
- 普通用户修改他人密码
- 篡改他人信息
- 个人信息泄露
3.5 案例演示
- 登录admin账号,抓取添加用户的数据包
- 登录普通账号,获取其cookie
- 用普通用户cookie替换admin数据包中的cookie
- 成功以普通用户身份执行添加用户操作
4. 支付逻辑漏洞
4.1 常见类型
- 修改支付价格:直接修改订单金额参数
- 修改支付状态:将"未支付"改为"已支付"
- 修改购买数量:修改为负数导致金额为负
- 替换支付:用低价订单支付高价商品
- 越权支付:修改支付用户ID为他人账号
- 修改优惠价:直接修改优惠金额参数
4.2 常见篡改参数
- 商品ID
- 购买价格
- 购买数量
- 支付方式
- 订单号
- 支付状态
4.3 案例演示(大米CMS 5.4)
修改支付价格:
- 选择6000元的商品
- 抓取购买数据包
- 修改price参数为100
- 成功以100元购买原价6000元的商品
替换支付:
- 抓取高价商品(5400元)的购买数据包
- 抓取低价商品的购买数据包
- 将低价订单中的商品ID替换为高价商品ID
- 用低价购买高价商品
5. Cookie脆弱性漏洞
5.1 原理
服务器仅检查cookie是否存在而非有效性,导致可伪造cookie越权访问。
5.2 案例演示(熊海CMS)
- 审计代码发现仅检查cookie是否为空
- 访问admin页面被重定向到登录页
- 手动添加任意cookie值(如cookie=1)
- 成功访问admin管理界面
6. 密码找回漏洞
6.1 原理
未验证短信验证码与手机的匹配关系,仅验证验证码有效性。
6.2 案例演示
- 获取目标手机号的验证码(通过自己的手机)
- 在目标账号的重置页面填入该验证码
- 修改手机号为目标账号
- 成功重置目标账号密码
7. Response状态值绕过
7.1 原理
修改服务器返回的状态值(true/1/success等)绕过前端验证。
7.2 前提条件
必须是前端验证结果,后端验证无法绕过。
7.3 案例演示
- 查看正确操作返回的状态值(如1)
- 查看错误操作返回的状态值(如3)
- 拦截响应包,将错误状态值修改为正确值
- 前端显示操作成功(但数据库可能未真正更新)
8. Token安全问题
8.1 Token原理
服务器生成的身份令牌,客户端后续请求携带该Token避免重复验证。
8.2 Token暴力破解
- 分析Token生成规律(如前端回显)
- 使用Burp的pitchfork模式同时爆破密码和Token
- 设置递归搜索获取每次返回的新Token
9. 验证码安全问题
9.1 客户端回显
验证码在响应包中明文显示,可直接获取使用。
9.2 验证码爆破
对4-6位数字验证码进行暴力破解。
9.3 验证码复用
服务端复用:
- 验证码未及时刷新
- 可重复使用同一验证码尝试不同账号
客户端复用:
- 跳过前端验证码检查
- 直接发送有效验证码到服务端
10. 自动化检测工具
10.1 Autorize插件
- 自动检测授权漏洞
- 配置低权限账号cookie后,用高权限账号操作
- 红色表示存在越权,绿色表示安全
10.2 Burp爬虫扫描
- 爬取网站所有页面
- 搜索敏感参数(id,user,uid等)
- 快速定位可能的越权点
11. 防御方案
11.1 通用防御
- 前后端双重校验机制
- 关键操作前验证用户权限
- 加密敏感资源ID防止枚举
- 严格检查过滤所有可控参数
11.2 Cookie安全
- 设置合理有效期
- 加密及数字签名
- 不在cookie中存储敏感信息
- 设置安全属性(HttpOnly, Secure)
11.3 支付安全
- 商品价格以数据库为准
- 禁止负数和异常数量
- 使用Token保证请求唯一性
- 校验订单与支付匹配性
11.4 验证码安全
- 服务端校验验证码与手机号匹配
- 限制验证码尝试次数
- 设置合理有效期
- 及时销毁已使用验证码
11.5 Token安全
- 服务端生成并校验
- 设置合理有效期
- 绑定用户会话信息
- 防止前端回显
通过全面实施这些防御措施,可有效防止各类逻辑越权漏洞,保护系统安全。