逻辑让我崩溃之越权姿势分享(续集)
字数 1385 2025-08-27 12:33:48
逻辑越权漏洞挖掘与利用高级技巧
0x01 前言
本文总结了多种逻辑越权漏洞的挖掘方法和利用技巧,包括隐藏表单利用、边缘功能点测试、身份校验绕过、HPP参数污染等技术。这些技术在实际渗透测试中非常实用,能够帮助测试人员发现常规测试方法难以发现的漏洞。
0x02 隐藏表单利用
漏洞场景
当点击某个功能后返回空白或"无记录"提示,且请求中不包含用户参数时,可能存在隐藏的表单字段被遗漏。
典型案例
- 信用卡查询功能返回"无记录",但页面中存在隐藏的form表单
- 通过修改隐藏input框的value属性,添加可选择的账号参数
- 后端可能未对该接口做充分鉴权,导致通过修改隐藏参数实现越权查询
关键点
- 检查页面中所有隐藏的form表单(
<input type="hidden">) - 尝试修改隐藏参数的值并观察响应变化
- 验证后端是否对接口查询操作做了鉴权判断
0x03 边缘功能点测试
漏洞场景
应用中一些看似不重要的边缘功能点(如"显示所有"、"保存所有"等)可能存在越权漏洞。
典型案例
- 历史交易明细查询中的"显示所有"功能
- 该功能会为每个用户对应一个id号,通过修改FileName参数可批量查询他人账户交易信息
- 漏洞允许攻击者保存下载他人的完整交易记录
关键点
- 重点关注以下功能点:查询、详情、明细、下载记录等
- 特别检查"显示所有"、"导出全部"等批量操作功能
- 验证批量操作是否使用可预测的ID参数
0x04 身份校验绕过
漏洞场景
通过替换cookie中的身份标识参数,结合特定业务逻辑实现越权操作。
典型案例
- 使用两个测试账号A(未设支付密码)和B(已设支付密码)
- A账户设置支付密码时,拦截请求替换cookie中的mssc_sid为B账户的值
- 第一步身份校验通过后,第二步设置密码操作会修改B账户的支付密码
漏洞原理
- 未校验用户身份标识是否为当前登录账户所属
- 仅第一次校验用户身份,后续操作不再校验
- 利用未设密码账户可直接设置密码的特性
关键点
- 寻找业务流程中身份校验只做一次的情况
- 关注cookie或参数中的用户唯一标识(mssc_sid等)
- 测试是否可以中途替换身份标识完成越权操作
0x05 HPP参数污染
漏洞场景
通过HTTP参数污染(HPP)技术,为同一参数提供多个值,利用应用解析错误实现越权。
典型案例
- 账户别名修改功能,请求中包含PayeeId参数
- PayeeId前14位固定,后4位有规律(递增或随机)
- 在修改A账户别名时,附加B账户的PayeeId参数
- 导致B账户的别名和手机号被修改为A账户的值
利用技巧
- PayeeId参数可爆破(前14位固定,后4位可预测)
- 可结合存储型XSS提高漏洞危害
- 批量修改多个账户信息
关键点
- 测试所有接收用户ID的参数是否支持多值
- 观察ID参数的生成规律(固定前缀+可变后缀)
- 验证后端是否使用第一个或最后一个参数值
0x06 总结
- 隐藏表单:全面检查页面中的所有表单元素,特别是隐藏字段
- 边缘功能:不放过任何看似不重要的功能点,特别是批量操作
- 身份校验:测试身份标识参数是否可替换,校验是否充分
- HPP技术:测试所有ID参数是否支持多值,利用解析差异
- 组合利用:多个漏洞组合使用可提高漏洞危害和利用成功率
通过系统性地应用这些技术,测试人员可以发现更多深层次的逻辑漏洞,提高渗透测试的效果。