Account Takeover decision tree — 9 canonical ATO paths, chaining patterns (IDOR→ATO, XSS→ATO, OAuth→ATO), MFA bypass entry points.
73
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
ATO is an outcome, not a vuln class. Reach it via 9 canonical paths.
POST /api/users/me/email {email: ...} without verifying current password.
Or with verification but verification token leaks.
Server accepts attacker-set session cookie. Victim's actions bind to attacker's session.
See skills/exploit/web/jwt/SKILL.md — alg confusion, weak secret, kid injection.
See skills/exploit/web/oauth/SKILL.md — redirect_uri bypass + open-redirect chain → code to attacker.
PATCH /api/users/<id> w/o auth check → change victim's email/passwordGET /api/users/<id>/sessions → harvest victim's session tokensStored XSS on victim-visible page → exfil cookie / session token to attacker.
| Primary vuln | Chain partner | Outcome |
|---|---|---|
| Open redirect | OAuth redirect_uri allowlist | OAuth code → attacker → ATO |
| XSS (reflected) | session cookie not HttpOnly | Cookie exfil → ATO |
| XSS (stored) | victim views page | Cookie / session-storage exfil → ATO |
| IDOR on email change | reset flow | Change victim's email, reset, login |
| CSRF on password change | predictable URL | Phishing email triggers password change |
| Predictable reset token | weak RNG audit | Generate victim's token offline → reset |
| OAuth state missing | account linking by email | Attacker pre-creates account, links victim's OAuth → ATO |
| JWT alg=none | server accepts | Mint admin JWT → ATO |
| Email change w/o re-auth + ATO of email | full account graph | Standard playbook for multi-tenant SaaS |
Has user MFA enabled?
├── No → Standard password-reset attacks (paths 1-3, 6, 8)
└── Yes →
Bypass MFA available?
├── Yes (path 9) → MFA bypass → standard reset
└── No → Look for paths 5, 7 (OAuth, XSS) that bypass MFA by design
OR path 4 (JWT) that doesn't touch the MFA flow
OR account-linking via OAuth (path 5) which often skips MFAEvery ATO PoC should:
ATO is always Critical (9.8-10.0) when fully achieved. Severity downgrade only when:
skills/_corpus/payloads/Account Takeover/skills/exploit/web/jwt/SKILL.mdskills/exploit/web/oauth/SKILL.mdskills/analyst/idor.mdskills/exploit/web/xss.mdskills/exploit/web/open-redirect/SKILL.mde34afba
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.