SRC 实战技巧:通过参数名 Fuzz 突破注册接口,斩获千元赏金
在 SRC 漏洞挖掘中很多人会把 Fuzz 等同于无脑暴力测试觉得对着接口乱试参数效率极低但实际上定向的参数 Fuzz 是挖掘边界逻辑漏洞的高效手段。不少高危漏洞都不需要复杂的利用链恰恰藏在开发者容易忽略的参数命名、接口规范细节里一个简单的参数枚举就能突破站点的权限防线。本文分享一个典型的实战案例看看如何通过小范围的参数 Fuzz快速突破未公开注册接口的限制。一、前期信息收集定位接口异常测试目标是一个带登录入口的后台系统页面为常规的账号密码 图形验证码登录表单。首先对登录功能进行常规抓包分析确认登录请求的账号参数名为username整体请求逻辑无明显异常。继续梳理前端 JS 资源时发现系统存在未在前端页面暴露的/register注册接口属于可未授权访问的隐藏功能点。正常逻辑下注册接口与登录接口的账号参数名通常保持一致于是直接参照登录接口的参数构造注册请求向/register接口提交包含username、密码等字段的请求。但接口持续返回 “账号不能为空” 的报错调整请求方法、传参格式、编码方式后报错依然存在。此时可以排除传参格式错误的问题核心原因基本可以确定注册接口的账号参数名与登录接口的命名不一致而前端没有暴露注册功能无法通过页面获取正确的参数名。二、核心突破定向参数 Fuzz既然前端和 JS 资源里都找不到注册接口的参数定义盲目猜解效率太低这时就可以用定向 Fuzz 的思路解决问题。1. 构造针对性字典这类账号类参数的命名有很强的行业共性不需要全量暴力枚举只需要覆盖开发常用的命名习惯即可。整理常见的用户账号参数变体包括不同大小写、驼峰命名、业务场景的写法基础命名name、Name通用用户命名username、Username、UserName简写命名user、User账号类命名account、Account登录场景命名loginname、loginName整个字典仅十余条参数属于极小范围的定向枚举不会对站点造成压力且命中率远高于全量 fuzz。2. Fuzz 验证结果将字典中的参数名逐一替换注册请求的账号字段遍历测试后成功匹配到注册接口的正确账号参数名。提交请求后不再报错账号注册成功。三、漏洞利用与收益使用注册成功的账号登录系统进入后台后发现普通注册账号可直接访问大量系统内部业务数据存在明显的权限管控缺失问题属于敏感信息泄露风险。按照 SRC 漏洞评级规则提交漏洞后最终获得 1200 元的漏洞赏金。四、案例复盘与挖洞技巧1. 漏洞的本质成因这个漏洞看似简单实际是多个开发疏漏叠加的结果接口规范不统一登录与注册接口大概率由不同开发人员维护没有统一的参数命名标准导致同个业务的两个接口参数名不一致。接口权限缺失注册接口未做访问限制可被未授权用户直接调用同时没有配置请求频次限制、人机校验给参数枚举留下了空间。权限分级失效普通注册账号没有做权限隔离可直接访问后台敏感数据放大了漏洞的危害等级。2. 参数 Fuzz 的适用场景不是所有场景都适合用 Fuzz这类小范围参数枚举尤其适合以下几种情况发现隐藏接口但无法从前端获取参数名同系统不同接口命名风格混乱大概率存在参数名差异老系统、多团队迭代的项目开发规范不统一的站点。3. 高效 Fuzz 的实用技巧优先测试大小写、驼峰、下划线的常见变体80% 的命名差异都在这类基础变体里结合业务场景构造字典用户类、订单类、管理类接口各有常用的参数命名定向小字典的效率远高于全量暴力枚举Fuzz 前先排除传参格式、请求方法、编码方式的问题避免做无用功。很多 SRC 漏洞都不需要高深的技术往往藏在开发者的思维盲区里。参数 Fuzz 看似简单却是快速挖掘边界漏洞的实用技巧核心从来不是 “暴力测试”而是找到正确的测试方向用最小的成本命中开发的逻辑疏漏。