一文详解逻辑越权漏洞
字数 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靶场)

  1. 登录普通账号(如kobe)
  2. 查看个人信息时抓包
  3. 修改请求中的username参数为其他用户(如lucy)
  4. 成功获取其他用户信息

3. 垂直越权

3.1 原理

低权限账号执行高权限账号的操作,如普通用户执行管理员功能。

3.2 常见位置

  • 权限提升功能点
  • 管理员专属功能

3.3 必要条件

需要获取高权限用户的数据包,可通过:

  • 盲猜数据包
  • 获取网站源码本地搭建分析

3.4 危害

  • 普通用户修改他人密码
  • 篡改他人信息
  • 个人信息泄露

3.5 案例演示

  1. 登录admin账号,抓取添加用户的数据包
  2. 登录普通账号,获取其cookie
  3. 用普通用户cookie替换admin数据包中的cookie
  4. 成功以普通用户身份执行添加用户操作

4. 支付逻辑漏洞

4.1 常见类型

  1. 修改支付价格:直接修改订单金额参数
  2. 修改支付状态:将"未支付"改为"已支付"
  3. 修改购买数量:修改为负数导致金额为负
  4. 替换支付:用低价订单支付高价商品
  5. 越权支付:修改支付用户ID为他人账号
  6. 修改优惠价:直接修改优惠金额参数

4.2 常见篡改参数

  • 商品ID
  • 购买价格
  • 购买数量
  • 支付方式
  • 订单号
  • 支付状态

4.3 案例演示(大米CMS 5.4)

修改支付价格:

  1. 选择6000元的商品
  2. 抓取购买数据包
  3. 修改price参数为100
  4. 成功以100元购买原价6000元的商品

替换支付:

  1. 抓取高价商品(5400元)的购买数据包
  2. 抓取低价商品的购买数据包
  3. 将低价订单中的商品ID替换为高价商品ID
  4. 用低价购买高价商品

5. Cookie脆弱性漏洞

5.1 原理

服务器仅检查cookie是否存在而非有效性,导致可伪造cookie越权访问。

5.2 案例演示(熊海CMS)

  1. 审计代码发现仅检查cookie是否为空
  2. 访问admin页面被重定向到登录页
  3. 手动添加任意cookie值(如cookie=1)
  4. 成功访问admin管理界面

6. 密码找回漏洞

6.1 原理

未验证短信验证码与手机的匹配关系,仅验证验证码有效性。

6.2 案例演示

  1. 获取目标手机号的验证码(通过自己的手机)
  2. 在目标账号的重置页面填入该验证码
  3. 修改手机号为目标账号
  4. 成功重置目标账号密码

7. Response状态值绕过

7.1 原理

修改服务器返回的状态值(true/1/success等)绕过前端验证。

7.2 前提条件

必须是前端验证结果,后端验证无法绕过。

7.3 案例演示

  1. 查看正确操作返回的状态值(如1)
  2. 查看错误操作返回的状态值(如3)
  3. 拦截响应包,将错误状态值修改为正确值
  4. 前端显示操作成功(但数据库可能未真正更新)

8. Token安全问题

8.1 Token原理

服务器生成的身份令牌,客户端后续请求携带该Token避免重复验证。

8.2 Token暴力破解

  1. 分析Token生成规律(如前端回显)
  2. 使用Burp的pitchfork模式同时爆破密码和Token
  3. 设置递归搜索获取每次返回的新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安全

  • 服务端生成并校验
  • 设置合理有效期
  • 绑定用户会话信息
  • 防止前端回显

通过全面实施这些防御措施,可有效防止各类逻辑越权漏洞,保护系统安全。

逻辑越权漏洞详解与防御指南 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安全 服务端生成并校验 设置合理有效期 绑定用户会话信息 防止前端回显 通过全面实施这些防御措施,可有效防止各类逻辑越权漏洞,保护系统安全。