关于 authentication-testing
这是一个针对身份验证全生命周期的安全测试技能,供授权测试者检查存在登录、会话、令牌或 MFA 的应用。它覆盖注册、重置与联合登录等流程,并要求记录可复现的请求及账户接管影响。
主要功能
- 01检查注册与登录流程
- 02测试会话令牌与失效机制
- 03审查密码重置流程
- 04检查 MFA 与联合登录
- 05验证 JWT 与速率限制
- 06记录流程、请求及接管影响
适用场景
- 01测试应用账户注册与登录
- 02审查密码重置和 MFA 绕过风险
- 03评估 OAuth、SSO 与 JWT 实现
- 04整理可复现的账户接管漏洞
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill authentication-testing安装后在 Claude Code 中输入/authentication-testing确认已加载。
附带文件references/auth-attacks.md
详细介绍
身份验证测试(发现/利用 — OWASP A07)
概述
攻破“你真的是你声称的那个人吗?”账户接管(ATO)是最具破坏性的攻击——一个身份验证漏洞往往就能解锁一切。测试完整的身份生命周期,而不只是登录表单。
核心原则: 身份验证是一个流程,而不是一个页面。漏洞藏在重置、刷新、联合身份验证和状态转换中——而不只是密码检查。
适用场景 / 跳过场景
- 适用场景: 应用具有任何身份验证机制——登录、会话、账户、令牌/JWT、OAuth/SSO、密码重置或 MFA。
- 跳过场景: 应用完全匿名,不需要身份验证 → 不适用。
- 如果不适用: 报告“authentication-testing: N/A — no authentication surface”并停止。
⚠️ 授权
使用你自己的账户/应用。不要对真实用户或第三方进行撞库。仅对你自己的测试账户进行暴力破解,并限制尝试频率。
要测试的攻击面(完整生命周期)
- 注册 — 用户名/邮箱枚举、弱密码策略、重复注册/规范化处理。
- 登录 — 速率限制、账户锁定、错误消息枚举、默认凭据。
- 会话 — 令牌熵、会话固定(登录时是否轮换?)、注销/重置时是否失效、Cookie 标志。
- 密码重置 — 令牌熵/过期/重用、重置链接的Host 头投毒、用户 ID 替换。
- MFA/2FA — 跳过流程绕过、篡改响应、滥用备用码、OTP 暴力破解/速率限制、竞态条件。
- OAuth/OIDC/SAML/SSO —
redirect_uri验证、state/CSRF、令牌泄露、SAML 签名。 - JWT —
alg:none、算法混淆、弱密钥、未验证签名、没有过期/吊销机制。
有关各攻击面的具体操作步骤,请参阅 references/auth-attacks.md。
快速参考 — 高危漏洞
| 漏洞 | 测试 | 影响 |
|---|---|---|
| 用户枚举 | 有效用户与无效用户的响应/响应时间不同 | 定向攻击 |
| 没有速率限制 | 多次登录/OTP 尝试均可成功 | 暴力破解 / ATO |
| 会话固定 | 登录后会话 ID 未变化 | 劫持 |
| 重置链接投毒 | Host/X-Forwarded-Host 可控制重置链接域名 | 通过窃取令牌实现 ATO |
| 重置 ID 替换 | 使用你的令牌/流程重置受害者的密码 | ATO |
| MFA 绕过 | 跳过步骤 / 篡改 "mfa":false / 重用代码 | 绕过 2FA 实现 ATO |
| OAuth 开放重定向 | redirect_uri 指向攻击者域名,导致代码/令牌泄露 | ATO |
| JWT 伪造 | 接受 alg:none / HS-RS 混淆 / 弱密钥 | 完全冒充 |
输出
报告发现时,注明准确的流程和请求、所属生命周期阶段,以及是否可导致 ATO。
通过 vulnerability-chaining 记录攻击链(例如:用户枚举 + 无速率限制 + 弱密码重置 = 完全 ATO)。
后续交接
通过 active-pentest 在运行中的应用上复现;通过 vulnerability-chaining 组合成 ATO 攻击链;通过 security-hardening 修复(bcrypt/argon2、CSPRNG 令牌、会话轮换、严格验证 redirect_uri、验证 JWT 签名、速率限制 + MFA)。
常见错误
- 只测试登录框——密码重置和联合身份验证流程防护更弱,同样可能造成致命后果。
- 解码 JWT 后就假定它已通过验证——要通过篡改来证明签名检查确实生效。
- 认为 MFA 无法攻破——大多数绕过都是流程中的逻辑漏洞,而不是密码学漏洞。
- 忽略响应时间/错误信息的差异,这些差异会在无形中助长用户枚举。
评论
支持 Markdown