mcpField
A
authentication-testing

authentication-testing

github.com/mn-youssef安全4969 次安装20 周前更新
代码仓库

关于 authentication-testing

这是一个针对身份验证全生命周期的安全测试技能,供授权测试者检查存在登录、会话、令牌或 MFA 的应用。它覆盖注册、重置与联合登录等流程,并要求记录可复现的请求及账户接管影响。

主要功能

  1. 01检查注册与登录流程
  2. 02测试会话令牌与失效机制
  3. 03审查密码重置流程
  4. 04检查 MFA 与联合登录
  5. 05验证 JWT 与速率限制
  6. 06记录流程、请求及接管影响

适用场景

  1. 01测试应用账户注册与登录
  2. 02审查密码重置和 MFA 绕过风险
  3. 03评估 OAuth、SSO 与 JWT 实现
  4. 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”并停止。

⚠️ 授权

使用你自己的账户/应用。不要对真实用户或第三方进行撞库。仅对你自己的测试账户进行暴力破解,并限制尝试频率。

要测试的攻击面(完整生命周期)

  1. 注册 — 用户名/邮箱枚举、弱密码策略、重复注册/规范化处理。
  2. 登录 — 速率限制、账户锁定、错误消息枚举、默认凭据。
  3. 会话 — 令牌熵、会话固定(登录时是否轮换?)、注销/重置时是否失效、Cookie 标志。
  4. 密码重置 — 令牌熵/过期/重用、重置链接的Host 头投毒、用户 ID 替换。
  5. MFA/2FA — 跳过流程绕过、篡改响应、滥用备用码、OTP 暴力破解/速率限制、竞态条件。
  6. OAuth/OIDC/SAML/SSO — redirect_uri 验证、state/CSRF、令牌泄露、SAML 签名。
  7. 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