用途
本技能用于评估 REST API 认证机制是否存在绕过漏洞,适合在生产部署前进行安全测试。测试范围涵盖:JWT 令牌实现的常见弱点(none 算法、密钥混淆、缺少过期时间)、所有 API 端点是否强制认证、API 密钥的生成/存储/轮换是否可预测或泄露、会话管理(令牌过期、吊销、刷新令牌安全)等。
注意:未经书面授权不得使用。认证测试涉及尝试绕过安全控制。
主要能力
- 认证机制识别:探测 JWT Bearer、API Key(Header/Query)、Basic Auth、OAuth2、Session Cookie、自定义令牌等。
- 未认证端点发现:批量探测常见路径(如 /users、/admin、/health、/metrics、/actuator、/swagger.json、/graphql、/.env 等),识别返回非 401/403 的开放端点。
- JWT 令牌分析:解码 header 与 payload,检查算法(alg:none、HS256 等)、过期声明(exp)、敏感字段、标准声明缺失、kid 注入风险。
- JWT 操纵攻击:构造 alg:none 令牌、篡改 payload 声明(如 role、is_admin)测试签名校验、暴力破解弱 HMAC 密钥。
- 令牌生命周期测试:登出后令牌是否仍有效、密码修改后旧令牌是否失效、刷新令牌是否轮换、令牌是否可通过 URL 参数传递导致泄露。
- 密码策略与凭据测试:测试注册/改密端点的弱密码接受情况、通过登录响应差异检测账户枚举。
使用方式
前置条件:
- 书面授权,明确目标 API 与认证机制范围
- 至少两个用户角色的有效测试凭据(普通用户、管理员)
- Burp Suite Professional 及 JWT 相关扩展(JSON Web Tokens、JWT Editor)
- Python 3.10+,安装 requests、PyJWT、jwt 库
- 凭据测试字典(SecLists authentication wordlists)
- API 文档或 OpenAPI 规范
工作流分为六步:
- 认证机制识别:探测未认证访问、检查 WWW-Authenticate 头、登录并检查返回的令牌与 Cookie。
- 未认证端点发现:对常见端点列表发起无认证请求,记录非 401/403 响应。
- JWT 令牌分析:解码并检查算法、过期、敏感字段、缺失声明、kid。
- JWT 操纵攻击:测试 alg:none 绕过、篡改声明提权、暴力破解 HMAC 密钥。
- 令牌生命周期测试:登出后重用、密码修改后重用、刷新令牌重用、URL 中传递令牌。
- 密码策略与凭据测试:弱密码接受、账户枚举。
适用场景
- SaaS 平台 API 认证评估:JWT 签发与刷新机制、密钥强度、令牌吊销、密码重置端点信息泄露、未认证的 /health 与 /metrics 端点。
- 生产部署前的认证绕过测试。
- JWT 实现安全审计。
- API 密钥与会话管理安全验证。
限制与注意事项
- 必须获得书面授权,否则不得使用。
- 常见陷阱:只测试登录端点而遗漏密码重置、MFA、令牌刷新流程;未检查 JWT 密钥在各环境(dev/staging/prod)是否相同;忽略令牌生命周期(如 7 天无吊销);未测试令牌在服务器日志、URL 参数或错误消息中的泄露。
- 输出格式示例:以 Finding 形式记录,包含 ID、严重级别、OWASP API 分类、受影响组件、描述、攻击链、修复建议。
关键概念
- Broken Authentication:OWASP API2:2023,认证机制弱点导致攻击者可冒充合法用户。
- JWT:header.payload.signature 结构的自包含令牌,用于无状态 API 认证。
- Token Revocation:服务端在过期前使令牌失效的机制,对登出和改密至关重要。
- Credential Stuffing:使用泄露的用户名/密码对自动化攻击认证端点。
- Account Enumeration:通过不同错误消息或响应时间判断有效用户名。
- Refresh Token Rotation:每次使用刷新令牌生成新令牌,防止重用攻击。
工具与系统
- Burp Suite JWT Editor:解码、编辑、重签 JWT 的扩展。
- jwt_tool:Python JWT 测试工具,支持 12+ 攻击模式。
- hashcat:GPU 加速密码破解,支持 JWT HMAC 密钥暴力破解(模式 16500)。
- Hydra:网络登录暴力破解工具。
- Nuclei:基于模板的扫描器,含认证绕过检测模板。