用途
该技能用于识别和利用 Web 应用中的身份认证与会话管理漏洞。失效的身份认证长期位列 OWASP Top 10,可导致账户接管、身份盗用以及对敏感系统的未授权访问。技能覆盖密码策略、会话处理、多因素认证和凭据管理的测试方法。
前提条件
所需知识
- HTTP 协议与会话机制
- 认证类型(单因素、双因素、多因素)
- Cookie 与令牌处理
- 常见认证框架
所需工具
- Burp Suite Professional 或 Community
- Hydra 或类似暴力破解工具
- 用于凭据测试的自定义字典
- 浏览器开发者工具
所需访问权限
- 目标应用 URL
- 测试账号凭据
- 书面测试授权
输出与交付物
- 认证评估报告——记录所有发现的漏洞
- 凭据测试结果——暴力破解与字典攻击结果
- 会话安全分析——令牌随机性与超时评估
- 修复建议——安全加固指导
核心工作流
阶段 1:认证机制分析
理解应用的认证架构:
- 识别认证类型:基于密码(表单、Basic、Digest)、基于令牌(JWT、OAuth、API 密钥)、基于证书(双向 TLS)、多因素(短信、TOTP、硬件令牌)
- 映射认证端点:/login、/signin、/authenticate、/register、/signup、/forgot-password、/reset-password、/logout、/signout、/api/auth/、/oauth/
- 捕获并分析认证请求。
阶段 2:密码策略测试
评估密码要求与执行情况:测试最小长度、复杂度、常见弱密码、用户名作为密码,记录策略缺口。
阶段 3:凭据枚举
测试用户名枚举漏洞,比较有效与无效用户名的响应差异、时间差异、响应码和注册消息,检查密码重置和 API 响应是否泄露信息。
阶段 4:暴力破解测试
测试账户锁定与速率限制,可使用 Hydra 进行基于表单的认证测试,或使用 Burp Intruder 加载字典并分析响应长度与状态码。检查账户锁定(尝试次数、时长、通知)、速率限制(每分钟请求上限、基于 IP 还是账户、是否可通过头部绕过)以及验证码机制。
阶段 5:撞库测试
使用已知泄露的凭据(邮箱:密码对)进行测试,与暴力破解不同。可借助 Burp Intruder 的 Pitchfork 攻击模式加载匹配的邮箱与密码列表,并通过降低请求速率、轮换源 IP、随机化 User-Agent 和添加延迟来规避检测。
阶段 6:会话管理测试
分析会话令牌安全性:熵是否足够、长度是否充足(128 位以上)、是否可预测、安全标志(HttpOnly、Secure、SameSite)是否设置。可编写脚本收集多个会话令牌并分析模式、顺序递增与时间戳成分。
阶段 7:会话固定测试
测试认证后会话是否重新生成。若登录后 SESSIONID 保持不变则可判定存在漏洞。攻击场景:攻击者获取会话并将其固定在链接中发给受害者,受害者登录后攻击者即拥有已认证会话。
阶段 8:会话超时测试
验证会话过期策略:测试空闲超时(15、30、60 分钟无操作后会话是否失效)、绝对超时(强制登出时间),以及登出后旧会话 Cookie 是否在服务端失效。
阶段 9:多因素认证测试
评估 MFA 实现安全性:OTP 暴力破解(4 位 OTP 有 10000 种组合,6 位有 1000000 种,测试 OTP 端点的速率限制)、OTP 绕过技巧(直接访问 URL 跳过 MFA 步骤、篡改响应表示 MFA 已通过、提交空 OTP、重用旧的有效 OTP)、API 版本降级攻击(若新版有速率限制,尝试旧版接口)、测试 MFA 注册与恢复流程(能否在设置中跳过 MFA、备份码是否无需验证即可访问、能否仅凭邮件禁用 MFA)。
阶段 10:密码重置测试
分析密码重置安全性:令牌安全性(长度与随机性、过期时间、单次使用、账户绑定)、令牌篡改(在有效令牌下修改用户参数)、Host 头注入(重置邮件可能包含攻击者域名)。
快速参考
常见漏洞类型
| 漏洞 | 风险 | 测试方法 |
|---|---|---|
| 弱密码 | 高 | 策略测试、字典攻击 |
| 无锁定 | 高 | 暴力破解测试 |
| 用户名枚举 | 中 | 差分响应分析 |
| 会话固定 | 高 | 登录前后会话对比 |
| 弱会话令牌 | 高 | 熵分析 |
| 无会话超时 | 中 | 长时间会话测试 |
| 不安全的密码重置 | 高 | 令牌分析、流程绕过 |
| MFA 绕过 | 严重 | 直接访问、响应篡改 |
凭据测试载荷
默认凭据:admin:admin、admin:password、admin:123456、root:root、test:test、user:user。常见密码:123456、password、12345678、qwerty、abc123、password1、admin123。泄露凭据数据库:Have I Been Pwned 数据集、SecLists 密码表、自定义定向列表。
会话 Cookie 标志
| 标志 | 作用 | 缺失时的漏洞 |
|---|---|---|
| HttpOnly | 阻止 JS 访问 | XSS 可窃取会话 |
| Secure | 仅 HTTPS | 可经 HTTP 发送 |
| SameSite | CSRF 防护 | 允许跨站请求 |
| Path | URL 范围 | 暴露面更大 |
| Domain | 域范围 | 子域可访问 |
| Expires | 生命周期 | 持久会话 |
限流绕过头部
X-Forwarded-For、X-Real-IP、X-Originating-IP、X-Client-IP、X-Remote-IP、True-Client-IP(均设为 127.0.0.1)。
约束与限制
法律要求
- 仅在获得明确书面授权后测试
- 避免使用真实泄露凭据进行测试
- 不得访问真实用户账户
- 记录所有测试活动
技术限制
- 验证码可能阻止自动化测试
- 速率限制影响暴力破解时序
- MFA 显著增加攻击难度
- 部分漏洞需要受害者交互
范围考量
- 测试账号行为可能与生产环境不同
- 测试环境中某些功能可能被禁用
- 第三方认证可能不在范围内
- 生产环境测试需格外谨慎
示例
示例 1:账户锁定绕过
识别锁定阈值(如 5 次错误密码后锁定 30 分钟),尝试通过 X-Forwarded-For 头部轮换 IP 绕过,或通过大小写变形(Admin、ADMIN)测试是否被视为不同账户。
示例 2:JWT 令牌攻击
捕获 JWT 令牌并解码分析,尝试“none”算法攻击:将头部改为 {"alg":"none","typ":"JWT"} 并移除签名,提交修改后的令牌。
示例 3:密码重置令牌利用
请求重置并捕获链接,测试令牌属性(重用、过期、修改字符),测试用户参数篡改(用测试用户的令牌重置管理员密码)。
故障排查
| 问题 | 解决方案 |
|---|---|
| 暴力破解太慢 | 识别限流范围;轮换 IP;添加延迟;使用定向字典 |
| 会话分析无结论 | 收集 1000+ 令牌;使用统计工具;检查时间戳;对比账户 |
| 无法绕过 MFA | 记录为安全;测试备份/恢复机制;检查 MFA 疲劳;验证注册 |
| 账户锁定阻碍测试 | 申请多个测试账号;先测试阈值;放慢时序 |