--- category: web name: pentest-login description: 登录与鉴权测试 - Token权限分析、认证绕过、暴力破解、JWT/OAuth攻击、验证码绕过 when_to_use: JS分析和API发现完成后 --- # 登录与鉴权测试 ## 安全规则 - **密码重置不测试**:涉及修改用户数据,必须询问用户确认。放最后当备选 - **锁定策略检测优先**:发现锁定后每轮上限=阈值-1。例如5次锁定→最多4次 - 仅测试授权目标 ## 文件组织 ``` tmp/<时间戳>/raw/login/ ├── auth_endpoints.txt ├── token_analysis.txt ├── auth_bypass.txt ├── brute_force.txt ├── jwt_analysis.txt ├── oauth_analysis.txt └── captcha_mfa.txt ``` ## 前置判断 如果前面阶段已拿到有效账号密码(硬编码/默认凭据)→ 跳过阶段3(绕过)和阶段4(爆破),直接进入阶段2(Token分析)和阶段5-7(JWT/OAuth/MFA)。 ## 阶段1:鉴权接口汇总 从 pentest-js 和 pentest-api 结果提取:登录/注册/Token刷新/登出/验证码/SSO回调。密码重置接口仅收集不测试。 ## 阶段2:Token 权限分析 获取Token优先级:pentest-js硬编码Token > 运行时存储 > 访客注册 > 默认凭据试登录。 JWT解码 payload 提取:`role`/`userId`/`exp`/`iss`/`tenant`。 判断角色:guest→尝试越权,user→尝试访问管理接口,admin→验证后跳过越权。 ## 阶段3:认证绕过 核心手段:空Token(`Bearer `)、伪造Token(`Bearer admin`)、JWT none算法、自定义认证头(`X-Auth-Token`/`X-User-Id`/`X-User-Role`)、路径修改(去admin前缀/..绕过)、参数覆盖(`?role=admin`)、IP白名单绕过(`X-Forwarded-For: 127.0.0.1`)、HTTP方法变换、Content-Type变换。 ## 阶段4:暴力破解 **先测锁定策略**:连续错误登录10次 → 观察第N次响应差异 → 阈值=N → 后续每轮上限=阈值-1。 用户名枚举:存在vs不存在用户的响应差异、时间侧信道。 弱密码测试:admin/admin/root/test/guest系列,每轮不超过阈值。 ## 阶段5:JWT - none算法:`{"alg":"none"}.payload.`(无签名) - 算法混淆:RS256→HS256(公钥当secret) - 弱密钥:secret/123456/password/jwt_secret - 时效:exp-iat>1天 → 过长;无exp → 永不过期 ## 阶段6:OAuth2 关注点:grant_type共存(password+client_credentials)、scope未细分(用普通client的Token试admin接口)、secret硬编码在JS。 ## 阶段7:验证码/MFA 图形码:重复使用/不绑定Session/响应中返回code。 短信码:4-6位可爆破/有效期过长/响应返回。 MFA:跳过2FA步骤/备用码可枚举。 ## 阶段8:密码重置(最后备选) 必须用户确认后才测试:Token可预测性/响应返回/URL传输(Referer泄露)/验证码爆破/旧Token未失效。