Web安全之逻辑漏洞全方位总结
字数 2042 2025-08-11 21:26:09

Web安全之逻辑漏洞全方位总结

1. 水平越权

1.1 原理

通过更换某个ID之类的身份标识,使得A账号能够获取(修改、删除等)B账号的数据。

1.2 容易出现的地方

  • 权限页面(需要登录的页面)中的增、删、改、查操作
  • 后台对用户权限校验不严格的地方

1.3 案例演示

  1. 登录到kobe账户
  2. 查看个人信息并抓包
  3. 将请求中的kobe改为lucy
  4. 成功获取lucy用户的信息

1.4 危害

  • 获取其他用户敏感信息
  • 篡改其他用户数据
  • 游戏场景中可能获取高价值账号

2. 垂直越权

2.1 原理

使用低权限身份的账号,发送高权限账号才能有的请求,获得高权限操作。

2.2 容易出现的地方

  • 普通用户尝试使用管理员功能
  • 权限校验不严格的接口

2.3 案例演示

  1. 使用admin账户添加用户并抓包
  2. 使用pikachu账户登录
  3. 将pikachu的cookie替换为admin的cookie
  4. 成功创建新账户

2.4 危害

  • 信息泄露
  • 系统功能被滥用
  • 严重者可获得系统管理权限

3. 支付漏洞

5.1 直接修改商品价格

  • 在订购、确认信息、付款三个步骤中任意一步修改价格
  • 尝试修改为小数目或负数

5.2 修改支付状态

  • 将支付状态从"未支付"改为"已支付"
  • 将低价商品的数据包用于高价商品

5.3 修改商品数量

  • 将数量改为负数可能导致"零元购"
  • 数量过大可能导致整数溢出

5.4 另类支付

  1. 修改优惠券金额
  2. 修改积分金额
  3. 修改满减规则
  4. 利用业务逻辑问题绕过支付验证

5.5 修改支付接口

  • 修改为不存在的支付接口
  • 利用接口处理不当绕过支付

5.6 重复支付

  • 重复提交试用卡订单
  • 退款时可能获得额外收益

5.7 最小支付和最大支付

  • 最小支付可能导致低价获取高价值物品
  • 最大支付可能导致整数溢出(2147483647)

5.8 四舍五入漏洞

  • 充值0.019元可能被系统识别为0.02元
  • 实际支付0.01元

5.9 首单优惠滥用

  • 重复利用首单优惠
  • 修改优惠参数

5.10 越权支付

  • 修改支付请求中的用户ID
  • 用其他用户的账户支付

5.11 无限次试用

  • 重复调用试用接口
  • 试用时间累加

5.12 多线程并发问题

  • 在提现、转账等操作时并发请求
  • 可能导致超额提现或多次兑换

4. Cookie脆弱性

6.1 漏洞原理

  • Cookie中直接包含用户身份信息
  • 修改Cookie值可切换用户

6.2 利用方法

  1. 抓取包含用户信息的Cookie
  2. 修改为其他用户的值
  3. 重放请求

5. 客户端回显漏洞

7.1 原理

  • 验证码等信息直接回显在响应中
  • 客户端完成验证而非服务端

7.2 危害

  • 任意用户注册
  • 密码重置
  • 账户绑定

7.3 利用方法

  1. 抓取包含验证码的响应
  2. 使用正确的验证码完成操作

6. Response状态值修改

8.1 原理

  • 修改服务器返回的状态值(true,1,ok,success等)
  • 客户端依赖这些值判断操作是否成功

8.2 利用过程

  1. 拦截错误响应
  2. 修改为成功状态
  3. 客户端误认为操作成功

7. 验证码漏洞

9.1 无效验证

  • 验证码与业务功能无关联
  • 可绕过验证码直接操作

9.2 任意用户注册

  1. 使用自己手机号获取验证码
  2. 修改为其他用户手机号
  3. 完成注册

9.3 客户端验证绕过

  • 验证码明文显示在前端
  • 直接获取正确验证码

9.4 返回密文验证码

  • 解密响应中的密文获取验证码

9.5 拦截替换返回包

  1. 保存正常操作的响应
  2. 替换错误操作的响应

9.6 验证码爆破

  • 对4位或6位数字验证码进行爆破
  • 无次数限制时可成功

9.7 验证码与手机未绑定

  • A手机的验证码B手机可用
  • 同一手机短时间内接收的多个验证码都有效

9.8 代码层逻辑缺陷

  • 利用"\n"和空格绕过限制
  • 导致无限短信轰炸

8. 短信轰炸

10.1 原理

  • 重复调用短信接口
  • 无频率限制

10.2 防御方法

  • 增加图形验证码
  • 限制同一手机号发送频率
  • 增加时间间隔

9. Token绕过

11.1 前端回显

  • Token直接显示在响应中
  • 可被直接获取

11.2 Token爆破

  1. 设置单线程爆破
  2. 递归搜索Token值
  3. 使用正确的Token完成操作

10. Callback自定义返回调用

12.1 原理

  • Callback参数控制返回地址
  • 可被修改为恶意地址

12.2 利用方法

  • 修改callback参数进行XSS攻击
  • 关注敏感参数:id, callback, filename, uid等

防御建议

  1. 服务端严格校验用户权限
  2. 重要操作使用二次验证
  3. 支付金额等敏感数据服务端校验
  4. 验证码服务端校验且一次有效
  5. 接口添加防重放机制
  6. 关键操作添加日志记录
  7. 使用安全的会话管理机制
  8. 输入参数严格过滤

