[ PROMPT_NODE_27602 ]
Broken Authentication Testing
[ SKILL_DOCUMENTATION ]
# 身份验证失效测试
## 目的
识别并利用 Web 应用程序中的身份验证和会话管理漏洞。身份验证失效始终位列 OWASP Top 10,可能导致账户接管、身份盗用以及对敏感系统的未经授权访问。本技能涵盖了针对密码策略、会话处理、多因素身份验证和凭据管理的测试方法。
## 先决条件
### 所需知识
- HTTP 协议和会话机制
- 身份验证类型 (SFA, 2FA, MFA)
- Cookie 和令牌处理
- 常见的身份验证框架
### 所需工具
- Burp Suite Professional 或 Community
- Hydra 或类似的暴力破解工具
- 用于凭据测试的自定义字典
- 浏览器开发者工具
### 所需访问权限
- 目标应用程序 URL
- 测试账户凭据
- 书面测试授权
## 输出和交付物
1. **身份验证评估报告** - 记录所有已识别的漏洞
2. **凭据测试结果** - 暴力破解和字典攻击结果
3. **会话安全分析** - 令牌随机性和超时评估
4. **修复建议** - 安全加固指导
## 核心工作流
### 第 1 步:身份验证机制分析
了解应用程序的身份验证架构:
# 识别身份验证类型
- 基于密码(表单、基本认证、摘要认证)
- 基于令牌(JWT, OAuth, API 密钥)
- 基于证书(双向 TLS)
- 多因素(短信、TOTP、硬件令牌)
# 映射身份验证端点
/login, /signin, /authenticate
/register, /signup
/forgot-password, /reset-password
/logout, /signout
/api/auth/*, /oauth/*
捕获并分析身份验证请求:
http
POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=test&password=test123
### 第 2 步:密码策略测试
评估密码要求和执行情况:
bash
# 测试最小长度 (a, ab, abcdefgh)
# 测试复杂度 (password, password1, Password1!)
# 测试常见弱密码 (123456, password, qwerty, admin)
# 测试用户名作为密码 (admin/admin, test/test)
记录策略差距:最小长度 <8,无复杂度要求,允许使用常见密码,允许用户名作为密码。
### 第 3 步:凭据枚举
测试用户名枚举漏洞:
bash
# 比较有效与无效用户名的响应差异
# 无效: "Invalid username" vs 有效: "Invalid password"
# Ch