账号枚举在查什么
登录、注册与找回密码流程如果对「账号存在」与「账号不存在」给出不同反馈,就等于提供了一个账号探测器。可用的差异有三类:响应文案(用户不存在与口令错误)、状态码、响应时间。枚举本身危害有限,但它是撞库与定向钓鱼的前置步骤——攻击者先确认一批有效账号,再针对性地试口令。核查因此要横向覆盖三条链路,并注意只用自有测试账号。
基本信息
| 渠道 | 登录报错、注册占用提示、找回密码响应 |
|---|---|
| 信号 | 文案差异、状态码差异、响应耗时差异 |
| 验证方式 | 存在与不存在的账号各触发多次,对比三类差异 |
| 纪律 | 只用自有测试账号与自有域名,绝不使用真实用户邮箱 |
| 修复方向 | 统一提示文案与响应时间,敏感流程加限速 |
典型使用场景
- 账号安全评估的常规项,成本低、结论清晰
- 为撞库防护评估提供输入:有效账号集合是否可被批量确认
- 核查注册流程的占用提示是否泄露账号存在性
- 对比三条链路的一致性:登录与找回的处理逻辑常不同步
- 修复验证:确认文案与时间差已统一,且有频次限制
检查步骤
检查步骤
# 1. 用存在与不存在的账号各触发 5 次同类请求(自有域名)
for i in 1 2 3 4 5; do
curl -s -o /dev/null -w 'exists %{http_code} %{time_total}\n' \
-X POST https://example.com/login -d 'user=own-test@example.com&pass=x'
curl -s -o /dev/null -w 'missing %{http_code} %{time_total}\n' \
-X POST https://example.com/login -d 'user=no-such-user-xyz@example.com&pass=x'
done
# 2. 对比状态码、响应文案与耗时;多轮取样比单次更有说服力
# 3. 在找回密码与注册流程重复同样验证
# 4. 记录差异点(不记录真实用户信息)差异类型与影响
| 差异类型 | 可被利用程度 | 处置 |
|---|---|---|
| 文案不同(用户不存在 / 口令错误) | 高,直接可判 | 统一为中性提示 |
| 状态码不同(404 / 401) | 高,脚本化成本极低 | 统一返回值 |
| 响应时间明显不同 | 中,需要取样统计 | 统一处理路径,必要时加入随机延迟 |
| 无任何差异 | 不可利用 | 记录为已核查 |
枚举本身属低危,但会助长撞库与定向钓鱼:修复以统一响应与限速为主,不必夸大定级。
不要用真实用户邮箱或手机号批量尝试:这既触碰隐私,也会造成真实的密码重置邮件骚扰,必须有书面授权才可能例外。