工具推荐

  1. Burp Suite

    • Repeater模块测试请求修改
    • Intruder模块进行爆破
    • Autorize插件检测越权漏洞
  2. 自定义脚本

    • Python脚本自动化测试
    • 多线程并发测试

通过全面理解这些逻辑漏洞的原理和利用方法,安全人员可以更好地发现和修复系统中的安全隐患,开发人员也能在编码时避免这些常见问题。

Web安全之逻辑漏洞全方位总结 1. 水平越权 1.1 原理 通过更换某个ID之类的身份标识,使得A账号能够获取(修改、删除等)B账号的数据。 1.2 容易出现的地方 权限页面(需要登录的页面)中的增、删、改、查操作 后台对用户权限校验不严格的地方 1.3 案例演示 登录到kobe账户 查看个人信息并抓包 将请求中的kobe改为lucy 成功获取lucy用户的信息 1.4 危害 获取其他用户敏感信息 篡改其他用户数据 游戏场景中可能获取高价值账号 2. 垂直越权 2.1 原理 使用低权限身份的账号,发送高权限账号才能有的请求,获得高权限操作。 2.2 容易出现的地方 普通用户尝试使用管理员功能 权限校验不严格的接口 2.3 案例演示 使用admin账户添加用户并抓包 使用pikachu账户登录 将pikachu的cookie替换为admin的cookie 成功创建新账户 2.4 危害 信息泄露 系统功能被滥用 严重者可获得系统管理权限 3. 支付漏洞 5.1 直接修改商品价格 在订购、确认信息、付款三个步骤中任意一步修改价格 尝试修改为小数目或负数 5.2 修改支付状态 将支付状态从"未支付"改为"已支付" 将低价商品的数据包用于高价商品 5.3 修改商品数量 将数量改为负数可能导致"零元购" 数量过大可能导致整数溢出 5.4 另类支付 修改优惠券金额 修改积分金额 修改满减规则 利用业务逻辑问题绕过支付验证 5.5 修改支付接口 修改为不存在的支付接口 利用接口处理不当绕过支付 5.6 重复支付 重复提交试用卡订单 退款时可能获得额外收益 5.7 最小支付和最大支付 最小支付可能导致低价获取高价值物品 最大支付可能导致整数溢出(2147483647) 5.8 四舍五入漏洞 充值0.019元可能被系统识别为0.02元 实际支付0.01元 5.9 首单优惠滥用 重复利用首单优惠 修改优惠参数 5.10 越权支付 修改支付请求中的用户ID 用其他用户的账户支付 5.11 无限次试用 重复调用试用接口 试用时间累加 5.12 多线程并发问题 在提现、转账等操作时并发请求 可能导致超额提现或多次兑换 4. Cookie脆弱性 6.1 漏洞原理 Cookie中直接包含用户身份信息 修改Cookie值可切换用户 6.2 利用方法 抓取包含用户信息的Cookie 修改为其他用户的值 重放请求 5. 客户端回显漏洞 7.1 原理 验证码等信息直接回显在响应中 客户端完成验证而非服务端 7.2 危害 任意用户注册 密码重置 账户绑定 7.3 利用方法 抓取包含验证码的响应 使用正确的验证码完成操作 6. Response状态值修改 8.1 原理 修改服务器返回的状态值(true,1,ok,success等) 客户端依赖这些值判断操作是否成功 8.2 利用过程 拦截错误响应 修改为成功状态 客户端误认为操作成功 7. 验证码漏洞 9.1 无效验证 验证码与业务功能无关联 可绕过验证码直接操作 9.2 任意用户注册 使用自己手机号获取验证码 修改为其他用户手机号 完成注册 9.3 客户端验证绕过 验证码明文显示在前端 直接获取正确验证码 9.4 返回密文验证码 解密响应中的密文获取验证码 9.5 拦截替换返回包 保存正常操作的响应 替换错误操作的响应 9.6 验证码爆破 对4位或6位数字验证码进行爆破 无次数限制时可成功 9.7 验证码与手机未绑定 A手机的验证码B手机可用 同一手机短时间内接收的多个验证码都有效 9.8 代码层逻辑缺陷 利用"\n"和空格绕过限制 导致无限短信轰炸 8. 短信轰炸 10.1 原理 重复调用短信接口 无频率限制 10.2 防御方法 增加图形验证码 限制同一手机号发送频率 增加时间间隔 9. Token绕过 11.1 前端回显 Token直接显示在响应中 可被直接获取 11.2 Token爆破 设置单线程爆破 递归搜索Token值 使用正确的Token完成操作 10. Callback自定义返回调用 12.1 原理 Callback参数控制返回地址 可被修改为恶意地址 12.2 利用方法 修改callback参数进行XSS攻击 关注敏感参数:id, callback, filename, uid等 防御建议 服务端严格校验用户权限 重要操作使用二次验证 支付金额等敏感数据服务端校验 验证码服务端校验且一次有效 接口添加防重放机制 关键操作添加日志记录 使用安全的会话管理机制 输入参数严格过滤 工具推荐 Burp Suite Repeater模块测试请求修改 Intruder模块进行爆破 Autorize插件检测越权漏洞 自定义脚本 Python脚本自动化测试 多线程并发测试 通过全面理解这些逻辑漏洞的原理和利用方法,安全人员可以更好地发现和修复系统中的安全隐患,开发人员也能在编码时避免这些常见问题。